Desktop refresh per WinAPI
-
Hallo allerseits,
zur Zeit arbeite ich an einem Virtual Desktop Tool, welches mehrere virtuelle Desktops ermöglicht mit den Eigenschaften, dass jeder Desktop eigene Fenster hat (standard) und jeder Desktop ein eigenes Icon-Set (also einen eigenen Ordner hat).
Die erste Funktion habe ich problemlos gelöst bekommen allerdings bei der zweiten, beim Desktop-Verzeichnis habe ich Probleme:
- Per WinAPI ändere ich den Pfad in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop
- Dann versuche ich per SHFlushSFCache(), SHChangeNotify(), InvalidateRect() den Desktop dazu zu zwingen sich zu aktualisieren, heißt den neuen Desktop-Pfad zu lesen und auch die entsprechenden Icons anzuzeigen. An dieser Stelle hänge ich leider, denn manchmal aktualisiert er und manchmal sieht man zwar die Icons flackern aber es wird nichts aktualisiert. Es gibt bereits ein Tool, dass diese Funktion unterstützt (AltDesk), also muss es möglich sein es umzusetzen ohne Zufallsprinzip, ich bin nur leider noch nicht auf den Dreh gekommen wie.Im Voraus vielen Dank für eure Hilfe.
-
Schon einmal ausprobiert den Desktop mittels Simulation der F5 Taste zu aktualisieren ?
Dazu braucht man nur SetForegroundWindow() und SendInput().
-
Win32 FAQ (1993 !!!)
news://nntp.aioe.org/comp.os.ms-windows.programmer.win32
-
EDIT:
sry, Antwort nach Anmeldung im falschen Thread gelandet
-
@Bitte ein Bit
Danke für den Hinweis, werde das mal versuchen auch wenn es nicht die optimalste Lösung ist.@fred100
Um ehrlich zu sein versteh ich deine Antwort nicht so ganz.
-
@SilverPhoenix
habe genau das selbe Problem, dass der Desktop nach dem Zufallsprinzip aktualisiert wird. Flackern tut es immer, aber der Refresh passiert nicht zuverlässig.-Hast du mittlerweile eine Lösung gefunden, dass der Refresh verlässlich durchgeführt wird?
-
Hast du mittlerweile eine Lösung gefunden, dass der Refresh verlässlich durchgeführt wird?
Ich habe vor einger Zeit mal das COM Interface IActiveDesktop gefunden. Die Funktion ApplyChanges könnte vermutlich genau das machen was du willst.
-