Desktop und Taskbar ausblenden
-
Guten Morgen,
ich möchte gerne das Verhalten von Strg-Alt-Entf in meinem C++ Programm nachbauen.
Also die Taskleiste, alle Fenster und sämtliche Desktop Icons ausblenden uns anschließend wieder einblenden.Wie man die Taskleiste weg bekommt habe ich herausgefunden.
HWND hTray = ::FindWindowA( "Shell_TrayWnd", NULL ); ::ShowWindow( hTray, SW_HIDE ); ::Sleep( 2000 ); ::ShowWindow( hTray, SW_SHOW );Für den Rest brauche ich etwas Hilfe.
Vielen Dank an alle Antwortenden.
-
Mir fällt kein seriöser Grund ein warum man das tun will!
Warum erzeugst Du nicht einfach ein Fenster das über allen anderen liegt (inkl. Taskbar)?
-
@Martin Richter
Auf Grund deines Kommentars nehme ich mal an du hast nicht verstanden was ich will. Diverse Updater und Installer verhalten sich so und können sehr wohl als "seriös" angesehen werden. Des weiteren will ich nicht den Desktop mit einem Fenster überbügeln sonder die bestehenden kurzfristig AUSBLENDEN.
Strg-Alt-Entf und du siehts was das Ziel ist
.
-
Gast10061982 schrieb:
Diverse Updater und Installer verhalten sich so und können sehr wohl als "seriös" angesehen werden.
Habe ich Dich so richtig verstanden: Wenn ich ein Programm installiere oder installieren möchte, dann rufe ich ein Setup-Programm auf, also dem Installer.
Wenn ich während des Installers "Strg-Alt-Entf" betätige dann kommt nicht mehr dieses Dialog mit Buttons "Computer sperren", "Abmelden", "Herunterfahren", "Task-Manager" usw.?
Wenn ja, dann bin ich aber sehr neugierig... Kannst Du mir Beispiele für solche Installer nennen?
Martin
-
Gast10061982 schrieb:
Auf Grund deines Kommentars nehme ich mal an du hast nicht verstanden was ich will. Diverse Updater und Installer verhalten sich so und können sehr wohl als "seriös" angesehen werden. Des weiteren will ich nicht den Desktop mit einem Fenster überbügeln sonder die bestehenden kurzfristig AUSBLENDEN.
Strg-Alt-Entf und du siehts was das Ziel ist
.Was ist Dein Ziel?
Du kannst einfach en Fenster Top-Most mit vollen Bildschirm Koordinaten anlegen und der gesamte Desktop ist verdeckt. Dann sieht das kurzfristig so aus we bei meinem Strg+Alt+Entf bei meinem Vista/Windows7
Das habe ich Dir aber auch schon gesagt...Was Installer betrifft: Der letzte Installer bei dem ich das gesehen habe, war es IS 5 und davor. Neue Installer erscheinen als kleines Fenster wie ein Wizrad und das war es...
Als State of the Art bezeichne ich solch ein Verhalten nicht mehr.
Bei diesen Instalern war es aber auch einfach möglich mit Alt+Tab auf die anderen Anwednungen zurück zu schalten, ausgeblendet waren die nie.Also nochmal: Was ist Dein Ziel?
Ich sehe immer noch keinen seriösen Grund für solch ein Verhalten!
-
Ich will dem lieben Gast mal helfen, da es sowieso sehr einfach zu machen ist.
(Wie man auch die Basis von nem LL-Keyboard-Hook schneller hat als ein Fenster :D)
Wenn du den "Windows-Sicherheit"-Screen nachstellen willst, also alle anderen Programme verbergen, dann muss du einen neuen viruellen Desktop erstellen.
http://msdn.microsoft.com/en-us/library/ms687098%28v=VS.85%29.aspx
Die Vorgehensweise ist so:
Neuen Desktop erstellen,
Thread drauf plazieren,
System auf diesen Desktop switchen.Dann ist nur das Hinergrundbild und dein Programm sichtbar.
Strg+Alt+Enft kannst du damit allerdings nicht blocken. Nur bei WinXP wo direkt der Taskmanager kommt.
Also wenn du was schlimmes vorhast, wird es keine Zukunft haben xDHDESK hCurrDesktop; bool SwitchToNewDesktop(void) { // Aktuellen Desktop speichern hCurrDesktop = GetThreadDesktop(GetCurrentThreadId()); // Neuen Desktop erstellen HDESK hNewDesktop = CreateDesktop( L"3A396B743A8045ecBBE8D0D0EA6AA74B", NULL, NULL, 0, DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU | DESKTOP_HOOKCONTROL | DESKTOP_JOURNALRECORD | DESKTOP_JOURNALPLAYBACK | DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | DESKTOP_SWITCHDESKTOP, NULL); if(!hCurrDesktop || !hNewDesktop) { return false; } // Thread auf neuen Desktop platzieren if(!SetThreadDesktop(hNewDesktop)) { return false; } // Auf den neuen Desktop wechseln if(!SwitchDesktop(hNewDesktop)) { return false; } CloseHandle(hNewDesktop); return true; } bool SwitchToOldDesktop(void) { if(!hCurrDesktop) { return false; } // Auf den alten Desktop wechseln if(!SwitchDesktop(hCurrDesktop)) { return false; } // Thread auf alten Desktop platzieren if(!SetThreadDesktop(hCurrDesktop)) { return false; } hCurrDesktop = NULL; return true; }
-
Gast10061982 schrieb:
Diverse Updater und Installer verhalten sich so und können sehr wohl als "seriös" angesehen werden.
Ob seriös oder nicht, das ist unheimlich nervig

-
@While - Danke, geanu das hab ich gesucht.
@Alle - ist ein rein kosmetischer Eingriff. Ich sehe ohnehin kein Potential damit etwas "schlimmes" anzustellen.Danke an alle Antwortenden.