2011-10-04 7 views
7

Word.Application OLE 개체에서 창 제목을 가져 오는 방법이 있습니까? FindWindow을 사용하여 창을 사용해보십시오.Word OLE 응용 프로그램 개체에서 응용 프로그램 제목 얻기

내가 지금처럼, 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 Automation to launch MS Word and bring to front 참조)으로 가져올 수있는 창 핸들을 얻고 싶습니다.

편집 여기

해결 방법을 사용하여 수정 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); 

답변

3

에 설명 된 것이 당신이 찾고있는 무엇인가?

How to obtain the window handle for an Office Automation server

+1

링크의 기사가 무엇인지에 대한 간단한 설명을 추가하십시오. 그것은 StackOverflow의 일반적인 유용성을 증가시킵니다. –

+1

예, "여러 인스턴스를 가질 수있는 응용 프로그램의 창 핸들 찾기"의 해결 방법이 작동했습니다. 설명 된 메서드를 사용하여 임시 응용 프로그램 캡션을 무작위로 처리 한 다음 핸들을 사용하여 나중에이 창을 포 그라운드로 가져옵니다. – Andrew

+0

@ Marjan - KB 기사의 제목을 추가했습니다. 도움이 되었으면합니다. –

관련 문제