| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2440 人关注过本帖
标题:请教C调用WIN32 API控制鼠标的问题
只看楼主 加入收藏
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请教C调用WIN32 API控制鼠标的问题
补充:XP上正常,只在WIN7上有这个情况。
------------------------------------------
最近在学习如何用C调用WIN API控制鼠标,于是写了下面这段小程序,编译运行都正常,但现在有个问题实在不明白,特来请教各位大佬:
运行程序后,能正常移动到桌面左上角,并左击一次左上角的图标(一个文件夹),但不能按原意双击打开,也就是看起来像两次左击只有第一次有效,第二次就无效了。但如果这里是别的东西,比如C编辑器、记事本什么的,就能正确的实现双击,请问这是为什么?
试过在两次单击之间加入一点延迟,但还是无法实现双击。
系统是WIN7。谢谢各位!
程序如下:
程序代码:
#include <windows.h>
int main(int argc, char *argv[])
{
    SetCursorPos(20, 20);
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
    return 0;
}


[此贴子已经被作者于2017-10-11 10:10编辑过]

搜索更多相关主题的帖子: 调用 API 控制 鼠标 双击 
2017-10-10 11:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
没明白你的意思

那个控制台程序一般也就是执行一次就K.O了 不会连续被执行的

DO IT YOURSELF !
2017-10-10 15:17
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
试试:
    Sleep(500);
    SetCursorPos(20, 20);
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
2017-10-10 15:25
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
收藏
得分:0 
回复 3楼 吹水佬
不行。。。。。。。。
我在XP上试了,正常,只在WIN7上有这个情况,不知道是怎么会事儿。
2017-10-11 10:09
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
收藏
得分:0 
回复 2楼 wp231957
程序里执行了两次左击,其实就是模拟一次双击。
2017-10-11 10:10
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用sunus在2017-10-11 10:09:22的发言:

不行。。。。。。。。
我在XP上试了,正常,只在WIN7上有这个情况,不知道是怎么会事儿。

我是在Win10测试正常。
或者试试用SendInput()
2017-10-11 11:01
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
桌面窗口是否被拦截了,关掉防火墙、360之类的东西试试。
2017-10-11 11:23
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
收藏
得分:0 
回复 7楼 吹水佬
没有拦截。如果双击的地方是其他软件的窗口,比如编辑器、第三方浏览器之类的,就能正常双击,只有在双击Expleror时会出问题,比如桌面、WINDOWS资源管理器。
我只是想知道为什么。
2017-10-12 14:39
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
以下是引用sunus在2017-10-12 14:39:17的发言:

没有拦截。如果双击的地方是其他软件的窗口,比如编辑器、第三方浏览器之类的,就能正常双击,只有在双击Expleror时会出问题,比如桌面、WINDOWS资源管理器。
我只是想知道为什么。

有无拦截要试过才知,可以在一台只装了windows的裸机试试。
一些类似防这防那的软件,桌面、资源管理器这些都是重点拦截对象。
如果拦截的手法是用 hook API,mouse_event肯定是跑不了。
2017-10-12 15:35
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
收藏
得分:0 
回复 9楼 吹水佬
有道理,我找台机器试试。
2017-10-13 15:18
快速回复:请教C调用WIN32 API控制鼠标的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026334 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved