2012-06-20 5 views
6

Napisałem aplikację WPF w języku C#, którą chciałbym pokazać za każdym razem, gdy menu startowe jest otwierane i ukryć ponownie, gdy menu jest zamknięte. Wolałbym to zrobić bez odpytywania stanu menu startowego. Do tej pory próbowałem słuchać wiadomości SHELLHOOK, ale nie widzę w tym nic użytecznego.Jak mogę wykryć, kiedy otwiera się menu startowe systemu Windows 7?

+1

Nie jestem pewien, czy aplikacja zyska uznanie użytkowników! :) –

+2

Jestem użytkownikiem, doceniam to! Byłem zmuszony korzystać z systemu Windows i wolałbym być w Gnome-shell. – Hemlock

+0

Jeśli jesteś jedynym użytkownikiem, dlaczego miałoby to znaczenie, gdyby kod sondował lub nie? – Dialecticus

Odpowiedz

2

nie mogę napisać pełny kod, ale tu jest logika za nim,

  1. Najpierw znajdź uchwyt do paska zadań za pomocą

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

    także przekazać Shell_TrayWnd jak lpClassName

  2. Aktywuj menu Start poprzez symulację przycisku kliknięcia.

  3. Pobierz uchwyt okna Menu Start

  4. Zastosowanie GetWindowLong funkcji do sprawdzenia jest otwarty czy nie.

+1

Tak, to zadziała - if I poll_. Wolę nie sondować, więc zaktualizuję moje pytanie. – Hemlock

+0

jak korzystać z GetWindowLong w celu sprawdzenia, czy menu Start jest otwarte czy nie? –

Powiązane problemy