• ベストアンサー

デスクトップにフォーカスを移動

デスクトップにフォーカスを移動するにはどうすればよいでしょうか? (あるいは他のプロセスにフォーカスを移動) HWND dHwnd = GetDesktopWindow(); HWND ret = SetFocus( dHwnd ); とすると失敗するようです。 GetLastError()で183が返ってきます。 (ファイルを作成できない??)

質問者が選んだベストアンサー

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

お望みのことは多分SetForegroundWindow(hWnd)で可能でしょう。 「フォーカス」とはキーボード入力を受け取る(主として)コントロールを指定するもので、各ウィンドウごとに存在します。特定のウィンドウ内で、フォーカスを持つウィンドウを無くしたい場合はSetFocus(NULL)を実行します。他プロセスのウィンドウ内のフォーカスを直接変更することはできません。(セキュリティ上の制限です。) 他のウィンドウを「アクティブ」にしたい場合、それが自プロセスで作成したウィンドウであればSetActiveWindow(hWnd)を使用します。他プロセスのウィンドウを直接アクティブにすることはできません。(セキュリティ上の制限です。) 他のウィンドウを「フォアグラウンド」にしたい場合、SetForegroundWindow(hWnd)を使用します。他プロセスのウィンドウも指定できます。ただし、SetForegroundWindow(hWnd)を使用できるプロセスには制限があり、またSetForegroundWindow(hWnd)を使用しても必ずしもhWndがフォアグラウンドになるとは限りません。(いずれもセキュリティ上の制限です。)

furyfox
質問者

お礼

ご回答ありがとうございます。 ウインドウをアクティブから非アクティブに変更したかったのですが 教えて頂いたSetActiveWindow( NULL )で非アクティブにすることができました。

関連するQ&A