如何查询嵌入的OLE应用程序的显示名称

时间:2015-07-30 15:04:11

标签: excel delphi ms-word ole

我想查询OLE应用程序的显示名称,该应用程序嵌入在我的Delphi XE4 Win32应用程序中。

使用

TOleContainer类,容器可以包含不同的OLE应用程序(例如 MS Word MS Excel ,...),具体取决于哪个文件在...内编辑。

我想要返回的是 Microsoft Word 2007 (或2010或2013或......)或至少 Microsoft Word ,因为它显示在标题中正常Word实例的栏。

修改 托德雷杰的回答非常有帮助。谢谢。

不幸的是,正如我在他的回答中的评论所描述的那样,它没有显示真正的应用程序标题。我找到了question on SO。它说,我可以使用_Application.Caption属性访问主机应用程序的标题。我没有_ApplicationIOleObject的实例。 Typecast(MyOleObjectInterface as _Application)失败了。

如何以_Application访问OleObject?

1 个答案:

答案 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));
相关问题