我有这样的情况。 我有一个应用程序的窗口句柄。我需要激活它。我尝试了所有这些功能,但并没有始终工作(大多数情况下,它不是第一次工作,我必须手动点击它才能激活它。第二次尝试之后它可以正常工作) 原因我这样做是因为我的代码写在我需要执行的窗体的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