VB 鼠标点击后触发了什么
我不是要模拟鼠标按键什么的,我的意思是说,比如平常我们移动鼠标,那么这个“移动”一定是要给系统发一个信息,点击鼠标也是一样,当我们点击任何东西的时候,也是要给系统发一个信...
我不是要模拟鼠标按键什么的,我的意思是说,比如平常我们移动鼠标,那么这个“移动”一定是要给系统发一个信息,点击鼠标也是一样,当我们点击任何东西的时候,也是要给系统发一个信息,我想知道这个信息,是不是可以在VB中实现。也就是这样的实现效果:“当我们移动鼠标到桌面-我的电脑上双击的时候,则系统打开我的电脑,而我想要的效果是:鼠标没有移动到桌面我的电脑,而用程序来向系统发出:“在桌面我的电脑收到双击的信息”然后执行。整个过程鼠标没有动。
明白么?我的目的不是要用程序来打开我的电脑,而是需要这个消息及这个消息的用法。 展开
明白么?我的目的不是要用程序来打开我的电脑,而是需要这个消息及这个消息的用法。 展开
展开全部
你说的这个是模拟鼠标操作,你的意思不是用命令来打开“我的电脑”,而是模拟鼠标操作双击来打开我的电脑。很容易做到。但用VB来做,非常偶尔会出现些系统问题。
首先我们要知道windows的基本机理,windows是一种消息机制,所有处理信息都作为消息来传递给系统核心。既然知道这样的机制,那么就可以模拟出这样的机制。
两种方法,一种是可以模拟键盘的VB自带的方式
Call SetForegroundWindow(MainFormHwnd)
Call ShowWindow(MainFormHwnd, SW_SHOWMAXIMIZED)
SendKeys ("%{r}")
MainFormHwnd为需要操作的窗体的句柄,桌面也有句柄,SW_SHOWMAXIMIZED让这个窗体最大化,SetForegroundWindow让这个窗体具有焦点。
sendkeys 发送相当于Alt + r的模拟键盘指令给这个窗体
关于SW_SHOWMAXIMIZED你可以查询API查询工具的常数,来查询并且在程序里定义声明常数。
这是一种方法
但是需要看个体的计算机的情况,如果设置焦点失败,那么就会出现一些异常的问题
第二种方法,就是使用API函数,向指定窗体发送消息
主要函数如
PostMessage(hwnd, WM_CLOSE, 0&, 0&)或者
Sendmessage(hwnd, WM_CLOSE, 0&, 0&)
WM_CLOSE是关闭消息,你仍可以查询API查询工具来找对应的常数值,并且在程序中声明定义。
如
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_MOUSEMOVE = &H200
看这些常数名,想必你就能明白这些是做什么的了
当然在这之前,你需要先获取要操作窗体的句柄,如findwindow,findwindowEx,enumwindow
等等,相关一类的api函数,你也可以查询得到
如果需要操作子窗体,那么需要使用一种叫做回调函数的api来搜索你需要的窗体,一般是以title来确定所需要的窗体
首先我们要知道windows的基本机理,windows是一种消息机制,所有处理信息都作为消息来传递给系统核心。既然知道这样的机制,那么就可以模拟出这样的机制。
两种方法,一种是可以模拟键盘的VB自带的方式
Call SetForegroundWindow(MainFormHwnd)
Call ShowWindow(MainFormHwnd, SW_SHOWMAXIMIZED)
SendKeys ("%{r}")
MainFormHwnd为需要操作的窗体的句柄,桌面也有句柄,SW_SHOWMAXIMIZED让这个窗体最大化,SetForegroundWindow让这个窗体具有焦点。
sendkeys 发送相当于Alt + r的模拟键盘指令给这个窗体
关于SW_SHOWMAXIMIZED你可以查询API查询工具的常数,来查询并且在程序里定义声明常数。
这是一种方法
但是需要看个体的计算机的情况,如果设置焦点失败,那么就会出现一些异常的问题
第二种方法,就是使用API函数,向指定窗体发送消息
主要函数如
PostMessage(hwnd, WM_CLOSE, 0&, 0&)或者
Sendmessage(hwnd, WM_CLOSE, 0&, 0&)
WM_CLOSE是关闭消息,你仍可以查询API查询工具来找对应的常数值,并且在程序中声明定义。
如
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_MOUSEMOVE = &H200
看这些常数名,想必你就能明白这些是做什么的了
当然在这之前,你需要先获取要操作窗体的句柄,如findwindow,findwindowEx,enumwindow
等等,相关一类的api函数,你也可以查询得到
如果需要操作子窗体,那么需要使用一种叫做回调函数的api来搜索你需要的窗体,一般是以title来确定所需要的窗体
展开全部
桌面快捷方式都是指向一个可执行的文件 ,所以如果你不想使用模拟鼠标事件 那就只能通过Shell方式或用APi函数ShellExecute打开快捷方式指向的目标
Shell "EXPLORER.EXE /n, /e, ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" 或者
ShellExecute Me.hWnd, "open", "explorer", "::{2227A280-3AEA-1069-A2DE-08002B30309D}", vbNullString, SW_SHOWNORMAL
鼠标模拟单击方法
使用APi getCursor SetCursor mouse_event
Getcursor 用于在你不知道图标坐标时返回一个坐标
建立一个临时变量存放当前鼠标 X,y
Setcursor 设置坐标到快捷方式上
Mouse_event 模拟一次双击事件
setCursor 设置坐标到原来坐标
Shell "EXPLORER.EXE /n, /e, ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" 或者
ShellExecute Me.hWnd, "open", "explorer", "::{2227A280-3AEA-1069-A2DE-08002B30309D}", vbNullString, SW_SHOWNORMAL
鼠标模拟单击方法
使用APi getCursor SetCursor mouse_event
Getcursor 用于在你不知道图标坐标时返回一个坐标
建立一个临时变量存放当前鼠标 X,y
Setcursor 设置坐标到快捷方式上
Mouse_event 模拟一次双击事件
setCursor 设置坐标到原来坐标
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你首先需要HOOK,将获取鼠标信息的VB程序载入内存,当鼠标有消息发送给系统时,VB程序就先进行拦截,并采取相应的操作,之后再将消息发送给系统
追问
老大,能否更详细点啊?好人做到底吧,大哥。。有代码更好,我没装杀毒软件,什么钩子都可以接收的。。。能给我发个代码么?谢谢啦
追答
关于鼠标HOOK的代码 baidu 一下多得是
http://www.codefans.net/soft/5123.shtml 这里有源代码下载,也是搜索到的,你应该能用的上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
知道VB为什么容易吗?因为微软当年把内面的东西全部封起来,也就是把你现在所问的问题都封起来,只留下一个出口给大家用。所以,如果想学习内面的东西,还是要学习《Windows程序设计》这本书。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思有点绕,应该是可以的,比如VB里面的show这个命令,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用sendmassage系列吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询