VS按键响应

一、实际按键响应

参考http://m.blog.csdn.net/blog/marginmou/27212719

添加PreTranslateMessage方法,然后

BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	if(pMsg->message == WM_KEYDOWN)   
	{
		switch (pMsg->wParam)
		{//只响应回车和空格键
		case VK_SPACE:
		case VK_RETURN:
			{
				OnBtnRead();
				break;
			}
			//其它按键响应
		}
		return true;//不再响应其它按键(很重要)
	}
	return CDialog::PreTranslateMessage(pMsg);
}

VS2008下添加PreTranslateMessage
1,类视图中找到需要添加PreTranslateMessage函数的类,
2,右键打开属性
3,选中属性的重载
4,找到PreTranslateMessage,并添加
5,写响应函数(如上)


二、模拟按键响应

参考:

http://blog.csdn.net/yizhou2010/article/details/6178115

http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx

1、使用keybd_event,(不建议使用)

	//模拟Ctrl+V粘贴功能,有时候,直接运行exe不能实现
	keybd_event(VK_CONTROL, 0, 0, 0);
	keybd_event('V', 0, 0, 0);
	keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
	keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

2、使用SendInput实现

	//使用SendInput实现
	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_CONTROL;
	input[1].ki.wVk = input[3].ki.wVk = 'V';
	// 释放按键,这非常重要 
	input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
	SendInput(4, input, sizeof(INPUT));




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值