mfc小程序 监控拦截键盘输入

CT8100 2017-10-10 04:45:07
要写一个简单的小程序,这个程序在后台运行,程序可以监控键盘的输入,如果键盘输入特定字符,程序能够拦截。有没有大兄弟能给点思路唉。
...全文
981 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT8100 2017-10-13
  • 打赏
  • 举报
回复
引用 9 楼 u014457656 的回复:
自己做个记录啊, 每个输入做个记录判断
问题解决了~我直接拦住了所有输入,然后不符合规格,再模拟键盘输入将数据传送原来要去的地方。
CT8100 2017-10-12
  • 打赏
  • 举报
回复
这10位数据将在0.5s中输入进来....
CT8100 2017-10-12
  • 打赏
  • 举报
回复
引用 5 楼 u014457656 的回复:

// 安装底层键盘钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, NULL);

// 底层键盘钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	// 拦截键盘的某些按键, 如果 g_bDisableKeyboard 为 TRUE 则拦截整个键盘按键
	if (nCode >= HC_ACTION)
	{
		KBDLLHOOKSTRUCT *pStruct = (KBDLLHOOKSTRUCT *)lParam;
		if (g_bDisableKeyboard)
			if (g_lpfnKeyboardProc(wParam, pStruct))
			{
				return CallNextHookEx(g_hHook, nCode, wParam, lParam);
			}
			else
			{
				return true;
			}

		LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
		for (int i = 0; i < g_nLength; i++)
		{
			if (pStruct->vkCode == *tmpVirtualKey++)
				if (g_lpfnKeyboardProc(wParam, pStruct))
				{
					return CallNextHookEx(g_hHook, nCode, wParam, lParam);
				}
				else
				{
					return true;
				}
		}

	}

	// 调用系统中的下一个钩子
	return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
拦截这个我知道,但是这个拦截不是一个字母一个字母拦截的么,比如我这要拦截234打头的10位数据,如果开头不是234打头,就不做拦截,这个有什么好方法实现呀
一步一光年 2017-10-12
  • 打赏
  • 举报
回复

// 安装底层键盘钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, NULL);

// 底层键盘钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	// 拦截键盘的某些按键, 如果 g_bDisableKeyboard 为 TRUE 则拦截整个键盘按键
	if (nCode >= HC_ACTION)
	{
		KBDLLHOOKSTRUCT *pStruct = (KBDLLHOOKSTRUCT *)lParam;
		if (g_bDisableKeyboard)
			if (g_lpfnKeyboardProc(wParam, pStruct))
			{
				return CallNextHookEx(g_hHook, nCode, wParam, lParam);
			}
			else
			{
				return true;
			}

		LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
		for (int i = 0; i < g_nLength; i++)
		{
			if (pStruct->vkCode == *tmpVirtualKey++)
				if (g_lpfnKeyboardProc(wParam, pStruct))
				{
					return CallNextHookEx(g_hHook, nCode, wParam, lParam);
				}
				else
				{
					return true;
				}
		}

	}

	// 调用系统中的下一个钩子
	return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
CT8100 2017-10-12
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
可以试试 SetWindowsHookEx WH_KEYBOARD_LL
我知道hook可以监控和拦截键盘消息,但是怎么做到拦截后,再将键盘的消息原样返回呢
CT8100 2017-10-12
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
可以试试 SetWindowsHookEx WH_KEYBOARD_LL
好的好的~我试试看用钩子。
一步一光年 2017-10-12
  • 打赏
  • 举报
回复
自己做个记录啊, 每个输入做个记录判断
CT8100 2017-10-12
  • 打赏
  • 举报
回复
自己顶以下~各位大老爷支点招吧~
zgl7903 2017-10-11
  • 打赏
  • 举报
回复
可以试试 SetWindowsHookEx WH_KEYBOARD_LL
CT8100 2017-10-10
  • 打赏
  • 举报
回复
自顶以下,这个可不可以在键盘缓冲区里做文章?问题我该怎么找到键盘输入的缓冲区,因为教研完成前,程序要霸占这个输入数据所以我该怎么设计这个算法。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧