如何在C++中利用OLE Automation访问Word中ActiveX控件的名称
通过OLE Automation访问所有ActiveX控件并收集它们的名称在C#中是一项简单的任务。它只需要添加Word和Microsoft Forms的COM引用,您可以迭代Shapes
或InlineShapes
。OLEFormat.Object
使您可以访问ActiveX控件,成员name
包含其在Word中的名称。
using Word = Microsoft.Office.Interop.Word;
using Forms = Microsoft.Vbe.Interop.Forms;
static void Main(string[] args)
{
Word.Document doc = wordApp.Documents.Open("sample.docm");
foreach (Word.Shape shape in doc.Shapes)
{
String name = shape.OLEFormat.Object.name;
Console.WriteLine(name);
}
}
问题是如何在c中做到这一点。可以使用Word的类型库并获取Shapes
,访问它们的OLEFormat
,最后访问Object
。这个Object
似乎根本没有在Word或Forms类型库中表示。它似乎是所有ActiveX控件的抽象类。问题是,如何从它访问“名称”。此外,像ComboBox
这样的ActiveX控件不包含name
属性。
所以问题是如何用C解决这个问题。
1条答案
按热度按时间kqlmhetl1#
Object
没有在Word或Forms的类型库中表示,但是IDispatch::Invoke
可以用于查询name
。