アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

お望みのことは多分SetForegroundWindow(hWnd)で可能でしょう。



「フォーカス」とはキーボード入力を受け取る(主として)コントロールを指定するもので、各ウィンドウごとに存在します。特定のウィンドウ内で、フォーカスを持つウィンドウを無くしたい場合はSetFocus(NULL)を実行します。他プロセスのウィンドウ内のフォーカスを直接変更することはできません。(セキュリティ上の制限です。)

他のウィンドウを「アクティブ」にしたい場合、それが自プロセスで作成したウィンドウであればSetActiveWindow(hWnd)を使用します。他プロセスのウィンドウを直接アクティブにすることはできません。(セキュリティ上の制限です。)

他のウィンドウを「フォアグラウンド」にしたい場合、SetForegroundWindow(hWnd)を使用します。他プロセスのウィンドウも指定できます。ただし、SetForegroundWindow(hWnd)を使用できるプロセスには制限があり、またSetForegroundWindow(hWnd)を使用しても必ずしもhWndがフォアグラウンドになるとは限りません。(いずれもセキュリティ上の制限です。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/27 16:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!