2012-07-08 27 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

相關問題