Sichtbare Fenster verstecken
-
ich möchte mit meinem Programm, alles sichtbaren fenster (die die in der Taskleiste oder wenn ALT+TABULATOR gedrückt wird vorhanden sind) verstecken.
Ich möchte sie aber nicht nur verstecken, sondern später auch wieder erscheinen lassen.
Dazu habe ich mir gedacht speichere ich die Handles in ein HWND-Array...
leider enden all meine bisherigen versuche in einem Run-Time-Error...
wäre froh um hilfe und bedanke mich schon mal im voraus.class HIDE { private: HWND* hwnd; int e; public: void HideWindows(); void UnhideWindows(); ~HIDE(); };void HIDE::HideWindows() { this->e = 0; HWND test = GetForegroundWindow(); char buffer[255]; while (test != NULL) { GetWindowText(test, buffer, sizeof(buffer)); if (buffer[0] != '\0' && IsWindowVisible(test) > 0) this->e++; test = GetWindow(test, GW_HWNDNEXT); } this->hwnd = new HWND[this->e]; test = GetForegroundWindow(); int j = 0; while (test != NULL) { GetWindowText(test, buffer, sizeof(buffer)); if (buffer[0] != '\0' && IsWindowVisible(test) > 0) { this->hwnd[j] = test; j++; } test = GetWindow(test, GW_HWNDNEXT); } } void HIDE::UnhideWindows() { for (int i = 0; i <= e; i++) { ShowWindow(hwnd[i], SW_SHOW); } delete[] hwnd; }
-
Warum verwendest Du nicht die entsprechende Shell Funktion ToggleDesktop:
http://msdn.microsoft.com/en-us/library/bb774124(VS.85).aspx
-
weil ich noch nie was von der gehört habe und sicherlich nicht (einfach so) mit ihr umgehen kann.. ist ja leider kein c++ bsp vorhanden...
p.s. es gibt keinen Error, aber es passiert einfach nichts...
-
sorry, mein fehler, es klappt... man bin ich blöd...
vor lautem experimentieren, code umschreiben usw. hab ich vergessen ShowWindow(hwnd[j], SW_HIDE) einzufügen...
-
SW_HIDE ist der falsche Weg.
Korrekt ist WM_SYSCOMMAND mit SC_MINIMIZE zu senden!
-
ich möchte die Fenster nicht minimieren, sondern verstecken...