2013-08-15 13 views
6

do tej pory udało mi się użyć następującego kodu C#, aby ukryć pasek zadań Windows:Ukryj pasek zadań w Windows 8

[DllImport("user32.dll")] 
private static extern int FindWindow(string className, string windowText); 
[DllImport("user32.dll")] 
private static extern int ShowWindow(int hwnd, int command); 

private const int SW_HIDE = 0; 
private const int SW_SHOW = 1; 

... 

int hwnd = FindWindow("Shell_TrayWnd", ""); 
ShowWindow(hwnd, SW_SHOW); 

Ale podczas korzystania z Windows 8, kod ten ukrywa tylko pasek zadań na monitorze podstawowym , nie na drugim, gdzie pasek zadań jest również widoczny.

Jak mogę ukryć pasek zadań tylko na ekranie, na którym wyświetlane są moje okna?

Odpowiedz

4

Skorzystaj z FindWindowEx. To pozwala ci przejść przez okno do wyszukiwania również w kolejności Z.

Ergo:

DllImport("user32.dll")] 
private static extern int FindWindowEx(int parent, int afterWindow, string className, string windowText); 

// Start with the first child, then continue with windows of the same class after it 
int hWnd = 0; 
while (hWnd = FindWindowEx(0, hWnd, "Shell_TrayWnd", "")) 
    ShowWindow(hWnd, SW_SHOW); 

Jeśli chcesz, aby ukryć pasek zadań na konkretnym ekranie tylko użyć GetWindowRect i sprawdzić granice tego, co ekran okno jest włączone, a tylko zadzwonić ShowWindow w oknie, które jest na bieżącym ekranie.

+0

"Po drugie, co jeśli program ulegnie awarii, zanim pojawi się szansa na otwarcie paska zadań? Pasek zadań jest teraz trwale ukryty, a użytkownik musi się wylogować i wrócić do odzyskać swój pasek zadań. To niezbyt miłe. " –

8

Nie ukrywaj paska zadań; to zły sposób na zrobienie czegoś takiego. Zamiast tego po prostu stwórz pełnoekranowe okno, a pasek zadań jest wystarczająco inteligentny, aby zejść z drogi.

Możesz przeczytać dobre wyjaśnienie & komentarz przez Raymond Chen Microsoftu na jego blog.

+2

Całkowicie zgadzam się z twoją opinią, ale muszę dostać okno przed inną pełną aplikacją. Za każdym razem, gdy mój formularz staje się aktywny, pasek zadań pojawia się ponownie. – lenniep

+0

Jeśli pasek zadań pojawi się po ustawieniu ostrości, może to oznaczać, że nie ustawiłeś poprawnie okna na pełnym ekranie. Czy możesz pokazać nam, jak tworzysz swoje okno? –

0

Mam ten sam problem.

1) Uruchamianie aplikacji na wielu monitorach

2) na pierwszym monitorze nie ma problemu, aplikacja na wierzchu

3), ale jeśli druga Okno powoduje wyświetlenie na pasku zadań i vice versa

Z FindWindowEx znaleziono tylko jeden Shell_TrayWnd. jest to jeden z pierwszego ekranu, który można ukryć

Powiązane problemy