2012-06-20 5 views
6

C#でWPFアプリケーションを作成しましたが、これはスタートメニューを開くたびに表示し、メニューが閉じられると再び表示します。 私はスタートメニューの状態をポーリングせずにこれを行うことを好むでしょう。これまでのところ、私はSHELLHOOKメッセージを聞いてみましたが、そこには何も役立たないと思っています。Windows 7のスタートメニューが開かれたときを検出する方法

+1

私はアプリケーションが多くのユーザー感謝を得るだろうと確信していません! :) –

+2

私はユーザーです、私はそれを感謝します!私はWindowsを使わなければならず、むしろGnome-shellに載っていました。 – Hemlock

+0

あなたが唯一のユーザーなら、コードが投票するかどうかはなぜ重要なのでしょうか? – Dialecticus

答えて

2

私はここにあなたの完全なコードを書くことはできませんがは

  1. まずもlpClassName

  2. として Shell_TrayWndを渡す

    [DllImport("user32.dll", SetLastError = true)] 
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
    

    を使用して、タスクバーのハンドルを見つけ、その背後にあるロジックです

  3. メニューを起動するには、クリックボタンをシミュレートします。

  4. は、それが開いているかをチェックするためにスタートメニュー

  5. 利用GetWindowLong機能のウィンドウハンドルを取得します。

+1

はい、これはpoll_の場合に機能します。私はむしろ投票しないので、私は私の質問を更新するでしょう。 – Hemlock

+0

スタートメニューが開いているかどうかを確認するために、どのようにGetWindowLongを使用しますか? –

関連する問題