通常在自己的APP里的密码框,验证码框需要屏蔽复制,粘贴,怎么办呢?
有三种方法:
1 hook 此方法是最完全的,但由于hook是全局的,容易影响到其它代码。
2 子类化文本框, 重写OnPaste函数,拦截WM_Paste消息
3 在PreTranslateMessage里判断键盘扫描码和虚拟码
前两种方法都不能在一个函数里搞定,比较麻烦。这里就介绍第三个方法,具体代码如下:
[cpp] view plain copy
-
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
-
{
-
if (pMsg->message == WM_APPCOMMAND) return TRUE; // win 2000 以上api, 多媒体键盘, 如 Fn + F1, f2, ...
-
-
if (pMsg->message == WM_RBUTTONDOWN) return TRUE;
-
-
if (pMsg->message == WM_KEYDOWN)
-
{
-
while (pMsg->wParam >= VK_F1 && pMsg->wParam <= VK_F24) return TRUE;
-
-
switch (pMsg->wParam)
-
{
-
case VK_CAPITAL:
-
//0x8000 是键有否按下
-
//0x0001 是键的翻转状态
-
if (GetKeyState(VK_CAPITAL) & 0x0001)
-
{
-
GetDlgItem(IDC_STC_CAPS)->ShowWindow(TRUE);
-
GetDlgItem(IDC_STC_CAPS)->SetWindowText(_T("大写状态己开启!"));
-
}
-
else GetDlgItem(IDC_STC_CAPS)->ShowWindow(FALSE);
-
break;
-
// ctrl + v, shift + ins, 鼠标右键paste, 菜单键(VK_APPS)paste等
-
case VK_LAUNCH_APP1:
-
case VK_LAUNCH_APP2:
-
case VK_LCONTROL:
-
case VK_RCONTROL:
-
case VK_SHIFT:
-
case VK_LSHIFT:
-
case VK_RSHIFT:
-
case VK_MENU:
-
case VK_LMENU:
-
case VK_RMENU:
-
case VK_LWIN:
-
case VK_RWIN:
-
case VK_RBUTTON:
-
case VK_EXECUTE:
-
case VK_RETURN:
-
case VK_SNAPSHOT:
-
case VK_INSERT:
-
case VK_APPS:
-
this->SetFocus(); // 让文本框失去焦点,就无法弹出菜单栏
-
return TRUE;
-
case 'V':
-
static int n = 0; // 第一、二次可以复制
-
while (++n > 2 && (::GetKeyState(VK_CONTROL) & 0x8000)) return TRUE;
-
break;
-
}
-
}
-
-
while (::GetKeyState(VK_MENU) & 0x8000)
-
{
-
return TRUE; // Alt 不会响应 WM_KEYDOWN
-
}
-
-
return CDialog::PreTranslateMessage(pMsg);
-
}
以上只是大体的流程,还有考虑不周的地方,欢迎补充。
From: http://blog.csdn.net/tiandyoin/article/details/39474569
分类:
MFC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架