ToggleDesktop Problem

20/01/2009 - 19:39 von ohmmega | Report spam
hallo,

ich arbeite an einem kleinen tool, welches in der lage sein sollte,
den desktop ein- bzw. auszublenden (also ganz genau so als wenn man WIN
+D drückt).

ich habe mich der shell32 klasse bedient und mittels...

((Shell32.IShellDispatch4)shell).ToggleDesktop();

... mein programm dazu gebracht, den desktop erfolgreich einzublenden.
jedoch die wiederherstellung der fenster klappt einfach nicht. drücke
ich dann WIN+D, werden alle fenster wiederhergestellt.

aufgrund dieser erfahrung versuchte ich es auch mit user32.dll >
keybd_event(). genau das selbe spielchen. ein virtueller shortcut
zeigt mir zwar den desktop aber fensterwiederherstellung klappt dann
nicht.

wichtig: debugging zeigt, dass der entsprechende code durchlaufen
wird.

ich vermute es liegt am "fokus" des aktuellen programms, der mit der
minimierung verlorengeht. gibts dazu erfahrungen, hinweise, ideen was
ich ausprobieren könnte?

danke schon mal,
rené p
 

Lesen sie die antworten

#1 Frank Dzaebel
20/01/2009 - 20:21 | Warnen spam
Hallo,

ich habe mich der shell32 klasse bedient und mittels...
((Shell32.IShellDispatch4)shell).ToggleDesktop();

... mein programm dazu gebracht, den desktop erfolgreich einzublenden.
jedoch die wiederherstellung der fenster klappt einfach nicht. drücke
ich dann WIN+D, werden alle fenster wiederhergestellt.



Setze ggf. die TopLevel-Eigenschaft vorher auf false:
______________

// Verweise: ../System32/Shell32.dll einbinden
private void button1_Click(object sender, EventArgs e)
{
Shell32.ShellClass shell = new Shell32.ShellClass();
this.TopLevel = false;
((Shell32.IShellDispatch4)shell).ToggleDesktop();

System.Threading.Thread.Sleep(5000); // Irgendwas tuen

this.TopLevel = true;
((Shell32.IShellDispatch4)shell).ToggleDesktop();
Marshal.ReleaseComObject(shell);
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen