2008-08-20 13 views
7

私が現在取り組んでいるアプリケーションでは、外部アプリケーションのウィンドウをフォアグラウンドにする必要があります。 BringWindowToTopやSetForegroundウィンドウなどのWin32 API呼び出しを常に動作させることはできません。これは、Windows XP内のいくつかの制限が原因です。私が代わりにしたいのは、マウスをシミュレートして送信することです。タスクバーのウィンドウのボタンをクリックすると、ウィンドウが前面に表示されます。誰でもこれがどのように可能か知っていますか?C#を使用してタスクバーのボタンにマウスのクリックを送信する

答えて

5

http://www.codeproject.com/KB/dialog/dlgboxtricks.aspxで「2K/XPに焦点を当てる方法」のセクションをチェックしてください。これはまさに必要なものです。私はタスクバーが隠れているか、単にそこにいないので、タスクバーのルートに行かないだろう。

2

可能です。しかし、それは非常にスケッチです。あなたのアプリケーションは、文書化されていないので、次のバージョンのWindowsで壊れることもあります。あなたがする必要があるのは、タスクバーのウィンドウハンドルを見つけて、そのボタンを表す子ウィンドウのウィンドウハンドルを見つけて、WM_MOUSEDOWN(私は思う)メッセージを送信することです。ここで

は、タスクバーのウィンドウハンドルを見つけることに少しです:

http://www.codeproject.com/

FWIWウィンドウ盗みが集中したときに、それが刺激ですので、BringWindowToTop/SetForegroundには制限があります。あなたが企業環境で働いているかどうかは関係ありません。ただ心に留めておいてください。 :)

1

私はXP/Vistaの/ 2003/2000の前面にウィンドウをもたらす問題があったことがありません正直に言うと。 IsIconic(最小化)

  • ている場合はtrueで第1位の結果は、その後、SetForegroundWindow
  • 呼び出すその後SW_RESTORE
  • を渡す のShowWindowを呼び出す場合

    1. チェック:あなたは次の操作を行うことを確認する必要があり

      私はこれらのステップでそれをやっていると思うことはありませんでした。

  • 関連する問題