Avatar billede gangstaprog Nybegynder
26. februar 2006 - 23:19 Der er 6 kommentarer

Search After Pixel And Click

nogen som ved hvordan man får VB til at lede efter et bestemt pixel... og når den endelig finder pixelen så klikker den på den...

og der skal ikke være flere pixels indblandet... den skal bare konstant lede efter 1. enkelt pixel og når den opdager den så trykker den på den?....

en kode ville være nice tak
Avatar billede gangstaprog Nybegynder
26. februar 2006 - 23:20 #1
og jeg mener en farve.... :)
Avatar billede sjh Nybegynder
27. februar 2006 - 01:28 #2
hvor skal den finde den?? jeg mener hvis den skal "søge" hele din skærm igennem så er det jo mange pixel's der skal findes.. fx. 1280x1024 = 1.310.720 pixel's

kan du ikke beskrive ledt mere hvad skal det bruges til?
Avatar billede sjh Nybegynder
27. februar 2006 - 02:00 #3
ellers bliver det noget i den stil..


' ------------------------------------- Form1 -------------------------------------
' Husk en Timer (Timer1)
' ---------------------------------------------------------------------------------
Option Explicit

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Form_Click()
  MsgBox ""
End Sub

Private Sub Form_Load()
  Me.BackColor = &H0& ' Farve sort "&H0&"
  Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim X As Long, Y As Long, hDesktop As Long, dwEI As Long, cButt As Long
  Timer1.Enabled = False
  hDesktop = GetDC(0)
  For X = 1 To (Screen.Width \ Screen.TwipsPerPixelX)
    For Y = 1 To (Screen.Height \ Screen.TwipsPerPixelY)
      If GetPixel(hDesktop, X, Y) = &H0& Then ' Farve sort "&H0&"
        mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, X, Y, cButt, dwEI
        DoEvents
      End If
      DoEvents
    Next
    DoEvents
  Next
  Timer1.Enabled = True
End Sub
' ------------------------------------- Form1 -------------------------------------
Avatar billede gangstaprog Nybegynder
28. februar 2006 - 16:52 #4
hmmm det er en meget flot kode... men hva hvis jeg bare vil ha den til at grabbe Runescape Vinduet først istedet for hele skærmen....

oh istedet for en kommentar næste gang så lav et svar så du kan få dine points
Avatar billede gangstaprog Nybegynder
28. februar 2006 - 17:19 #5
og ehm.. kan man ikke gøre så musen osse li rykker over til det sted hvor pixelen er før den klikker :P
Avatar billede sjh Nybegynder
09. marts 2006 - 08:32 #6
Jo så skal du bare have dem her på..

Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long


under din Timer..

      If GetPixel(hDesktop, X, Y) = &H0& Then ' Farve sort "&H0&"
        SetCursorPos X, Y
        ' mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, X, Y, cButt, dwEI
        DoEvents
      End If
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester