Wallpaper zeichnen



  • Hallo, ich hab schon einige Zeit in Google investiert, allerdings keine Lösung gefunden. Ist es möglich, auf den Desktop hinter den Icons zu zeichnen, also praktisch auf dem Hintergrundbild?

    Hab folgenden Code gefunden, welcher das eigentlich tun sollte, allerdings zeichnet er trotzdem noch auf den Icons...

    HWND p  = FindWindow(L"ProgMan", NULL);
    HWND s = FindWindowEx(p, NULL, L"SHELLDLL_DefView", NULL);
    HWND dtw  = FindWindowEx(s, NULL, L"SysListView32", NULL);
    HDC hdc = GetDC(dtw);
    RECT r = {0,  0, 1920, 1080};
    
    TextOut(hdc, 10, 10, L"Whatever", wcslen(L"Whatever"));
    RedrawWindow(dtw, &r, NULL, RDW_NOERASE | RDW_INVALIDATE | RDW_UPDATENOW );
    

    Eigentlich habe ich folgendes vor, vielleich kann mir ja jemand helfen?
    Ich habe 2 Monitore und möchte auf jedem ein anderes Hintergrundbild haben. Nun habe ich gedacht, ich könnte dieses ja einfach über das normal Bild zeichnen, da ich keine bessere Möglichkeit kenne....

    Danke schonmal im Vorraus !

    MfG.



  • Das ist äußerst kompliziert: du musst ein DLL in den Prozess des Explorers injizieren und anschließend das Richtig Fenster Hooken.
    Einfacher, sofern den Anforderungen entsprechend, könntest du ein eigenes Hintergrundbild laden.



  • Guest___ schrieb:

    Ich habe 2 Monitore und möchte auf jedem ein anderes Hintergrundbild haben.

    Schonmal dran gedacht einfach mit mspaint.exe aus den beiden Bildern ein großes Bild zu machen!?



  • @dot: Wenn ich ein großes Bild nehmen, wird das auf jeden Monitor gesetzt, aber nicht über Beide...aber auch wenn das klappt, ich würde es lieber anders machen 😉

    @dllinji:
    Ich hab mir das folgendermaßen vorgestellt: Ich fange die Nachrichten des entprechenden Fensters ab (müsste das der "SysListView32" Klasse sein), mit SetWindowHook. Dann zeichne ich alles und wenn das Fenster dann z.B. die Redraw Nachricht bekommt, zeichne ich neu. Würde das so funktionieren, wie ich mir das vorstelle?

    Danke schonmal soweit !



  • Guest___ schrieb:

    @dot: Wenn ich ein großes Bild nehmen, wird das auf jeden Monitor gesetzt, aber nicht über Beide...aber auch wenn das klappt, ich würde es lieber anders machen 😉

    Ähm doch, du musst nur die Bildposition auf "Nebeneinander" stellen. Das Funktioniert unter jedem Windows seit XP, das kann ich dir garantieren weil ichs mit meinen Zwei nämlich seit über 5 Jahren so mach 😉



  • ...was bei mir dazu führt, dass das Bild irgendwo auf dem 2. Monitor neu anfängt, da es nicht genau so groß ist, wie meine beiden Monitore...;)
    Aber ja, ich weiß was du meinst, ich will es ja aber anders lösen 😃



  • Guest___ schrieb:

    ...was bei mir dazu führt, dass das Bild irgendwo auf dem 2. Monitor neu anfängt, da es nicht genau so groß ist, wie meine beiden Monitore...;)

    Dann öffne ein Bildbearbeitungsprogramm deiner Wahl und mach das Bild passend?

    Guest___ schrieb:

    Aber ja, ich weiß was du meinst, ich will es ja aber anders lösen 😃

    Und warum? Du denkst doch wohl nicht wirklich der selbstgefrickelte Paintjob der über irgendwelche Hacks Systemprozesse hijacked und dann dauernd deinen Hintergrund malt ist eine gute Lösung? Also meine CPU hat definitiv besseres zu tun als mit Volldampf Dinge zu emulieren die im System sowieso schon eingebaut sind...



  • Es geht mri ja auch nicht darum, ne super performante Lösung zu bekommen. Die Sache dient nur zu Lernzwecken....das ist alles 😉


Log in to reply