从Word OLE应用程序对象获取应用程序标题

有没有从Word.Application OLE对象获取窗口标题的方法? 我想用它来尝试使用FindWindow获取窗口。

我正在创建一个OLE对象并添加一个现有文档,如下所示:

App := CreateOLEObject('Word.Application');
App.Visible := True;
App.Activate;
Doc := App.Documents.Open('File.doc');

此时,标题值如下所示:

App.Caption => 'Microsoft Word'
Doc.ActiveWindow.Caption => 'File.doc [Compatibility Mode]'

但是,窗口标题实际上是File.doc [Compatibility Mode] - Microsoft Word

是否有某种方法从OLE对象获取此窗口标题(似乎没有使用FindWindow获取HWND本身的更好方法)? 我怀疑假设窗口标题永远是<doc caption> - <app caption>

我希望使用FindWindow函数来获得窗口的句柄,以便能够通过传递正确的标题以稍微安全的方式将它带到前台(参见OLE自动化启动MS Word并带到前面)。

编辑

以下是使用http://support.microsoft.com/kb/258511中介绍的解决方法的修复程序

App := CreateOLEObject('Word.Application');

// get the handle
TempTitle := 'Temp - ' + IntToStr(Random(1000000));
App.Caption := TempTitle;
Handle := FindWindow('OpusApp', PWideChar(TempTitle));
App.Caption := EmptyStr;

App.Visible := True;
App.Activate;
Doc := App.Documents.Open('File.doc');

// bring to front
SetForegroundWindow(Handle);

这是你想要的?

如何获取Office自动化服务器的窗口句柄

链接地址: http://www.djcxy.com/p/9559.html

上一篇: Getting application title from a Word OLE application object

下一篇: ContentNotRenderedError after a django upgrade