2011-10-04 18 views
7

Pencere başlığını bir Word.Application OLE nesnesinden almanın bir yolu var mı? FindWindow'u kullanarak pencereyi denemek için kullanmak istiyorum.Bir Word OLE uygulama nesnesinden uygulama başlığı alma

Öyle gibi bir OLE nesnesi oluşturma ve varolan bir belgeyi ekliyorum: Bu noktada

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

, altyazı değerleri aşağıdaki gibidir:

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

Ancak pencere başlığı aslında File.doc [Compatibility Mode] - Microsoft Word.

Bu pencere başlığını OLE nesnesinden almanın bir yolu var mı (FindWindow'u kullanmadan HWND'nin kendisinin daha iyi bir yolu yok gibi görünüyor)? Pencere başlığının her zaman <doc caption> - <app caption> olacağını varsaymaktan şüpheliyim.

Pencerede bir tanıtıcıyı ön plana getirebilmek için (bkz. OLE Automation to launch MS Word and bring to front) doğru başlıktan geçerek biraz daha güvenli bir şekilde almak için FindWindow işlevini kullanmak istiyorum.

DÜZENLEME İşte

geçici çözümü kullanarak düzeltme 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); 

cevap

3

bölümde açıklanan bu aradığınız şey mi?

How to obtain the window handle for an Office Automation server

+1

bağlantının arkasındaki makale hakkında ne olduğuna dair kısa bir açıklama ekleyin. StackOverflow'un genel kullanılabilirliğini artırır. –

+1

Evet, "Birden çok örneği olabilir bir uygulama için pencere tanıtıcısı bulun" çalışmasında geçici çözüm. Tanımlı yöntemi kullanarak geçici bir uygulama yazısı rasgele hale getirerek tanıtıcıyı alıyorum ve daha sonra pencereyi ön plana getirmek için kullanın. – Andrew

+0

@Marjan - KB makalesinin başlığını ekledim, umarım yardımcı olur. –

İlgili konular