desktop id /zeichnen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

desktop id /zeichnen

Beitrag von TomTom »

hi ich habe hier im forum rumgesucht, aber leider nichts darüber gefunden...

ich habe ein frage:
gibt es eine desktopid? also wenn ich darauf mein bild zeichnen würde, dann würde es andere fenster im vordergrund nicht überschreiben? sondern NUR den desktop?

meine idee:
ich habe letztens (mal wieder) matrix geguckt und wollte als bewegbaren hintergrund die matrixanimation setzen...
dazu habe ich schon versucht ein hintergrund als .gif zu verwenden (klappt nicht)

wenn ich jetzt auf dem desktop (ohne andere fenster) zeichnen könnte würde es funktionieren:
ich werde dann zuerst das hintergrundbild auf schwarz setzen und ein screenshot vom desktop machen. alle icons auslesen, meine matrix auf ein image zeichen, icons drüberzeichnen und das fertige bild auf den desktop malen.

ich weiß es funzt nicht 100%ig (wenn jemand einen rechtsklick auf ein icon macht, wird das menü überschrieben) aber das macht mir nichts

wäre echt cool wenn ihr ideen hättet, wie man das realisieren kann.

MFG tomtom
Pure Basic 4.0
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: desktop id /zeichnen

Beitrag von Kiffi »

TomTom hat geschrieben:gibt es eine desktopid?
sowas?

Code: Alles auswählen

Debug GetDesktopWindow_()
Grüße ... Kiffi
a²+b²=mc²
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Re: desktop id /zeichnen

Beitrag von TomTom »

vielen dank kiffi für die schnelle antwort ;)

wenn ich zuhause bin werde ich es testen...


LG tomtom
Pure Basic 4.0
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Re: desktop id /zeichnen

Beitrag von TomTom »

hmm hab da noch ein kleines problem...

jetzt habe ich ja die fensterid... aber wie kann ich darauf zeichnen?
geht das mit StartDrawing() oder wie?


vielen dank! tomtom
Pure Basic 4.0
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: desktop id /zeichnen

Beitrag von HeX0R »

Ahh Matrix, da fällt mir doch ein älterer Thread ein.

Puregolf haben wir auch schon ewig nicht mehr gespielt...
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: desktop id /zeichnen

Beitrag von bobobo »

noch was zum Thema (eventuell)

http://www.purebasic.fr/german/viewtopi ... 97#p277097


(oder du nimmst 'nen Edding, damit kann mal auch prima auf dem Desktop malen 8) )
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: desktop id /zeichnen

Beitrag von bobobo »

Oder so .. mit dem VLC unter XP zumindest

vlc --video-wallpaper --qt-start-minimized --repeat "und hier das MatrixDingsbumsvideo rein"
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Re: desktop id /zeichnen

Beitrag von TomTom »

vielen dank bobobo!

kann man auch anstatt des textes ein sprite oder image zeichnen, bei diesem code?

hdc = GetWindowDC_(GetShellWindow_())
text$ = "Kacke nee "
SetTextColor_(hdc,#Cyan)
SetBkColor_(hdc,#Red)
TextOut_(hdc,0,0,text$,Len(text$))
ReleaseDC_(GetShellWindow_(),hdc)

vielen dank! mfg tomtom
Pure Basic 4.0
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: desktop id /zeichnen

Beitrag von bobobo »

sollte wohl gehen .. das ist allerdings gdi-zeugs und damit windowsApi und damit kein direktes PB.


also z.B.

Code: Alles auswählen

LoadFont(0,"",32)
Debug ElapsedMilliseconds()
Time$ = FormatDate("%hh:%ii",Date()-ElapsedMilliseconds()/1000+(3600*8))
ExamineDesktops()
w=DesktopWidth(0):h=DesktopHeight(0) ;
tw=30;428 ;textwidth (gemessen)
th=120 ;textheight(gemessen)
del=333
del=33
ro.l=235:go.l=80:bo.l=80
;r=82:g=111:b=bo
py=h-th

For i=0 To 30
  FreeFont(0)
  LoadFont(0,"",Random(22)+10)
  hdc = GetWindowDC_(GetShellWindow_())
  SelectObject_(hdc,FontID(0))
  SetBkMode_(hdc,#TRANSPARENT)
  r=ro-20+Random(40):g=go-20+Random(40):b=bo-20+Random(40)
  px=Random(w-tw):py=h-th:py=Random(50)+(h-th-50);:py=h-th
  SetTextColor_(hdc,#Black)
  TextOut_(hdc,px+1,py+1,Time$,5)
  
  BeginPath_(hdc) ;hier wird was vorbereitet
  Rectangle_(hdc,px,py,px+3,py+3) ; kleines Rechteck
  Arc_(hdc,px,py,px+20,py+20,0,10,0,90) ;ein kleiner Kreis
  EndPath_(hdc) 
  StrokePath_(hdc); und hier wird dann richtig gemalt
  
  Select Random(2)
    Case 0
      SetTextColor_(hdc,#Yellow)
    Case 1
      SetTextColor_(hdc,#Red)
    Case 2
      SetTextColor_(hdc,#Green)
  EndSelect
  TextOut_(hdc,px,py,Time$,5)
  For iv=1 To 512
    InvalidateRect_(iv,0,0)   ;Soll den Rest bereinigen (iconebene was auch immer)
  Next iv
  del+33
  Debug del
  ReleaseDC_(GetShellWindow_(),hdc)
  Delay(del)
Next

Du brauchst dazu etwas mehr Info was GDI angeht
z.B. http://www.henkessoft.de/C++/WinAPI/Win ... _7_GDI.htm
oder bei Microsoft oder bei google :)

aber schön ist anders . .durch die invalidate-geschichte wird es irgendwann flackern.
das vlc-demo (directX-schirmmalerei) da oben macht es irgendwie besser (und sehr viel aufwändiger)

WENN DU HIER IM BOARD NACH GDI SUCHEN WILLST DANN BEACHTE DASS DER SUCHBEGRIFF MEHR ALS 3 STELLEN HABEN MUSS
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: desktop id /zeichnen

Beitrag von ts-soft »

bobobo hat geschrieben:Oder so .. mit dem VLC unter XP zumindest

vlc --video-wallpaper --qt-start-minimized --repeat "und hier das MatrixDingsbumsvideo rein"
Für Vista und 7 kann man den Direct3D-Desktop-Modus nutzen. Commanline dafür konnte
ich aber keine finden.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten