タイトル : SetForegroundWindowについて 投稿日 : 2009/05/07(Thu) 18:42 投稿者 : 5月病
お世話になります。 実行環境 WinXP.sp3 VB6.0 SetForegroundWindow関数を用いてとあるフォームを最前面にしたいのですが、 どうにもうまくいきません。 フォーム_A上からフォーム_Aの最小化後にシェル関数を用いてEXE_Bを起動します。 (EXE_Bの起動中はWaitForSingleObjectを用いてEXE_Bの終了を待ちます。) EXE_Bの終了後、フォーム_A上にてを自フォームを元サイズに戻し、 以下関数を呼び出しています。 Sub SetForegroundWin(hwnd As Long) 'hwndはフォーム_Aのhwndです。 Dim sp_time As Long Dim nForegroundID As Long Dim nTargetID As Long nForegroundID = GetWindowThreadProcessId GetForegroundWindow(), &H0 nTargetID = App.ThreadID AttachThreadInput nTargetID, nForegroundID, True SystemParametersInfo SPI_GETFOREGROUNDLOCKTIMEOUT, 0, sp_time, 0 SystemParametersInfo SPI_SETFOREGROUNDLOCKTIMEOUT, 0, ByVal 0&, 0 SetForegroundWindow hwnd SystemParametersInfo SPI_SETFOREGROUNDLOCKTIMEOUT, 0, sp_time, 0 AttachThreadInput nTargetID, nForegroundID, False End Sub 上記コードの実行結果ですが、 EXE_B起動中にフォーム_A以外のウィンドウにフォーカスをあて、 EXE_Bを終了するとフォーム_Aがフォーカスをあてたウィンドウの裏に出てきます。 ご教授宜しくお願いします。 |