Zum Explorer bin ich überfragt. Ich hätte nichtmal gewusst das es durch drücken der Shift-Taste funktioniert.
Naja, mit zu langsam meinte ich folgendes im Zusammenhang mit meinem
Programm.
1.) Desktop wird erstellt (
Handle wird zurück gegeben)
2.) Shell wird gestartet
3.) Desktophandle wird wieder frei gegeben.
Wenn zum Zeitpunkt von Punkt 3 der Punkt 2 noch nicht ausgeführt wurde (oder nicht vollständig) verschwindet der Desktop wieder weil keine Handles darauf offen sind. Wenn dann Punkt 2 ausgeführt wird ist also der Desktop dazu wieder weg und es kommt zu dem Fehler.
Als Lösung hab ich Schritt 3 verlagert so das Schritt 3 erst ausgeführt wird wenn das
Programm geschlossen wird oder der Desktop geschlossen wird (mit der Programminstanz die ihn geöffnet hat). Hat allerdings den Nachteil das man von einem anderen Desktop aus (also von einem aus der nicht den Desktop erstellt hat) diesen neuen nicht schließen kann weil eben noch ein
Handle darauf offen ist.
Zudem hab ich die Shell (Explorer.exe) mit 5 Sekunden verzögerung gestartet wobei das eventuell hinfällig ist wenn man den Desktop nicht schließt.
Hmm, ich ahne das der Explorer mir weiter Kopfschmerzen bereiten wird, er ist offensichtlich nicht dafür ausgelegt das er mehrfach als Shell läuft.
@Sunlight7: wärest du bereit noch eine Version zu testen wo die Shell nicht verzögert gestartet wird?