如何屏蔽ctrl + v 粘贴事件,鼠标右键粘贴事件
通常在自己的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
如何屏蔽ctrl + v 粘贴事件,鼠标右键粘贴事件的更多相关文章
- Javascript和jquery事件--鼠标右键事件,contextmenu
右键点击触发是浏览器的默认菜单事件contextmenu,你可以选择阻止它,使用event.preventDefault();或者return false;. 想要定义右键点击事件,关注的是mouse ...
- Vue 框架-02-事件:点击, 双击事件,鼠标移上事件
Vue 框架-02-事件:点击, 双击事件,鼠标移上事件 1.单击事件:v-on:click 源码 app2.js : //实例化 vue 对象 new Vue({ //注意代码格式 //el:ele ...
- JS事件 鼠标移开事件(onmouseout)鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。
鼠标移开事件(onmouseout) 鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序. 当把鼠标移动到"登录"按钮上,然后再移开时,触发onmouseout ...
- Javascript和jquery事件-鼠标移入移出事件
javascript使用mouseover和mouseout,只在css中支持hover jquery支持mouseover和mouseout,封装了mouseenter.mouseleave事件函数 ...
- richtextbox Ctrl+V只粘贴纯文本格式
只能粘贴剪切板中的TXT内容 并且 不能改变 剪切板的内容1 当用户按下Ctrl+V屏蔽系统的粘贴功能,然后添加自己的功能2019年12月19日 19:34:38 private void richT ...
- jquery鼠标右键事件
$('body').live("mousedown",function(e){ $('body').bind("contextmenu",function(e) ...
- 解决vim中鼠标右键无法复制的问题
转:http://www.cnblogs.com/jianyungsun/archive/2011/03/19/1988855.html 这是我的vim配置文件:jeffy-vim-v2.4.tar ...
- word2010 ctrl v not work
终于解决了word 2010中ctrl v 不能用的问题. 0 word ctrl c 可以用,右键粘贴可以正常使用,快捷键ctrl v不能用. 1 在excel中ctrl c 和ctrl v,可以正 ...
- 13-vim-复制和粘贴-01-复制和粘贴
1.vi中提供有一个被复制文本的缓冲区 复制命令会将选中的文字保存在缓冲区. 删除命令删除的文字会被保存在缓冲区 在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置. vi中的文本缓冲区同 ...
随机推荐
- [Go] 通过 17 个简短代码片段,切底弄懂 channel 基础
关于管道 Channel Channel 用来同步并发执行的函数并提供它们某种传值交流的机制. Channel 的一些特性:通过 channel 传递的元素类型.容器(或缓冲区)和 传递的方向由“&l ...
- Programming 2D Games 读书笔记(第六章)
http://www.programming2dgames.com/chapter6.htm 示例一:Bounce 边界碰撞测试 velocity为移动的速度, 超过右边界,velocity.x为 ...
- Win32动态链接库和MFC 动态链接库
通过使用 DLL,程序可以实现模块化,由相对独立的组件组成.例如,一个计帐程序可以按模块来销售.可以在运行时将各个模块加载到主程序中(如果安装了相应模块).因为模块是彼此独立的,所以程序的加载速度 ...
- 使用Edge模式通知Internet Explorer以最高级别的可用模式显示内容
一.EasyUI$的window('open')在IE8下兼容性问题 今天在公司使用EasyUI的$('#win').window('open');方法打开一个window窗体时发现EaysUI的脚本 ...
- 移植Python2到TQ2440
环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移 ...
- [DevExpress使用随笔]之预览repx报表(转)
来自:http://blog.csdn.net/HXC_HUANG/article/details/78181962?locationNum=9&fps=1 在[DevExpress使用随笔] ...
- CSS id 和 class 选择器
如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器. id 选择器 id 选择器可以为标有特定 id 的 HTML 元 ...
- SQL:两种获取时间类型日期部分的方法
参考网址:http://www.w3school.com.cn/sql/sql_dates.asp. ), PassedDate, ), , PassedDate), )
- nodeJS 相关开源项目
摘要:NodeJS是一个服务器端JavaScript解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码 ...
- Swift - 用CATransform3DMakeRotation实现翻页效果
Swift - 用CATransform3DMakeRotation实现翻页效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // ...