查看单个帖子
旧 2007-11-14, 09:14 AM   #5
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 回复: 如何用用程序模拟键盘来控制 Media Player 7?

希望能对你有所帮助,转贴:
模拟键盘和鼠标输入
如果它不支持你需要的消息和方法,最简单的解决之道是键盘和鼠标输入模拟。例如,你可以使用Tab模拟转移到期望的控件。

使你做到这一点的函数是SendInput,它是一个一般的USER API。SendInput需要三个参数:要执行的键盘和鼠标动作的个数,INPUT结构数组,INPUT结构数组的大小。每个INPUT元素详细描述了一个要执行的动作。注意,按下一个按钮接着释放它是两个不同的动作,因此要建立两个INPUT元素。在例程中,SendInput函数用于模拟关闭Find: All Files 对话框的Alt-F4键盘序列:

INPUT input[4];

memset(input, 0, sizeof(input));



input[0].type = input[1].type = input[2].type =

input[3].type = INPUT_KEYBOARD;

input[0].ki.wVk = input[2].ki.wVk = VK_MENU;

input[1].ki.wVk = input[3].ki.wVk = VK_F4;

//接下来释放它,这一点很重要。

input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;

input[0].ki.time = input[1].ki.time =

input[2].ki.time = input[3].ki.time = GetTickCount();

SendInput(4, input, sizeof(INPUT));

在这个代码片断中,input[ ].type = INPUT_KEYBOARD表明要模拟键盘输入,input[ ].ki.dwFlags和input[ ].ki.wVk表明要执行的动作以及此动作的受键。特别要注意下面的语句:

input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;

没有这条语句,按下的键永远不会自动释放。
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖