当前位置:编程学习 > VB >>

发送鼠标消息到隐藏窗口的问题!

大侠们好,我想实现这个模拟功能,不知道该如何做呢?

一个程序a.exe,隐藏运行的,我想模拟鼠标点击它的指定位置。

对我来说,此问题的难点是,它是隐藏的,却要点击它界面上的指定坐标。


这样能行吗?
1.获取它的句柄;
2.将要点击的指定屏幕坐标转化为它的窗口坐标
3.发送点击消息
小弟拙见,大侠莫见笑,请指教哈~ --------------------编程问答-------------------- up --------------------编程问答-------------------- 试一下先使用EnumWindows遍历窗口,再使用GetWindowText和GetClassName判断窗口类或名称是否库你需要你窗口,如果是,则可使用SendMessage发送消息即可。 --------------------编程问答-------------------- 顶上去。。。 --------------------编程问答-------------------- 继续顶上去,做过vb模拟操作的大侠,麻烦不吝赐教下下哟~ --------------------编程问答-------------------- 把屏幕坐标转换为窗口坐标的时候,坐标Y值为负值,转换为16进制过后就是8位了,怎么办呢?
z.y=FFFFFFF4
发送到的坐标高字节表示Y值,低字节表示X值,可这是负值,应该怎么转换呢? --------------------编程问答-------------------- up --------------------编程问答-------------------- PostMessage a, WM_LBUTTONDOWN, 0&, &HFFF401F7
PostMessage a, WM_LBUTTONUP, 0&, &HFFF401F7
发送了个点击消息给这窗口关闭的那个叉叉按钮,却没反应。。。不能通过这样模拟关闭吗?
我不想通过mouse_event这样的模拟点击,想通过postmessage来实现模拟,可以吗? --------------------编程问答--------------------
哪位能给段能运行成功的代码,我再加一百分给他。。。


大侠,快来啊。。。。

给我段用postmessage发送鼠标消息到指定坐标点的坐标的代码。。。谢啦

前提条件是,知道此点的屏幕坐标。。。
--------------------编程问答-------------------- 帮顶.....路过..... --------------------编程问答-------------------- 我说下我的思路吧,实在找不到除了啥问题了,真恼人。。。
首先我打开一个空白记事本,用抓坐标工具找到它右上角的叉叉按钮的坐标,为1210,165
然后
Private Type POINTAPI ' 声明数据类型
x As Long
y As Long
End Type

sub main()
Dim z As POINTAPI ' 变量
Dim a As Long
Dim pp As Long
a = FindWindow(vbNullString, "无标题 - 记事本")
ScreenToClient a, z
pp = z.y * 65536 + z.x
PostMessage a, WM_LBUTTONDOWN, 0&, pp
PostMessage a, WM_LBUTTONUP, 0&, pp
end sub

就是这样了,请问下,到底是哪儿不对呢? --------------------编程问答-------------------- 该声明的都是声明了的,大侠们也别指这个问题了哈,我没写上而已 --------------------编程问答-------------------- UP --------------------编程问答-------------------- 一、不要使用PostMessage,而是SendMessage。
二、不要使用WM_LBUTTONDOWN,而是WM_COMMAND,wParam参数表示鼠标位置。 --------------------编程问答-------------------- 大侠,谢谢哈,我先去试试看 --------------------编程问答-------------------- SendMessage a, WM_COMMAND, pp, ByVal 0& 
这样吗?
试了下,不行。。。
天。。
脑袋晕了 --------------------编程问答-------------------- 自己做的一个窗体,对自己最大化都不行。。。哎呀。。。真的烦躁了。。。
SendMessage Me.hwnd, WS_MAXIMIZE, 0&, ByVal 0& --------------------编程问答-------------------- 难道postmessage和sendmessage发送的很多消息,连记事本都不能处理吗?
甚至是程序自己都不能?
为什么上面那个对自己最大化都不行

哎,消息这东西真麻烦 --------------------编程问答-------------------- 再UP一个,等待高手精辟的解释 --------------------编程问答-------------------- 专门给你试了一下,可行。
需要先明确的是,在Windows里面没有你所谓的“点击”消息,只有鼠标按下、鼠标松开、双击三种基本的鼠标消息。
所以你要模拟点击,可以连续发送一个鼠标按下和一个鼠标松开消息。
发送消息用SendMessage()函数
参数:
[Msg]
WM_LBUTTONDOWN  鼠标左键按下
WM_LBUTTONUP         鼠标左键松开
[wParam]
0即可
[lParam]
坐标,高16位y,低16位x --------------------编程问答-------------------- 还有,sendmessage中wparam要用ByVal 0哦 --------------------编程问答-------------------- 现在这个都给封了哎 --------------------编程问答-------------------- 我以前做到过,几年不编程了,忘了,不过有相关工具和源码,思路也是寻遍遍历窗口
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,