Ganz oben Malen
-
weiß niemand ne lösung? gibt es überhaupt eine?
-
Meinst du sowas wie die Startleiste? Oder soll sich das anders verhalten?
-
also, es soll so aussehen (wenn alle fenster minimiert sind):
unten ist die taskleiste, darüber das hintergrundbild, links sind die ganzen verknüpfungen und rechts oben ist die prozessortleistung, einfach nur ne zahl, die sich jede sekunde oder so aktualisiert. also nix mit fenstern oder so, ich will quasi einfach in das hintergrundbild zeichen.
-
gibts dafür nicht active desktop?
-
hm, schon möglich, ich würde das aber gern selbst programmieren

-
Hallo,
eine Möglichkeit wäre das anzuzeigende Fenster mit SetWindowPos in den Vordergrund zu setzen. (hWndInsertAfter = HWND_TOPMOST)
MfG
Anakin
-
hm, dann wärs ja aber über allen anderen fenster, es soll ja aber nur praktisch im hintergrundbild sein...
-
dann hack dich doch in den explorer prozess ein (dll injezieren) und das desktop fenster subclassen und WM_PAINT behandeln.
-
sorry, versteh ich nicht so ganz, also ich kann ja nicht einfach mit SetWindowLong die WndProc ändern, ist ja in externen prozessen nicht erlaubt. was meinst du mit dll injezieren?
-
google?
-
sorry wenn ich nerve ^^
Es gibt mehrere Möglichkeiten.. die 2 gängigsten:
-
einen Message-Hook für einen bestimmten Thread (von dem Prozess in den du die Dll injezieren willst), dann eine WM_NULL Message an den Thread schicken. Dadurch ladet Windows deine Hook-Dll in den Prozessraum des betroffenen Prozesses -> Injektion erfolgreich
-
Mittels CreateRemoteThread einen Thread in einem fremden Prozess erzeugen. Hinweis: CreateRemoteThread funktioniert nur auf NT-Systemen!
das hab ich gefunden, versteh aber beides nicht zu 100%. kann mir einer erklären welche methode hier besser ist, und wenn ja, wie ich sie anwenden muss?
MfG, Herr-Vorragend
-
-
Würde das net gehen wenn du einfach mit GetDesktopWindow() ein Handle auf den Desktop besorgst und dann reinmalst?
-
hab ich auch schon probiert, es wird aber bei mir nichts angezeigt. ist ja auch irgendwo klar, weil der desktop ja andauernd WM_PAINT nachrichten bekommt und dann is meins ja weg.
-
Fenster mit WS_EX_NOACTIVATE und WS_EX_TOPMOST erstellen.
Ersteres sorgt dafür, das dein Fenster nie den Fokus erhält.
Letzteres dafür das über den anderen Fenstern ist.
Falls Du noch transparenz willst, würde ich WS_EX_LAYERED noch dazupacken und mit
SetLayeredWindowAttributes() die Farbe die transparent werden soll setzen...
Man müsste dann nur noch die Klicks an tieferliegende Fenster "weiterleiten"
-
danke, hast mich auf die richtige idee gebracht, und zwar wollte ich eigentlich genau das gegenteil von WS_EX_TOPMOST, also hab ich HWND_BOTTOM bei SetWindowPos genommen
