메인 응용 프로그램의 스레드 핸들을 찾으려고합니다. 주 스레드를 찾으려고하는 프로그램은 다중 스레드이며 항상 주 스레드를 찾는 것이 중요합니다. 나는이 프로그램의 복사본 하나가 기껏해야 실행된다는 것을 안다. 이것은 지금 제가하는 방법입니다 :외부 응용 프로그램 찾기 주 스레드 ID
Process[] someProcesses = Process.GetProcessesByName("some");
IntPtr threadHandle = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)someProcesses[0].Threads[0].Id);
대부분의 경우 스레드 [0]은 주 스레드이지만 다른 경우는 그렇지 않습니다. 내가 찾은 스레드가 다른 응용 프로그램의 주 스레드인지 어떻게 확인할 수 있습니까?
고마워요.
기본 스레드에서 Dispatcher를 얻는 방법에 대한 아이디어가 있습니까? 호출 응용 프로그램이 기본 스레드에서 내 GUI를 표시하고 있는지 확인하기 위해 Invoke를 호출하고 싶습니다. docs (http://msdn.microsoft.com/en-us/library/system.diagnostics.processthread.aspx)에서 보았을 때, 정상적인' 쓰레드는'FromThread'를 통해 전달됩니다. – Dave
여기에 정보가 주어지면 (http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/ed307fa4-5717-44e2-91ec-f219abf29dad) 아마도 그렇게 될지도 모르는 것처럼 추한 것, StartTime에 의해 메인 쓰레드를 찾은 다음 모든 .NET 쓰레드를 반복하고'main'thread.Id'와'GetHashCode'를 통해 같은 값을 갖는'Thread'를 비교하는 것입니다. – Dave