如何查询embedded的OLE应用程序的显示名称
我想查询embedded在我的Delphi XE4 Win32应用程序中的OLE应用程序的显示名称。
TOleContainer
类,并且容器可以包含不同的OLE应用程序(例如MS Word , MS Excel ,…),取决于在其中编辑的文件。
我想要返回的是Microsoft Word 2007 (或2010或2013或…)或至lessMicrosoft Word ,因为它显示在正常Word实例的标题栏中。
编辑: TOndrej的答案是非常有帮助的。 谢谢。
不幸的是,正如我在他的回答下的评论所描述的那样,它没有显示真正的应用标题。 我在SO上发现了这个问题 。 据说,我可以使用_Application.Caption
属性访问主机应用程序的标题。 我没有_Application
的实例,但IOleObject
。 Typecast( MyOleObjectInterface as _Application
)失败。
OleObject如何作为_Application被访问?
请参阅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));
- 从Delphi中closuresExcel
- 运行带有嵌套var访问的Delphi程序后,Excel.exe仍然会被加载
- ODBC Excel驱动程序:来自外部数据库驱动程序的意外错误
- Excel Application.Windows.Count返回0
- Delphi 6 – 从delphi应用程序创buildExcel图表 – 在同一页面上的数据和图表
- Delphi控制Excel – 创build数据透视表和图表
- Delphi 6 – 从delphi应用程序创buildExcel图表 – 数据和图表在同一页面上
- VBA-Excel AddPicture()beahiour根据Excel Visible而不同
- 执行长时间运行的导出任务时如何获得响应式UI(表单)?