在VB.Net中设置光标位置

在VB.Net中设置光标位置,vb.net,Vb.net,是的,很简单 我有一个简单的像素搜索功能(搜索屏幕上的棕色像素)。 如果它发现了一个,它应该将鼠标移动到该位置并单击它 这在全屏拍摄中已经非常有效了。 为了加快整个过程,我只想捕获Form1窗口(之前我将其设置为透明,以便可以设置和更改窗口大小以仅捕获我想要的屏幕) 如果找到像素,它不会将光标移动到像素位置,而是移动到左上屏幕的某个位置。这是因为它只捕获了表格1的x,y,而不是整个屏幕,并且将鼠标移动到屏幕上的40,25与表格1中的40,25的位置不同 如何将鼠标移动到Form1像素位置 D

是的,很简单

我有一个简单的像素搜索功能(搜索屏幕上的棕色像素)。 如果它发现了一个,它应该将鼠标移动到该位置并单击它

这在全屏拍摄中已经非常有效了。 为了加快整个过程,我只想捕获Form1窗口(之前我将其设置为透明,以便可以设置和更改窗口大小以仅捕获我想要的屏幕)

如果找到像素,它不会将光标移动到像素位置,而是移动到左上屏幕的某个位置。这是因为它只捕获了表格1的x,y,而不是整个屏幕,并且将鼠标移动到屏幕上的40,25与表格1中的40,25的位置不同

如何将鼠标移动到Form1像素位置

  Dim xd3 As Color = Color.FromArgb(255, 193, 105, 79)
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Integer, ByVal y As Integer) As Integer
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)

Const MOUSEEVENTF_LEFTDOWN As UInteger = &H2
Const MOUSEEVENTF_LEFTUP As UInteger = &H4

Private Sub FindPixels()

    found = False

    Using b As New Bitmap(Me.Width, Me.Height)
        Using g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(b)
            Try
                g.CopyFromScreen(Me.Left, Me.Top, 0, 0, b.Size)
            Catch
            End Try

            For i = 0 To (b.Width - 1)
                For j = 0 To (b.Height - 1)
                    If b.GetPixel(i, j) = xd3 Then
                        SetCursorPos(i, j)
                        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
                        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
                        found = True
                    End If
                Next
            Next
        End Using

    End Using
End Sub

别担心,我是哑巴。通过添加Me.Location.X和Me.Location.Y来修复它

别管我是傻瓜。通过添加Me.Location.X和Me.Location.Y修复了此问题