2012-07-08 100 views
0

我想获得一个进程CurrentThreadId。 我可以得到我的应用程序当前线程ID与AppDomain.GetCurrentThreadId(); 例如,我想要获取任务管理器CurrentThreadId。如何在C#中获取进程CurrentThreadId?

var proces = System.Diagnostics.Process.GetProcessesByName("taskmgr"); 
      proces[0].Threads//write code for get currentThreadID? 
+0

是没有意义的,一个进程有多个线程。 – 2012-07-08 17:44:54

+1

请告诉我们更多关于你想要做什么。也许一个解决方案可以很容易找到。为什么你想检索当前的线程ID? – 2012-07-08 17:51:00

回答

0

如果你想要进程ID,你已经在正确的轨道上!

下面是一个例子:

public void GetProcessId() 
    { 
     var processList = System.Diagnostics.Process.GetProcessesByName("taskmgr"); 

     // note that you get a list, there may be multiple processes returned 
     foreach (var process in processList) 
     { 
      // print out the process id 
      System.Console.WriteLine("Process Id=" + process.Id); 
     } 
    } 
+0

感谢朋友。 我想钩一个GetMessage进程。 SetWindowsHookEx((int)HookType.WH_GETMESSAGE,s_Delegate,a,TaskMGRCurrentThreadId);我只能挂钩我的应用程序: SetWindowsHookEx((int)HookType.WH_GETMESSAGE,s_Delegate,a,(int)AppDomain.GetCurrentThreadId()); – 2012-07-08 17:59:21

+0

奇怪。你想挂钩到另一个进程,但不知道currentThreadId的行为如何?你在这里尝试可能会失败。 – 2012-07-08 18:37:19

3

你不能。

进程可以(并且通常)有多个线程。 “当前”线程不断变化 - 每秒可能多次。

询问当前线程仅适用于您自己的进程。

+3

...并且一个进程的多个线程可能在多核系统上是“当前的”。 – 2012-07-08 17:46:54

相关问题