win32程序如何实现键盘消息独占

beyondlwm 2012-05-22 09:30:09
类似于DINPUT创建的时候那个exclusive参数。
现在我们用的是一个WIN32程序,并直接使用windows键盘消息作为输入,想实现同样的功能,即,当我的程序为激活窗口时,所有的键盘输入只作用于我的程序,系统并不响应。

不知道帖子发对位置了没,如果没对,麻烦版主帮我移动一下,谢谢!
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2012-05-22
  • 打赏
  • 举报
回复
现在qq密码框就是WH_KEYBOARD_LL,原来用的改中断描述符表的驱动,但不稳定所以放弃
Athenacle_ 2012-05-22
  • 打赏
  • 举报
回复
你可以看看QQ的密码输入框,大概是用键盘驱动做的
Lactoferrin 2012-05-22
  • 打赏
  • 举报
回复
dinput就封装的键盘钩子,你dinput能用键盘钩子更可以用
Lactoferrin 2012-05-22
  • 打赏
  • 举报
回复
键盘驱动更不用考虑,那会让你的程序在很多pc根本执行不了,就用键盘钩子,如果你不是有意让效率下降根本看不出来
beyondlwm 2012-05-22
  • 打赏
  • 举报
回复
1. 据说全局键盘钩子会导致效率下降,所以暂时不考虑这个。
2. 键盘驱动愿闻其详。

谢谢。
  • 打赏
  • 举报
回复
1 弄个全局的键盘钩子
2 键盘驱动
beyondlwm 2012-05-22
  • 打赏
  • 举报
回复
既然dinput都是这样做的,那我就用全局钩子来做了

谢谢各位!
Lactoferrin 2012-05-22
  • 打赏
  • 举报
回复
键盘驱动更易报毒,不用钩子,不用驱动的方法是切换到另一个桌面
大海啊全是水 2012-05-22
  • 打赏
  • 举报
回复
全局钩子吧 这个容易点。。。 缺点 就是会报病毒 哈哈
相信大多数人遇到过这个问题, 鼠标右键 “删除” 功能不能删除这个片段。 下面我们给予提供几种管用的方法。 1 、重启电脑,然后再去删除该片段。一般能解决问题,就是太麻烦。 2 、进入安全模式下删除。还是太麻烦。 3 、选中该碎片,然后点击键盘上的“ delete ” 删除。 4 、选中该碎片,然后按住“ shift ”键再按 “ delete ” 删除。 5 、简单快捷,用 360 里面的粉碎机粉碎要删掉的文件,选高级 / 高级工具 集 / 文件粉碎机。 有的人说 “把 word 原文件关掉就可以了 ~ ” 。 这种方法我试过, 不管用, 还是删不掉。 或是尝试网上几种方法: 一、常规解决办法: 1 .注消或重启电脑,然后再试着删除。 2 .进入“安全模式删除”。 3 .在纯 DOS 命令行下使用 DEL , DELTREE 和 RD 命令将其删除。 4 .如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除 该文件夹中的子目录和文件,再删除文件夹。 5 . 在任务管理器中结束 Explorer.exe 进程, 然后在命令提示符窗口删除 文件。 6 .如果你有安装 ACDSee , FlashFXP , Nero , Total 这几个软件,可以尝 试在这几个软件中删除文件夹。 二、高级解决方案: 1 .磁盘错误 运行磁盘扫描, 并扫描文件所在分区, 扫描前确定已选上修复文件和坏扇 区,全面扫描所有选项,扫描后再删除文件。 2 .预读机制: 某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入: REGSVR32 /U SHMEDIA.DLL ,注销掉预读功能。或删除注册表中下面这个键值: [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{87D62D94-71B3-4b9a-9489 -5FE6850DC73E}\InProcServer32] 。 3 .防火墙: 由于反病毒软件在查毒时会占用正在检查的文件, 从而导致执行删除时提 示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。 4 . OFFice 、 WPS 系列软件: OFFice 的非法关闭也会造成文件无法删除或改名。重新运行该程序,然 后正常关闭,再删除文件。 5 .借助 WinRAR : 右击要删除的文件夹, 选择“添加到压缩文件”。 在弹出的对话框中选中 “压缩后删除源文件,”随便写个压缩包名,点确定。 6 .权限问题: 如果是 2000 和 xp 系统,请先确定是否有权限删除这个文件或文件夹。 7 .可执行文件的删除: 如果可执行文件的映像或程序所调用的 DLL 动态链接库文件还在内存中 未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件, Win98 中是 Win386.SWP , Win2000/XP 是 pagefile.sys 。 注意要在 DOS 下删除。 8 .文件粉碎法: 使用文件粉碎机,如 File Pulverizer ,可以彻底删除一些顽固文件。 三、制作一个无法删除的“文件保险箱” 文件夹无法删除, 未必就是不好的事情, 如果把一些重要的文件放在这个 目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在 Windows 中是不允许创建和删除的,但在 DOS 下却可以创建文件名包含 \ 的文件夹。 在我们使用 Windows 的过程中, 会遇到各种各样的问题。 即使是最简单的 删除文件也可能遇到麻烦,要么系统提示“文件正在被另一个人或程序使 用”, 要么就是报告“访问被拒绝”„„如果你也遇到过这种情况, 不妨看看 本文。 原因一:文件正在使用中 在删除文件时,经常会遇到的一个问题是,文件正在使用,无法删除。如 果试图删除以独占访问而不是以共享访问方式打开,并且正在使用中的文件 时,系统就会出现错误提示:“无法删除 xxx :文件正在被另一个人或程序使 用”。而另一种情况则是,能够使用删除命令删除文件,但在打开文件的进程 释放该文件之前,文件实际上并未删除。 要解决上述问题,需要确定拥有文件打开句柄的进程,然后关闭此进程。 在以前的 Windows 中,我们可以使用资源工具包的 Oh.exe 。但在 XP 中,安装 好的 Support Tools 却不带 Oh.exe 。不过, XP 提供了一个新的 Openfiles.exe 命令行 工具,它能够报告进程打开的各个文件。与 Oh.exe 相似, Openfiles.exe 也 要求打开系统内核监视,这会消耗一些内存,并降低系统操作的性能。打开系 统监视的命令是“Openfiles /local on”, 它会启用系统全局标志“维护对象列表”, 需重新启动系统才能生 效。重新启动系统后,在命令提示符下执行不带参数的“Openfiles”,即可 看到各个进程打开文件的清单。 原因二:文件系统损坏 磁盘上的坏区、 其他硬件故障或者软件错误都可能会损坏文件系统, 使文 件出现问题而无法删除。 典型操作失败的方式可能各不相同, 当检测到文件系 统损坏时,通常会收到一条提示运行 Chkdsk 的信息。 如果遇到这种情况,可以在磁盘卷上运行 Chkdsk 实用工具以纠正任何存 在的错误。根据损坏的性质, Chkdsk 也许能够恢复文件数据,也许无法恢复, 但 Chkdsk 可以使文件系统返回到一种在内部一致的状态。 有关 Chkdsk 实用工 具的命令及参数,可以在命令提示符下执行“Chkdsk / ?”查阅。 原因三:文件使用了存取控制列表 如果某个文件使用了存取控制列表( Access Control List ,简称 ACL ),而操作者又没有相应的权限,那么删除文件时就可能 出现“访问被拒绝”的提示。 通常情况下, 管理员具有取得任何文件所有权的隐含能力, 文件所有者也 具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。 要解决因 ACL 导致文件无法删除的问题, 就必须以具有相应权限的用户身 份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是, 操作者必须拥有这些文件的所有权才能更改权限。 如果是因为文件使用了不规 范的 ACL 而不能使用某些安全工具显示或修改其权限时, 可以尝试使用命令行 工具 Cacls.exe 进行修改。 原因四:文件名使用了一个保留名称 众所周知, 像 AUX 、 LPT1 这样的名称是为旧式 DOS 设备保留的。 为了向后 兼容, 在 Windows 中不允许使用这些文件名, 也不能使用典型的 Win32 文件调 用来创建它们。 反之, 如果文件名是 Win32 命名空间中的一个保留名称, 则同 样可能无法删除此文件。 要解决此类问题, 可以在 Linux 或其他非 Windows 的操作系统下重命名或 删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使 用一些内置的命令绕过典型的 Win32 保留名称检查。例如,在 Windows XP 中使用以下命令,可以删除名为“lpt1”的文件( Del 命令后面加上 “?”来避免 Windows 检查文件名的合法性): Del [URL=http://3800cc.com/news/w31/file://?c:]?c:[/URL] 文件路 径 lpt1 原因五:无效的文件名称 如果文件名中包括一个无效名称, 例如文件名有一个尾随空格, 或一个尾 随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提 的是,如果使用典型的 Win32 语法打开名称中有尾随空格或尾随句点的文件, 则尾随空格或句点在打开实际文件之前会被去掉。 因此, 如果在同一个文件夹 中有两个分别名为“File.txt”和“File.txt ”的文件(注意第二个文件名后面的空格), 当使用标准 Win32 调用打开 第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“ 如何删除文档片段分享到:把文档贴到Blog、BBS或个人站等: 复制 预览 普通尺寸(450*500pix) 较大尺寸(630*500pix) 你可能喜欢 <%for(var i=0,len=data.length;i <%var className="";%> <%if(i==0){%> <%className="current";%> <%}%> <%=util.cutString(data[i]['tag_name'],10,'...')%> <%}%> <% for(var i=0,len=data.length;i <%var status="disabled";%> <% if(i==0){%> <%status="current";%> <%}%> <%var docList=data[i]["related_doc_infos"];%> <%for (var j=0,n=docList.length;j <%}%>
<%=util.cutString(docList[j].title,25,'...')%> <%if(docList[j].value>0){%> <%=util.star(docList[j].value/2,'s')%> <%}else{%> 暂无评价 <%}%> <%=docList[j]['page_num']%>页 <%=util.priceText(docList[j])%>
更多与“<%=data[i]['tag_name']%>”相关的内容>>
<%}%> 今日推荐 81份文档 笑话大全集笑话大全爆笑版幽默笑话大全全球冷笑话精选 160份文档 2014年度细分行业报告汇集2014年移动互联网O2O分析报告休闲农庄项目可行性研究报告2014年建筑幕墙建筑装饰行业分析报告 90份文档 2014年执业医师考试指导口腔执业医师实践技能复习资料中医护理学基础重点执业医师实践技能考试模拟试题您的评论*感谢支持,给文档评个星吧! 240 发布评论换一换 用户评价(1) 评论加载中... 2014-04-30 回复 (1) 肖客榕 还有更简单的方法:步骤 1、用记事本打开;2、全选(ctrl+A);3、清除记事本里面的全部内容;4、保存关掉后即可删除 回复 共1条回复 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x ©2014 Baidu 使用百度前必读 | 文库协议 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 关闭 分享到:QQ空间新浪微博微信扫二维码,快速分享到微信朋友圈 新版反馈加入会员!送免财富值下载特权

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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