Aktuellen Screen mit GetPixel auslesen! Verfasst am: 19.08.2007, 14:08
Hi Leute,
Meine Fage ist es möglich mit GetPixel alle pixel des monitors auszulesen?
Wenn bestimmte Pixel vorkommen sollte es mir angezeigt werden.
Danke im Vorraus!
Danke im Vorraus
Edit//
Ich hab es jetzt so:
[vb:1:ce024800f5]
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim CurPos As POINTAPI
Private Sub Command2_Click()
Dim a
Dim b
Dim Farbe As Long
Dim HFarbe As String
Dim wdc As Long
Dim CurPos As POINTAPI
On Error Resume Next
wdc = GetWindowDC(0)
For a = 1 To Screen.Width / Screen.TwipsPerPixelX
For b = 1 To Screen.Height / Screen.TwipsPerPixelY
Farbe = GetPixel(wdc, a, b)
Next
Next
MsgBox "Fertig"
End Sub
Private Sub Form_Load()
Timer1.Interval = 100
Label2.Caption = Screen.Width / Screen.TwipsPerPixelX
Label3.Caption = Screen.Height / Screen.TwipsPerPixelY
Label4.Caption = (Screen.Width / Screen.TwipsPerPixelX) * (Screen.Height / Screen.TwipsPerPixelY)
End Sub
Private Function RGBnachHEX(ByVal Farbe As Long) As String
Dim Rot As String
Dim Grün As String
Dim Blau As String
Dim HRot As String
Dim HGrün As String
Dim HBlau As String
Rot = Farbe And &HFF&
Grün = Farbe And &HFF&
Blau = Farbe And &HFF&
HRot = Hex(Rot)
HGrün = Hex(Grün)
HBlau = Hex(Blau)
If Len(HRot) < 2 Then HRot = "0" & HRot
If Len(HGrün) < 2 Then HGrün = "0" & HGrün
If Len(HBlau) < 2 Then HBlau = "0" & HBlau
RGBnachHEX = "#" & HRot & HGrün & HBlau
End Function
[/vb:1:ce024800f5]
Jetzt frage an Euch wäre es möglich dies noch schneller abzufragen?
Bitte helft mir!
Danke im Vorraus _________________
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 19.08.2007, 15:33
[vb:1:94da7cc2a9]
For a = 1 To Screen.Width / Screen.TwipsPerPixelX
For b = 1 To Screen.Height / Screen.TwipsPerPixelY
Farbe = GetPixel(wdc, a, b)
Next
Next a
[/vb:1:94da7cc2a9]
Du solltest die Berechnung von "Screen.Width / Screen.TwipsPerPixelX" und auch die von Y in jeweils eine Variable übergeben. Natürlich vor der Schleife.
Aber schneller wird es mit dieser Methode schätze ich nicht mehr gehen.
Außer du wüßtest ungefähr die Koordinaten der Pixel die du auslesen willst.
Dann müßtest du nicht den ganz Bildschirm durchgehen. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)