标题:求模拟键盘的方法
只看楼主
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
 问题点数:0 回复次数:17 
求模拟键盘的方法
现在想做一个程序就是要模拟两个动作,一个动作就是模拟Ctrl+V键按下,(即是粘帖键)
第二个功能就是:模拟鼠标作一次点击动作。

希望收到Ctrl+V 和鼠标点击 动作的均为当前的活动窗口, 这该如何做呢???


比如当前的活动窗口为:程序1, 现在想做一个程序起名为程序2吧,让程序2在后台运行,让它一直模拟两个动作,第一个动作就是Ctrl+V第二个动作就是点击一次鼠标左键。这两个动作的接收者为程序1


为实现这样的功能需要怎么做呢?以前仅是见过键盘钩子记录键盘的,现在想模拟键盘按下应该如何做呢?
急着用呀,各位大侠们帮一下忙吧?谢谢你们了!
搜索更多相关主题的帖子: 鼠标 键盘 动作 模拟 
2006-10-14 19:42
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
得分:0 
????????????????????????????????????

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-14 23:20
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
程序1和程序2 ???

是两个进程吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-15 08:58
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
得分:0 
上面的问题已解觉,新问题又产生了,,,唉。。

现在我要做一个动作就是让鼠株定位到 系统的工具栏上,然后自动的点击右键,再然后自动的按键盘上的C字母键,想通过这样来关闭程序,但我发现实现不了,因为用下面的代码时它把C好像处理成字符了,代码如下:
SetCursorPos(343, 757); //点击右键 此处是系统的工具栏上的一个位置,
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
::Sleep(1000);
keybd_event( 99, //再按C
0,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
keybd_event( 99,
0,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, //松掉C
0);


我发现如果右键关闭的位置是记事本时,它会在记事本里打出一个C,,,说明系统没有把C解释成那种系统类型的键,仅解释成ASCII了,这该如何处理??高手们帮忙呀。。

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-16 09:21
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
得分:0 
这个问题有2种情况:
1.消息发到记事本上了,没发到右键菜单上啊,哈哈。
2.菜单还没弹出来,字符就已经发了。

[此贴子已经被作者于2006-10-16 9:40:09编辑过]


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-10-16 09:29
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
得分:0 
如果你只想实现关闭,为什么不模拟alt+F4???

我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-10-16 09:31
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
得分:0 
以下是引用Bekky在2006-10-16 9:29:08的发言:
这说明一个问题,消息发到记事本上了,没发到右键菜单上啊,哈哈

问题是如何处理这个事情呢????
怎么处理才能实现按下的键发给系统呢?估计只要把后面的按键C 用代码替换成向系统发一个按键C应该就可以了,问题是如何实现呢?


写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-16 09:33
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
得分:0 
以下是引用Bekky在2006-10-16 9:31:57的发言:
如果你只想实现关闭,为什么不模拟alt+F4???

因为我的关闭的位置具有不确定性,也就是每隔1秒就在这个位置实现一下关闭,但此时这个位置也可能没有任务,如果没有任务的话ALT+F4就会调出关闭系统的对话框


写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-16 09:35
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
得分:0 
那就不要这样子做,这样做,缺点太大了,用sendmessage把消息发到固定的窗口上,如果窗口不存在就,不做动作。

我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-10-16 09:42
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
可不可以在右键消息发送过去以后,获取最上面一层窗口的句柄,然后想这个窗口发送‘C’?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-16 09:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-96358-1-1.html




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

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