"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[SOLVED]WinAPI: Multiple Desktops

geforceraid 22.05.2005 - 13:54 974 5
Posts

geforceraid

Big d00d
Avatar
Registered: Mar 2003
Location: Uhrwerk
Posts: 299
Hallo!

Ich will ein Programm schreiben, welches mehrere virtuelle Desktops verwaltet.
Dazu verwende ich die WinAPI Funktionen
CreateDesktop und SwitchDesktop.

Wenn ich allerdings mittels SwitchDesktop auf den soeben erstellten Desktop wechsle, werden auf diesem keine Taskleiste und keine Programmicons dargestellt.

Auch der Aufruf
ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_SHOW);
hilft nichts.

Gibts da einen Lösungsansatz, oder muss man das mithilfe der Funktion EnumWindows realisieren?
Bearbeitet von geforceraid am 23.05.2005, 09:07

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11327
Dass auf einem neuen Desktop noch keine Programme laufen, ist logisch. Das FindWindow sollte auf dem neuen Desktop NULL liefern, weil es auf diesem Desktop keine Taskleiste gibt, daher läuft das ShowWindow ins Leere.

Du könntest versuchen, auf dem neuen Desktop einfach einen weiteren Explorer zu starten.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Nur mal so als Frage in den Raum gestellt: Ist dir klar dass es bereits sowas gibt?

geforceraid

Big d00d
Avatar
Registered: Mar 2003
Location: Uhrwerk
Posts: 299
Zitat von watchout
Nur mal so als Frage in den Raum gestellt: Ist dir klar dass es bereits sowas gibt?

Ist mir schon klar, nur will ich mir die Technik aus Interesse mal genauer anschauen.
Wie kann ich den Explorer auf dem 2.Desktop starten?

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
CreateProcess würde sich da wohl anbieten.

geforceraid

Big d00d
Avatar
Registered: Mar 2003
Location: Uhrwerk
Posts: 299
Zitat von JC
CreateProcess würde sich da wohl anbieten.

thx!
Jetzt funzts. Ich hab einfach das Feld startupInfo.lpDesktop auf den jeweiligen Desktop gesetzt.
Werd den Source posten, wenn das Programm fertig ist.

Edit:

Noch eine Frage:
Der Taskmanager wird beim 2.Desktop nicht angezeigt.
Wie kann ich für das System den primären Desktop umstellen?
In der MSDN finde ich leider auch nichts darüber
Bearbeitet von geforceraid am 23.05.2005, 09:26
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz