이것은 중복 가능성이 있습니다. 정확한 것을 찾을 수 없었습니다. 오래 전에 그렇게 오래 걸리는 것을 기억합니다.실행중인 개체 테이블에 프로그래밍 방식으로 Word 인스턴스를 등록하는 방법은 무엇입니까?
이 도구는 컴퓨터에서 MS Word 파일이 열려 있는지 여부를 감지하는 기능이 필요합니다. 그래서 우리는이 같은 프로세스 감시자를 사용 즉 어떤
string query = "SELECT TargetInstance FROM __Instance" + Event + "Event WITHIN 0.5 " +
"WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name = '" + processName + "'";
string scope = @"\\.\root\CIMV2";
//Create a watcher and listen for events
watcher = new ManagementEventWatcher(scope, query);
watcher.EventArrived += eventHandler;
watcher.Start();
지금, 여기에 까다로운 부분이다 : 나는 현재 열려있는 WINWORD 과정의 말씀 자동화 인스턴스를 얻을 필요가있다. 그래서 Marshal.GetActiveObject
을 사용하여 실행중인 인스턴스를 가져옵니다. 그러나 열려있는 Word 응용 프로그램은 word app가 포커스를 잃는 경우에만 실행중인 개체 테이블에 등록됩니다 (msdn에 의해 문서화 됨). 프로세스가있는 경우 ROT에 수동으로 워드 응용 프로그램을 등록하려면 어떻게합니까?
//process started
private void ProcessStarted(object sender, EventArrivedEventArgs e)
{
// Marshal.GetActiveObject fails since there is no object yet.
// Process.GetProcessesByName("WINWORD") got it.
// now how to register this word process to ROT?
// so that I have a global instance of word application?
}
참고 아래의 일부 의사 코드 : 좀 무거운 API와 프로그래밍 멀리 열 단어 창에서 초점을 강제하고 그것을 돌려 보내야하지만, 그게 전부 완전한 혼란 호출 할 수 있습니다.
일반적인 등록 방법은 무엇입니까?
이렇게 해결책이 없습니까? 대신 다른 대안을 게시 할 수 있습니까? –
@AniketBhansali 죄송합니다. 지금은 기억이 안납니다. ( – nawfal