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);
링크의 기사가 무엇인지에 대한 간단한 설명을 추가하십시오. 그것은 StackOverflow의 일반적인 유용성을 증가시킵니다. –
예, "여러 인스턴스를 가질 수있는 응용 프로그램의 창 핸들 찾기"의 해결 방법이 작동했습니다. 설명 된 메서드를 사용하여 임시 응용 프로그램 캡션을 무작위로 처리 한 다음 핸들을 사용하여 나중에이 창을 포 그라운드로 가져옵니다. – Andrew
@ Marjan - KB 기사의 제목을 추가했습니다. 도움이 되었으면합니다. –