Window neuem Desktop zuordnen
-
Ich habe folgenden Code bis jetzt zusammen um einen neuen Desktop zu erstellen:
HDESK defaultDesk = OpenInputDesktop(0,true,GENERIC_ALL); //alten desktop holen if(defaultDesk){ HDESK desk2 = CreateDesktop( (char*)L"TestDesk", NULL, NULL, 0, GENERIC_ALL, NULL); SetThreadDesktop(desk2); SwitchDesktop(desk2); Sleep(3000); SwitchDesktop(defaultDesk); CloseDesktop(desk2);
Doch jetzt stellt sich mir die Frage wie kann ich diesem ein bereits vorhandens Fenster zuordnen oder falls dies nicht möglich ist einen neuen Prozess zu starten und dadurch das Handle zuordnen?
-
Einfach die Doku lesen!?
http://msdn.microsoft.com/en-us/library/ms686331Und bei laufenden Prozessen:
http://msdn.microsoft.com/en-us/library/ms686744
-
Das bei laufenenden Prozessen habe ich probiert(SetThreadDesktop() sieht man doch im code oben).
Oder funktioniert das bei Konsolen nicht?
-
Es kann sein, dass es nicht funktioniert, weil das Konsolenfenster zu dem Zeitpunkt bereits auf dem einen Desktop gezeichnet wurde.
-
Also wenn ich das richtig verstehe müsste ich also die Konsole neu starten?
-
Eine Möglichkeit wäre: Wenn das Konsolenprogramm ohne Argumente startet, den neuen Desktop zu erstellen und das Konsolenprogramm dann mit CreateProcess auf dem entsprechenden Desktop mit einem Argument zu starten.
Wenn dieses Argument angegeben wird, wird kein neuer Desktop erstellt.