vb.net - 在 VB.Net 中设置光标位置
问题描述
是的,这很简单。
我有一个简单的像素搜索功能(在屏幕上搜索棕色像素)。如果它找到一个,它应该将鼠标移动到该位置并单击它。
全屏捕获已经很好用了。为了使整个过程更快,我只想捕获 Form1 窗口(我之前使它透明,因此我可以设置和更改窗口大小以仅捕获我想要的屏幕)。
如果它找到像素,它不会将光标移动到像素位置,而是移动到左上屏幕的某个位置。那是因为它只捕获了form1的x,y而不是整个屏幕,并且将鼠标移动到屏幕上的40、25与form1中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 来修复它
推荐阅读
- java - 使用服务在后台使用媒体播放器是好的做法还是有必要?
- javascript - vue.js .sync 无法读取未定义的属性
- python - 重复键值违反唯一约束“core_user_username_key”详细信息:键(用户名)=()已经存在
- docker - 如何编辑 docker 镜像的源代码?
- node.js - 如何比较特定半径内的地理坐标
- java - RXJava2中几种方法的组合
- android - Android 5 肖像应用程序在转到最近和旋转时崩溃
- javascript - 如何在 discord.js 中检测 enmap 中的属性值?
- javascript - 无法将 nonce 属性应用于我的内联 css
- django - 将两个表的特定列数据显示到一个列表中?