我想查询OLE应用程序的显示名称,该应用程序嵌入在我的Delphi XE4 Win32应用程序中。
使用 TOleContainer
类,容器可以包含不同的OLE应用程序(例如 MS Word , MS Excel ,...),具体取决于哪个文件在...内编辑。
我想要返回的是 Microsoft Word 2007 (或2010或2013或......)或至少 Microsoft Word ,因为它显示在标题中正常Word实例的栏。
修改 托德雷杰的回答非常有帮助。谢谢。
不幸的是,正如我在他的回答中的评论所描述的那样,它没有显示真正的应用程序标题。我找到了question on SO。它说,我可以使用_Application.Caption
属性访问主机应用程序的标题。我没有_Application
但IOleObject
的实例。 Typecast(MyOleObjectInterface as _Application
)失败了。
如何以_Application
访问OleObject?
答案 0 :(得分:6)
请参阅IOleObject.GetUserType
方法:
function GetOleObjectAppName(const OleObject: IOleObject): string;
var
AppName: PWideChar;
begin
OleCheck(OleObject.GetUserType(USERCLASSTYPE_APPNAME, AppName));
try
Result := AppName;
finally
CoTaskMemFree(AppName);
end;
end;
用法示例:
ShowMessage(GetOleObjectAppName(OleContainer1.OleObjectInterface));