我有這樣的情況。 我有一個應用程序的窗口句柄。我需要激活它。我嘗試了所有這些功能,但並沒有始終工作(大多數情況下,它不是第一次工作,我必須手動點擊它才能激活它。第二次嘗試之後它可以正常工作) 原因我這樣做是因爲我的代碼寫在我需要執行的窗體的Form.Activate事件中。 應用程序是一個單一實例應用程序。當創建一個新實例時,它首先檢查是否存在任何其他進程,如果找到,則將舊進程的句柄傳遞給這些函數,以便用戶可以在舊窗體上工作。 從另一個C應用程序調用應用程序。公共靜態extern int ShowWindow(IntPtr hWnd,int nCmdShow);公共靜態extern int ShowWindow(IntPtr hWnd,int nCmdShow);需要激活一個窗口
[DllImport("user32.dll")]
public static extern int SetForegroundWindow(IntPtr hWnd);
[DllImport("user32")]
public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
+1當然Windows大師雷蒙德陳[說這可能會導致您的應用程序凍結](http://stackoverflow.com/a/8081858/15639) – MarkJ 2012-09-25 12:09:24
你在哪裏採取mainThreadId,這是什麼意思?謝謝! – 2014-07-14 20:55:27