[Erledigt]Desktop Hintergrund DC ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

[Erledigt]Desktop Hintergrund DC ermitteln

Beitrag von tft »

Hallo,

ich möchte den Handler, beziehungsweise die Adresse im Speicher wissen, wo der Aktuelle Desktophintergrund zu finden ist.

Ich möchte den Desktop Hintergrund als Zeichenfläche verwenden. Jemand ne Idee?

Gruss TFT
Zuletzt geändert von tft am 05.04.2021 13:24, insgesamt 1-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Desktop Hintergrund DC ermitteln

Beitrag von NicTheQuick »

Früher war das Window-Handle des Desktops einfach 0. Da konntest du mit GetDC_(0) einfach den Device Context des Desktops bekommen. Aber das ist alles, was ich noch weiß. Ich kann mir vorstellen, dass das unter Windows 10 heutzutage nicht mehr so einfach ist.
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Desktop Hintergrund DC ermitteln

Beitrag von mk-soft »

Wird natürlich mit dem nächsten Ausgabe überschrieben

Code: Alles auswählen

;-TOP
Define hDesktop, hDesktopDC

hDesktop = GetDesktopWindow_()
If hDesktop
  hDesktopDC = GetDC_(hDesktop)
  
  If hDesktopDC
    TextOut_(hDesktopDC, 1000, 40, "Hello, Windows!", 15)
    InvalidateRect_(hDesktop, 0, 0) 
  EndIf
  
EndIf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Derren
Beiträge: 557
Registriert: 23.07.2011 02:08

Re: Desktop Hintergrund DC ermitteln

Beitrag von Derren »

Interessant.
Dachte er malt auf den Hintergrund, aber er mal einfach auf den Desktop über(!) die Symbole
Signatur und so
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Desktop Hintergrund DC ermitteln

Beitrag von tft »

Ich brauche den Zeiger auf die Adresse des Hintergrundbildes.
Dort kann ich dann einen eigenen eintragen.
Ich kann jetzt das Bild Verändern. Und muss dann einen Refresh befehl senden, damit die Anzeige erneuert wird.
So die Theory ......
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Desktop Hintergrund DC ermitteln

Beitrag von Mijikai »

tft hat geschrieben:Ich brauche den Zeiger auf die Adresse des Hintergrundbildes.
...
Schon versucht das SysListView32 bzw. WorkerW Fenster zu bekommen?
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Desktop Hintergrund DC ermitteln

Beitrag von tft »

äää nein ....
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Desktop Hintergrund DC ermitteln

Beitrag von DarkDragon »

Geht das aus dem CodeArchiv nicht mehr?

http://www.purearea.net/pb/CodeArchiv/W ... Painter.pb

Oder war das zum zeichnen darüber? (Kann es grad nicht testen, kein Windows hier)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Desktop Hintergrund DC ermitteln

Beitrag von ccode_new »

Hallo!

Bekommt das jemand zum laufen?
(Das hinter die Icons gezeichnet wird)

Code: Alles auswählen

Procedure FindDTWindow()
  Protected.i hWnd, hwndWorkW, hView, h, dResult
  hwnd = FindWindow_(@"Progman"), @"Program Manager"))
  
  SendMessageTimeout_(hWnd, $052C, 0, #Null, #SMTO_NORMAL, 1000, @dResult)
  
  hwndWorkW = #Null
  Repeat
    hwndWorkW = FindWindowEx_(#Null, hwndWorkW, @"WorkerW", #Null);
    If hwndWorkW = #Null
      Continue
    EndIf
    
    hView = FindWindowEx_(hwndWorkW, #Null, @"SHELLDLL_DefView", #Null);
    If hView = #Null
      Continue
    EndIf
    
    h = FindWindowEx_(#Null, hwndWorkW, @"WorkerW", #Null)
    While h <> #Null
      SendMessage_(h, #WM_CLOSE, 0, 0)
      h = FindWindowEx_(#Null, hwndWorkW, @"WorkerW", #Null);
    Wend
    Break
    
  Until #True
  
  ProcedureReturn hWnd ;Auch schon verschiedene "WinSpy" - Handles durchprobiert! (unter Win10)
EndProcedure

Global Ecki.rect
Ecki\bottom = 10
Ecki\left = 10
Ecki\right = 110
Ecki\top = 110

Global dc = GetDCEx_(FindDTWindow(), #Null, $403)
Debug dc
If dc <> 0
  FillRect_(dc, Ecki, CreateSolidBrush_(RGB(255,0,0)))
  InvalidateRect_(dc, Ecki, 0)
  ReleaseDC_(FindDTWindow(), dc) 
EndIf

Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten