禁用屏幕拷贝(Print Screen),调用派生的析构函数及其它......
2007-03-15 21:56:11 来源:WEB开发网核心提示:本文示例源代码或素材下载 我正在开发一个显示图形的程序,该图形具有知识产权,禁用屏幕拷贝(Print Screen),调用派生的析构函数及其它......,有没有什么办法禁用屏幕拷贝功能(Print Screen)以防止用户将图像拷贝到剪贴板上?禁止屏幕拷贝的办法倒是有一个,但是我得告诉你,此时你可以忽略这些消
本文示例源代码或素材下载
我正在开发一个显示图形的程序,该图形具有知识产权,有没有什么办法禁用屏幕拷贝功能(Print Screen)以防止用户将图像拷贝到剪贴板上?
禁止屏幕拷贝的办法倒是有一个,但是我得告诉你,要阻止其它应用程序从你的窗口上复制像素内容是不可能的。许多第三方程序都能捕获屏幕内容,这种程序也不难写。要想截获屏幕上的像素,你只要用 BitBlt 从屏幕设备上下文中拷贝它们既可,例如:CWindowDC dc(NULL); // 用 NULL 获取整个屏幕
CDC memdc;
... // 创建, 初始化 memdc
memdc.BitBlt(..., &dc); // 拷贝屏幕内容
若要复制当前活动窗口的内容,只要获取该窗口的 CWnd 指针,然后用它来构造一个 CWindowDC,即可从中提取内容。总之,你无法阻止其它程序截获你窗口的像素。那么,如果你仅仅只是要禁用“屏幕拷贝”,或是阻止该功能做些什么,那其实很容易。Windows 通过注册热键来实现“屏幕 拷贝”功能。在我 2000 年 12 月的栏目中,我示范了如何用 RegisterHotKey 来注册应用程序热键(参见 C++ Q&A: Sending Messages in Windows, Adding Hot Keys to your Application),Windows 使用预定义的热键 IDHOT_SNAPDESKTOP 和 IDHOT_SNAPWINDOW 来处理“屏幕 拷贝”。这两个热键分别对应于“Print Screen”和“Alt+Print Screen”,前者用来复制整个屏幕,而后者则仅复制当前活动窗口。 为了禁用这些功能,你只要注册这些热键,当用户按下这些热键时,让 Windows 向你的程序发送 WM_HOTKEY 消息,此时你可以忽略这些消息, 旁路掉默认的屏幕复制行为既可。你的主框架(mainframe)类是最适合做这件事的地方。
- ››禁用 Windows 8屏幕触摸键盘的方法
- ››禁用eSATA接口提升win7启动速度方法
- ››禁用Windows 8 强制驱动签名
- ››禁用管理员权限可百分百避免Office漏洞
- ››屏幕变长 新一代 iPhone 功能大揭秘
- ››屏幕截图 Screen Capturer v1.00.54 汉化版 For S...
- ››禁用Windows 7中的AeroSnap最大化功能
- ››禁用Windows 7中的AeroSnap功能
- ››禁用危险的远程注册表
- ››禁用Word 2007目录超链接
- ››禁用dumprep.exe在XP和关闭错误报告在Vista
- ››禁用XP四大自动播放功能 让系统更流畅
赞助商链接