Suche dll für readPixel auf ges. Bildschirm

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

MolchMitDolch

Betreff: Suche dll für readPixel auf ges. Bildschirm

BeitragFr, Dez 29, 2006 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich suche eine dll mit der man readpixel auf dem gesamten Bildschirm, also auch außerhalb des Programmfensterns anwenden kann. Kennt jemand eine dll mit der das so oder so ähnlich möglioch ist?
Schonmal danke im vorraus. Very Happy

mfg MolchMitDolch

TheProgrammer

BeitragFr, Dez 29, 2006 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst B+ verwenden. Da kann man auch im DesktopBuffer() Readpixel anwenden.
aktuelles Projekt: The last day of human being

Blitzcoder

Newsposter

BeitragFr, Dez 29, 2006 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt DLLs, mit denen man den Desktop als Image speichern kann. Und dann kann man davon auch die Pixel auslesen.
Guck mal ins Userlib-Forum.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

MolchMitDolch

BeitragFr, Dez 29, 2006 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
wow, danke für die schnelle Antwort, aber ich hab nur bb3d, gibt es trozdem eine möglichkeit das zu realisieren?

EDIT:
@Blitzcoder
ja die kenn ich, aber dann muss ich immer ein 1024x768 bild in den ram nehmen, obwohl nur ein paar pixel haben will, das dauert ca 1sec nur um das bild zu machen... Sad
 

flashmaxel

BeitragSa, Dez 30, 2006 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke es geht per WinApi. Hab schnell ne Funktion geschrieben, allerdings muss du daraus wohl noch die RGB-Werte isolieren oder so.
Code: [AUSKLAPPEN]
Function BBGetPixel%(x,y)
     Local d=GetDesktopWindow ()  ;DesktopHandel holen
     Local d_dc=GetWindowDC(d)  ;DC handel
     Return GetPixel(d_dc,x,y)
End Function

Die dazu benötigte Userlib:
Code: [AUSKLAPPEN]
.lib "user32.dll"
GetDesktopWindow%()
GetWindowDC%(hwnd%)

.lib "gdi32.dll"
GetPixel%(dc%, x%, y%)

Mittels dieser Funktion bekommst du dann irgendeinen Wert zurück indem die Farben stehen, aber frag mich nicht wie das kombiniert ist - musste mal google´n (in BB gibts ja die Funktionen ColorRed(),ColorGreen() und ColorBlue(), aber die bringen dir nichts, weil sie den Wert von GetColor() nehmen)
Um die Mausposition außerhalb des BB-Fensters zu ermitteln hilft dir diese Dll https://www.blitzforum.de/foru...usposition


Es könnte sein, dass es nur immer die Desktopfarbe ermittelt, aber nicht die von evtl. darüberliegenden Fenstern, wenn diese keine Childs des Desktopfensters sind ...

Hoffentlich funzts, Max Very Happy
Real C programmers never die; they cast to void.
 

MolchMitDolch

BeitragSa, Dez 30, 2006 22:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habs gerade ausprobiert und jenachdem was für eine Fenster im Hindergrund offen ist, bekomme ich einen anderen Wert zurück, also ES FUNZT Very Happy tausend Dank für die schnelle und gute Hilfe

mfg MolchMitDolch

StepTiger

BeitragSa, Dez 30, 2006 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert wirklich. Jedoch sind der Rot und der Blau Wert vertauscht.

Mit dem Programm hab ich den Start Button in ein Bild gespeichert:
Code: [AUSKLAPPEN]
Include "winapi.bb"

maxx=100
maxy=30

xpos=0
ypos=1200-maxy

img=CreateImage(maxx,maxy)
LockBuffer ImageBuffer(img)

For x=0 To maxx-1
   For y=0 To maxy-1
      
      tx=x+xpos
      ty=y+ypos
      
      n=BBGetPixel(tx,ty)
      
      r=n Shr 0 And 255
      g=n Shr 8 And 255
      b=n Shr 16 And 255
      
      col2=r Shl 16 + g Shl 8 + b Shl 0
      
      WritePixelFast x,y,col2,ImageBuffer(img)
      
   Next
Next

UnlockBuffer ImageBuffer(img)
SaveImage img,"desktop.bmp"

WaitKey
End


winapi.bb:
Code: [AUSKLAPPEN]
Function BBGetPixel%(x,y)
   Local d=GetDesktopWindow () ;DesktopHandel holen
   Local d_dc=GetWindowDC(d) ;DC handel
   Return GetPixel(d_dc,x,y)
End Function



Jedoch ist die Funktion seeeeehr langsam. Geht das irgendwie schneller?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group