I am trying to make a program that scans the pixels in the screen for certain colors and if it finds it sets the mouse location to that spot. Now i need your help to see if something like this is possible with vb and if it is possible point me into the right direction.

9 Years
Discussion Span
Last Post by toko

I don't have Visual Studio 2008 but I have Visual Studio 2005. In 2005 if you go to New Project then Other Project Types. You should see several setup projects including Setup Wizard.
Express editions do not have this feature. You have to use ClickOnce or copy all required files to the computer that has the correct Net version.


Here's something to try. This code is provided "AS IS" :twisted:

I created an invisible, full screen size form. With a timer control, I trigger the "search for the pixel" action

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  ' Create an invisible form with a timer control on it                                    
  Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None                                  
  Me.WindowState = FormWindowState.Maximized                                               
  Me.Opacity = 0                                                                           
  Timer1.Interval = 500                                                                    
End Sub

then I capture tick event and disable timer control

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  ' Do scanning
  Dim x As Integer
  Dim y As Integer
  Dim ScreenX As Integer
  Dim ScreenY As Integer
  Dim g As Graphics
  Dim Img As Bitmap

  ' Get screen size
  ScreenX = My.Computer.Screen.Bounds.Width
  ScreenY = My.Computer.Screen.Bounds.Height
  ' Create a bitmap of the screen
  g = Graphics.FromHwnd(Me.Handle)
  g.CopyFromScreen(0, 0, ScreenX - 1, ScreenY - 1, New Size(ScreenX, ScreenY))
  Img = New Bitmap(ScreenX, ScreenY, g)
  ' Loop the "screen"
  For x = 0 To ScreenX - 1
    For y = 0 To ScreenY - 1
      ' I searched for a hard-coded ARGB color (0, 0, 0, 0) i.e. black
      If Img.GetPixel(x, y) = Color.FromArgb(0, 0, 0, 0) Then
        ' Dispose graphics
        ' Move the mouse
        Cursor.Position = New Point(x, y)
        ' Exit. 
        Exit Sub
      End If
    Next y
  Next x

End Sub

Instead of simple exit, you may restart timer, change the color you're looking for etc.

This may be done in a simpler way and like I said, I don't guarantee that this works (in every situation).

Your question was titled "...Changing Pixel Color" but you asked for the code to move the mouse cursor.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.