• ベストアンサー

C言語APIウィンドウズアプリにおいて

他アプリのウィンドウにフォーカスがあるとき自アプリが作ったウィンドウにフォーカスを遷すために SetFocus(hW), SetActiveWindow(hW), SetForegroundWindow(hW) を使ったのですがどうもうまくいきません 他アプリのウィンドウにフォーカスがあるとき自アプリが作ったウィンドウにフォーカスを遷す方法か関数を教えてください

  • nubou
  • お礼率62% (293/470)

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

SDKのドキュメント(SetForegroundWindow)を読むと、 「次の条件がが満たされていなければ、プロセスがフォアグラウンドウィンドウを設定することはできません。 ・そのプロセスがフォアグラウンドプロセスである。 ・そのプロセスはフォアグラウンドプロセスにより開始された。 以下省略 」 とあるので、できないのでは?

nubou
質問者

お礼

ありがとうございました どうしようもないのでしたか

関連するQ&A

  • CのAPIの Windowsアプリにおいて

    アプリがMessageBox等ポップアップWindowを表示しているかどうかを他のアプリが知るにはどんな関数があるのでしょうか?

  • アプリがフォーカスを

    自分のWindowから他のアプリのWindowに 移す事は可能でしょうか? 仕様上不可能なのでしょうか? 可能だとすれば 自アプリのWindowをhWmineとし 他アプリのWindowをhWotherとしたとき どのようにすればいいのでしょうか? ちなみに DWORD dw_other=GetWindowThreadProcessId(hWother,NULL); DWORD dw_mine=GetWindowThreadProcessId(hWmine,NULL); AttachThreadInput(dw_mine,dw_other,TRUE); ShowWindow(hWother,SW_SHOWMAXIMIZED); SetForegroundWindow(hWother); AttachThreadInput(dw_other,dw_mine,FALSE); とするとすぐに一瞬他Windowにフォーカスが移りすぐに自Windowにフォーカスが戻ってきます 最後の AttachThreadInput(dw_other,dw_mine,FALSE); をはずしても同じでした

  • WIN32APIについて質問です。

    WIN32APIについて質問です。 C++を用いてデスクトップにフォーカスを与えるプログラムを 作成する為に、デスクトップのウィンドウハンドルを得る GetDesktopWindow関数を使用しています。 しかし結果はフォーカスが設定できず、エラーとなります(下記ソースをご参照下さい)。 ググってみるとこの関数は実際にはデスクトップのウィンドウハンドルを返している 訳ではなく、他のハンドルを返しているようです。 他の方法も試してみましたが、一向にデスクトップを操作することができません。 何か良い方法をご存知ないでしょうか? よろしくお願いします。 ~テストに使用したソース~ #include <windows.h> int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd ) { if( SetFocus( GetDesktopWindow() ) == NULL ) MessageBox( NULL, "フォーカスが設定できない", "エラー", MB_ICONSTOP ); return 0; }

  • 次のWindowsアプリで

    メッセージボックスは他のアプリのWindowの下に隠れることはないのですが他のアプリのウィンドウをクリックするとメッセージボックスの焦点がぼけアクティブでなくなります メッセージボックスを常にアクティブにする方法を終えてください #include <windows.h> using namespace std; WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int) { HWND hW; hW=CreateWindow("STATIC","",WS_OVERLAPPED, 0,0,9,9,NULL,NULL,hI,NULL); SetWindowPos(hW,HWND_TOPMOST,0,0,9,9,NULL); MessageBox(hW,"OK?","",MB_OK); return 0; }

  • windowsプログラミンで質問です

    EDITコントロールを一度クリックすると、そこにフォーカスが当たり  | ←こんな感じの棒が点滅します。 そのコントロールにフォーカスが当たったことを知らせてくれるメッセージは無いですか? 別の WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU を持つ親ウィンドウをクリックしても ずっとこのEDITコントロールにフォーカスが当たりっぱなしなので質問しました。 もしそんなメッセージが無いならば、ESCボタンが押されたらSetFocus関数で強制的にフォーカスを外そうかなとも考えたのですがEDITコントロールにフォーカスがあたっていると WM_CHARではメッセージを受け取ることが出来ませんでした。 どうすればよいのでしょうか?

  • エデットコントロールなどにフォーカスを移す

    エデットコントロールなどにフォーカスを移す 場合どの様なAPI関数を使えばいいのでしょうか? SetFocus()でハンドルを指定したのですが うまくいきません 宜しくお願いいたします。

  • C#でAPI利用

    C#でAPI、具体的にはVideo for windowsを使いたいのですが、 やり方がわかりません。APIを読み込む方法からわかりません。 読み込めてしまえば、あとは関数を呼び出せばよいとおもうのですが、、、、 初歩的な質問かもしれませんがよろしくおねがいします。

  • Windows C APIまたはメッセージの中で

    実行中アプリとWindowsシステムに対して Windowsの強制終了を依頼する関数またはメッセージを教えてください。

  • 別プロセスのコントロールにフォーカスをあてたい

    VC++5.0 または VC++6.0 の環境で、MFC を使ってダイアログベースの EXEを造っています。 (OS は NT4.0 または 2000 です) 以下のことをしたいと思っています。 ・プロセスA、Bがあります。 ・プロセスAがプロセスBをフォアグランドにします。 →SetForegroundWindow() します。 ・プロセスAがプロセスBのボタンやエディットボックスなどのコントロールに フォーカスをあてる。 で、この最後のフォーカスをあてる処理は実現可能でしょうか? 自分のプロセス内のコントロールに対しては、SetFocus() で フォーカスをあてられたのですが、別プロセスではフォーカスを あてることができませんでした。 識者の方、ご教授願います。

  • SSTabのフォーカスの移動について!

    Windows2000、VB6.0、SP5で開発しています。 質問は、SSTabのフォーカス移動についてです。 SSTab上のコントロール上にフォーカスがある時、 Tabでフォーカスの移動をしてると、急にフォーカスが見えなくなってしまうことがあります。 調べてみると、隠れているコントロールに移動してしまってるみたいなんですが、 これは、解決策はないんでしょうか? 最後のコントロールでSetFocusを使うとかあったのですが、その場合、 最後のコントロールにフォーカスがある時に、どのコントロールをクリックしても、 最後のコントロールのSetFocusで設定したコントロールにフォーカスが移動してしまいます。 良い方法をご存知の方、いらっしゃいましたら、 どうぞ、ご教授よろしくおねがいしますm(_ _)m

専門家に質問してみよう