首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • PostMessage向其他窗体发送鼠标单击事件,没反应 [已结贴,结贴人:etie]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-11-29 00:49:24 楼主
    A程序只有一个窗体和一个按钮,点击按钮或者窗体会出现不同内容的对话框,A程序运行后自动最小化。
    B程序有一窗体一按钮一文本框,要实现的功能是点击按钮后向A程序发送鼠标单击事件,让A程序弹出对话框
    当然A程序运行在先

    以下是B程序的代码,运行并点击按钮后A程序并没有弹出对话框来(不管A是否是最小化都没弹出来,-__-!~~~~)

    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_LBUTTONUP = &H202

    Private Sub Command1_Click()
        Dim hwnd As Long
        hwnd = FindWindow(vbNullString, "Test")    '获得A程序的句柄
        Text1.Text = hwnd    '观察是否获得A程序的句柄
        PostMessage hwnd, WM_LBUTTONDOWN, 0, (10 And &HFFFF) + (20 And &HFFFF) * &H10000
        Sleep 100
        PostMessage hwnd, WM_LBUTTONUP, 0, (10 And &HFFFF) + (20 And &HFFFF) * &H10000
    End Sub
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2007-11-29 00:59:001楼 得分:3
    A程序的10,20处就是你要点的按钮吗?

    延时长了一点吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-29 08:55:432楼 得分:3
    应该用FindWindowEx再向下找到按钮的句柄,然后对该句柄发消息。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fengk20
    • 等级:
    发表于:2007-11-29 15:08:503楼 得分:3
    postmessage 有没用对?
    PostMessage  hwnd,  WM_LBUTTONUP,  0,  (10  And  &HFFFF)  +  (20  And  &HFFFF)  *  &H10000 ?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-11-29 16:21:454楼 得分:0
    A程序是这样的,一个小窗体,上面放了一个几乎和窗体差不多大的按钮

    不知道是用A程序按钮的句柄还是窗口的句柄.


    回复fengk20  发送鼠标DOWN和UP的语句应该是一样的,这个不会有问题的.

    各位大哥谁来指点一下啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-29 17:18:515楼 得分:3
    消息要发到按钮上,发到Form上是没用的。
    鼠标点击某个位置应该由哪个hwnd接收消息是由系统自动完成的,Form收到一个点击事件不会做:查看该位置是哪个按钮然后将消息传递给该按钮。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-11-29 20:30:476楼 得分:0
    但是我窗体上也有CLICK事件的触发的啊,为什么窗体没有收到鼠标点击的消息呢?

    如果要获得A程序的按钮的HWND应该如何做呢,请详细指点
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-29 21:52:487楼 得分:3
    把Sleep  100 去掉试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-11-29 22:46:348楼 得分:0
    阿勇兄,SLEEP加上或者去掉我都试过的,没什么区别
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-30 09:10:439楼 得分:2
    编译成exe试试。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-11-30 14:41:1310楼 得分:0
    赵虎兄,这个我也想到了

    谁能给我一个简单的例子啊Email:etie323@sina.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-11-30 16:47:1211楼 得分:3
    哪个测试程序是不是VB编写?你可以在 mousedown 事件中编写代码试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2007-11-30 22:21:4112楼 得分:0
    再顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • etie
    • 等级:
    发表于:2007-12-01 17:06:0713楼 得分:0
    我最终的结果是要CLICK而不是MOUSEDOWN
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2007-12-01 20:37:1014楼 得分:0
    如果不用mouse_event,模拟点击窗体,真得是很难实现呀
    期待高手
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    发表于:2007-12-02 15:34:2815楼 得分:0
    同上....
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved