2012-06-20 10 views
6

Ho scritto un'applicazione WPF in C# che vorrei mostrare ogni volta che si apre il menu di avvio e si nasconde di nuovo quando il menu è chiuso. Preferirei farlo senza interrogare lo stato del menu di avvio. Finora ho provato ad ascoltare i messaggi di SHELLHOOK ma non vedo nulla di utile lì.Come posso rilevare quando si apre il menu di avvio di Windows 7

+1

Non sono sicuro che l'applicazione ottenga molto apprezzamento da parte dell'utente! :) –

+2

Sono l'utente, lo apprezzerò! Sono stato costretto a usare Windows e preferirei essere su Gnome-shell. – Hemlock

+0

Se sei l'unico utente, perché è importante se il codice esegue il polling o no? – Dialecticus

risposta

2

Non è possibile scrivere codice completo, ma qui è la logica dietro di esso,

  1. In primo luogo trovare la maniglia per la barra delle applicazioni utilizzando

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

    anche passare Shell_TrayWnd come lpClassName

  2. Attivare il menu Start simulando il pulsante clic.

  3. ottenere l'handle della finestra di Start Menu

  4. Usa GetWindowLong funzione per controllare è aperto o no.

+1

Sì, funzionerà _if I poll_. Preferirei non sondare, quindi aggiornerò la mia domanda. – Hemlock

+0

come utilizzeresti GetWindowLong per verificare se il menu Start è aperto o no? –

Problemi correlati