¿Hay alguna forma de obtener el título de la ventana de un objeto OLE de Word.Application? Me gustaría usarlo para intentar obtener la ventana usando FindWindow
.Obtener el título de la aplicación desde un objeto de aplicación OLE de Word
Estoy creando un objeto OLE y la adición de un documento existente, así:
App := CreateOLEObject('Word.Application');
App.Visible := True;
App.Activate;
Doc := App.Documents.Open('File.doc');
En este punto, los valores de los títulos son los siguientes:
App.Caption => 'Microsoft Word'
Doc.ActiveWindow.Caption => 'File.doc [Compatibility Mode]'
Sin embargo, el título de la ventana es en realidad File.doc [Compatibility Mode] - Microsoft Word
.
¿Hay alguna forma de obtener este título de ventana del objeto OLE (no parece haber una mejor manera de obtener el HWND sin usar FindWindow
)? Dudo que sea seguro suponer que el título de la ventana siempre será <doc caption> - <app caption>
.
Me gustaría utilizar la función FindWindow
para obtener un control de la ventana para poder ponerla en primer plano (ver OLE Automation to launch MS Word and bring to front) de una manera ligeramente más segura al pasar el título correcto.
EDITAR
aquí está el arreglo mediante la solución descrita en 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);
Por favor, añadir una breve descripción de lo que el artículo detrás de la relación está a punto. Aumenta la usabilidad general de StackOverflow. –
Sí, funciona la solución en "Encontrar el control de ventana para una aplicación que puede tener varias instancias". Obtengo el asa al azar una leyenda de aplicación temporal utilizando el método descrito y luego la uso para llevar la ventana al primer plano más adelante. – Andrew
@Marjan - He añadido el título del artículo de KB, espero que ayude. –