Ren*_*ann 2 delphi excel ole ms-word
我想查询OLE应用程序的显示名称,它嵌入在我的Delphi XE4 Win32应用程序中.
TOleContainer使用类,容器可以包含不同的OLE应用程序(例如MS Word,MS Excel,...),具体取决于在其中编辑的文件.
我想要返回的是Microsoft Word 2007(或2010或2013或...)或至少Microsoft Word,因为它显示在普通Word实例的标题栏中.
编辑: TOndrej的回答非常有帮助.谢谢.
不幸的是,正如我在他的回答中的评论中所描述的那样,它没有显示真正的应用程序标题.我在SO上发现了这个问题.据说,我可以通过_Application.Caption属性访问主机应用程序的标题.我没有实例_Application,但IOleObject.Typecast(MyOleObjectInterface as _Application)失败了.
如何访问OleObject _Application?
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));