我有这样的情况。我有一个应用程序的窗口句柄。我需要激活它。我尝试了所有这些功能,但并不总是有效。(大多数情况下,它第一次不起作用,我必须手动单击它才能激活它。第二次尝试它工作正常)我的原因这样做是因为我在需要执行的表单的 Form.Activate 事件中编写了代码。应用程序是单实例应用程序。创建新实例时,它首先检查是否存在任何其他进程,如果找到,则将旧进程的句柄传递给这些函数,以便用户可以在旧窗体上工作。应用程序是从不同的 C 应用程序调用的。[DllImport("user32.dll")] public static 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);