MVC を使用せずに Visual C++ で小さな Windows アプリケーションを作成しています。非常に小さく、1 つのテキスト フィールド、OK ボタン、およびキャンセル ボタンが含まれているだけです。
ユーザーが印刷を開始すると、アプリケーションはバックグラウンド プロセスによって開始されます。アプリケーションを開いてもフォーカスが得られず、表示されません。
ユーザーにとっては、アプリケーションが直接フォーカスされていることが重要です。そのため、アプリケーションを使用するためのリース クリックをできるだけ多く持つことができます。
アプリケーションに焦点を当てるために、多くのことを試しました。
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.
誰でもこれの回避策を知っていますか?