我试图找到的的外部应用程序的线程的句柄。该方案我想找到的是多线程的主线程,我总能找到主线程是很重要的。我知道,顶多会有这个程序运行的一个副本。这就是我如何在目前这样做:

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的值(如“主”)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top