.NET - 寻找外部应用程序的主线程ID
-
22-08-2019 - |
题
我试图找到的主的外部应用程序的线程的句柄。该方案我想找到的是多线程的主线程,我总能找到主线程是很重要的。我知道,顶多会有这个程序运行的一个副本。这就是我如何在目前这样做:
Process[] someProcesses = Process.GetProcessesByName("some");
IntPtr threadHandle = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)someProcesses[0].Threads[0].Id);
在大多数情况下,线程[0]是主线程但有时它不是。我怎样才能确保我发现线程是其他应用程序的主线程?
三江源。
解决方案
这是胡乱猜测,而是通过Processes
,你可以通过ProcessThreadCollection
属性Threads
。每个线程有(可作为StartTime
以及)一个Ticks
,所以假设主线程是第一启动,可以挑选具有最低的开始时间。
否则,如果你能得到的调用堆栈每个线程,你可以寻找应用程序的入口点。我无法找到一个托管的电话,但我敢肯定,你可以通过它的P / Invoke。
其他提示
谈来参加聚会迟到 - 但如果有人认为这在谷歌搜索什么的,我做什么,以ID时,我的应用程序启动时我的主线程设置Thread.CurrentThread.Name
的值(如“主”)。
不隶属于 StackOverflow