Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
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 Const MOUSEEVENTF_MOVE = &H1
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) 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 ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
'不知道Findcolor能不能在Click指令内运行[尝试过hDC = GetDC(0)显示限制或不支持]
'请问只能单独运行嘛?加入到循环中可以吗(还未尝试)
'学校的书里api的用法没有关于此方面的教学(大部分代码是一位大佬告知的)
Private Sub Findcolor(ByVal r As Byte, ByVal g As Byte, ByVal b As Byte)
Dim x As Long, y As Long, col As Long
Dim hDC As Long, w As Long, h As Long
hDC = GetDC(0)
w = Screen.Width / Screen.TwipsPerPixelX
h = Screen.Height / Screen.TwipsPerPixelY
Findcolor 255, 0, 0'调用findcolor函数时传入需要查找的颜色RGB分量的位置和用法不知道对不对
For x = 0 To w - 1'获取全屏像素不是很理解,请问如何改成范围的
For y = 0 To h - 1'请问这个1是屏幕最大的宽和高吗,0.5w和0.5h就是缩减一半嘛
col = GetPixel(hDC, x, y)'x,y固定对比获取最左上角的像素颜色的坐标
If col = RGB(r, g, b) Then
SetCursorPos x, y'不知道怎么用指针指令使用获取到的颜色坐标
End If
Next
Next
ReleaseDC 0, hDC
End Sub
'谢谢
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
visual basic 6
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
MarkHan_ 2023-02-25 03:47关注该回答引用GPTᴼᴾᴱᴺᴬᴵ
这段代码主要实现的功能是在全屏中查找指定的颜色,并将鼠标指针移动到第一个匹配的像素点处。首先,Findcolor 函数接收三个参数,分别是需要查找的颜色的 RGB 分量值。在函数内部,使用 GetDC(0) 获取屏幕的设备上下文句柄,然后计算出屏幕的宽度和高度,接着通过两个嵌套的循环遍历屏幕上的所有像素点,使用 GetPixel 函数获取每个像素点的颜色值,并将其与传入的颜色值进行比较。如果找到了匹配的颜色,使用 SetCursorPos 函数将鼠标指针移动到该像素点的位置。
至于你的问题:
- Findcolor 函数调用自身是没有意义的,因为这样会导致函数陷入死循环。正确的做法是将需要查找的颜色作为参数传入函数。
- GetDC(0) 获取的是整个屏幕的设备上下文句柄,你需要通过循环遍历获取屏幕上的所有像素点,因此没有办法使用限制或不支持的方式来获取指定范围内的像素颜色。如果你只想获取某个窗口的像素颜色,可以使用 FindWindow 和 GetWindowDC 函数来获取窗口的设备上下文句柄。
- w 和 h 分别表示屏幕的宽度和高度,0 和 1 分别表示屏幕最左上角的坐标和最右下角的坐标。如果你想缩小搜索范围,可以将 w 和 h 分别除以一个缩小比例,比如将其除以 2 表示只搜索屏幕的一半。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容关注码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
想学好vb6的一只小白 2023-02-25 04:44请问载入了setcursorpos后获取到了坐标怎么用setcursorpos写出来呢,setcursorpos我只了解到直接写入坐标
赞回复编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
回复按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2016-03-13 08:05回答 1 已采纳 ``` Private Sub Form_KeyPress(KeyAscii As Integer) if keyascii = vbkeyright then keyasc
- 2016-03-06 03:46回答 1 已采纳 自己写一个,比如保留2位: x = 1.2345 x = Int(x * 100 + 8) / 100
- 2016-03-13 20:05回答 1 已采纳 http://www.codefans.net/articles/567.shtml
- 2023-12-03 13:31Visual Basic 6.0应用编程150例
- 2022-08-26 11:33回答 1 已采纳 支付宝个人支付接口(蚂蚁金服官方接口)_wuxiaobo37的博客-CSDN博客_支付宝个人支付接口 原来支付宝是有个人支付接口的,实时直
- 2016-03-15 21:42回答 1 已采纳 用masked textbox控件。
- 2022-02-26 02:09回答 2 已采纳 1973年,美国DEC公司的小型机PDP装上了BASIC语言。因为害怕人们难以理解“编译”这一概念,他们研制了BASIC的解释程序,用它代替BASIC的编译程序。至此,BASIC语言可通过编译或解释两
- 2024-12-18 08:50内容概要:文章详细介绍了Visual Basic(VB)的基本特点和主要技术点,涵盖了VB的基础语法、面向对象编程、控制结构、数据类型、数组、函数与过程等内容,并深入解析了高级特性,包括LINQ查询、委托与事件、异步编程...
- 2022-06-10 13:50回答 2 已采纳 开始菜单中可以找到visualstudio,打开installer,修改就行了
- 2024-12-14 14:56内容概要:本文全面介绍了Visual Basic这一面向对象编程语言的特点、历史及其作为初学者友好型工具的优势。文章具体指导了环境搭建(安装Visual Studio),并通过‘Hello World’案例演示如何从零创建项目、设计界面...
- 2018-09-07 01:51本书是世界级VB专家Rod Stephens奉献给广大程序员的编程心得与忠告,是学习Visual Basic 2008编程绝佳的参考手册。本版对上一版进行了大量的扩充,新增了有关WPF、LINQ、UAC安全、WCF等方面的内容。书中的基础部分...
- 2024-04-16 09:20Visual Basic(简称VB)是一种由微软公司开发的编程语言,最初是为了简化BASIC语言的开发过程而创建。Visual Basic 5.0是VB的一个重要版本,它提供了一个完整的Windows应用开发环境,使得开发Windows应用程序变得...
- 2024-10-19 06:20VisualBasic 内容概要:本文介绍了 Visual Basic (VB) 这门由微软开发的事件驱动编程语言的主要特点,其中包括易学易用的语法和直观的可视化开发环境,以及其在开发桌面应用程序、数据库应用和自动化脚本方面的具体...
- 2024-09-28 07:17该项目是一款基于Visual Basic的高级编程技术设计源码,总计包含326个文件,涵盖了74个基础库文件、34个类文件、33个项目文件、15个窗体...这些代码资源为深入学习和实践Visual Basic编程的高级技巧提供了丰富的素材。
- 没有解决我的问题, 去提问
问题事件
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司