我正在用 Visual C++ 编写一个没有 MVC 的小型 Windows 应用程序。它真的很小,它只包含一个文本字段、一个确定按钮和一个取消按钮。
当用户开始打印时,应用程序由后台进程启动。打开应用程序时没有获得焦点,甚至不可见。
对于用户来说,应用程序直接处于焦点是很重要的,因此他们可以通过尽可能多的点击来使用它。
我尝试了很多方法来使应用程序成为焦点:
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
SetForegroundWindow(hWnd);
ShowWindow(hWnd, SW_RESTORE);
SetFocus(hWnd);
我什至在计时器中重复了这个调用。这一切都行不通。现在我在 MSDN 上找到了一些注释:
系统限制哪些进程可以设置前台窗口。只有当下列条件之一为真时,进程才能设置前台窗口:
The process is the foreground process. The process was started by the foreground process. The process received the last input event. There is no foreground process. The foreground process is being debugged. The foreground is not locked (see LockSetForegroundWindow). The foreground lock time-out has expired (see SPI_GETFOREGROUNDLOCKTIMEOUT in SystemParametersInfo). No menus are active.
有人知道解决方法吗?