WIN7下使用.net(C#)监视剪贴板 (转)
最近需要做一个小程序,需要常驻后台,监视剪贴板变化并提取内容, 在网上查了一些资料,先采用SetClipboardViewer方法实现,具体原理可以参考http://www.cnblogs.com/jht/archive/2006/03/20/354088.html,我的程序中使用的是http://code.google.com/p/clipboardviewer/提供的ClipboardChangeNotifier.cs类,比较方便,类代码见附件(在google code中下载或http://www.kuaipan.com.cn/file/id_22823997376823393.htm),使用方法为: 主窗体初始化时:
- ClipboardChangeNotifier clipChange = new ClipboardChangeNotifier();
- clipChange.ClipboardChanged += new EventHandler(clipChange_ClipboardChanged);
- clipChange.AssignHandle(this.Handle);
- clipChange.Install();
ClipboardChangeNotifier clipChange = new ClipboardChangeNotifier();
clipChange.ClipboardChanged += new EventHandler(clipChange_ClipboardChanged);
clipChange.AssignHandle(this.Handle);
clipChange.Install();
主窗体退出时:
- clipChange.Uninstall();
clipChange.Uninstall();
此程序在XP下运行正常,但是后来在WIN7下使用时遇到了一些问题,经常会在屏幕保护程序或系统休眠后,不再实时监视剪贴板,具体原因不明,后来查了下资料,有人提到SetClipboardViewer函数在Vista以上版本工作并不是很稳定,建议使用AddClipboardFormatListener这个新的API函数,MSDN(http://msdn.microsoft.com/en-us/library/windows/desktop/ms649033%28v=vs.85%29.aspx)上提到该API函数只能用于Vista及以上版本,经测试,程序工作正常
代码比SetClipboardViewer方法简单: 首先声明API函数
- [DllImport("user32.dll")]
- public static extern bool AddClipboardFormatListener(IntPtr hwnd);
- [DllImport("user32.dll")]
- public static extern bool RemoveClipboardFormatListener(IntPtr hwnd);
- private static int WM_CLIPBOARDUPDATE = 0x031D;
[DllImport("user32.dll")]
public static extern bool AddClipboardFormatListener(IntPtr hwnd);
[DllImport("user32.dll")]
public static extern bool RemoveClipboardFormatListener(IntPtr hwnd);
private static int WM_CLIPBOARDUPDATE = 0x031D;
窗体初始化时添加对剪贴板的监视:
- AddClipboardFormatListener(this.Handle);
AddClipboardFormatListener(this.Handle);
窗体关闭时移除对剪贴板的监视:
- RemoveClipboardFormatListener(this.Handle);
RemoveClipboardFormatListener(this.Handle);
接收到剪贴板更新的消息时,读取剪贴板内容:
- protected override void DefWndProc(ref Message m)
- {
- if (m.Msg == WM_CLIPBOARDUPDATE)
- {
- UpdateClipValueList();
- }
- else
- {
- base.DefWndProc(ref m);
- }
- }
WIN7下使用.net(C#)监视剪贴板 (转)的更多相关文章
- 【旧文章搬运】PsVoid中IrpCreateFile函数在Win7下蓝屏BUG分析及解决
原文发表于百度空间,2010-04-05========================================================================== 这也许是我 ...
- 跟我一起玩Win32开发(25):监视剪贴板
自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种“门前冷落鞍马稀”的感觉.于是,老邪就拿出<九阴真经>认真阅读,同时用迅雷下载经典大剧<汉武大帝>晚上睡觉前看上几集,老邪一 ...
- WIN7 下的 filemon 版本
http://blog.sina.com.cn/s/blog_594398e80100tx1q.html WIN7 下的 filemon 版本 (2011-09-26 22:26:12) 标签: fi ...
- win7下利用ftp实现华为路由器的上传和下载
win7下利用ftp实现华为路由器的上传和下载 1. Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...
- QC在win7下不能访问QC服务器介绍
本地访问不了服务器QC的主要几个原因总结 服务器serverjbossextensionhpcmd 2016-03-24 兼容性问题: 1.在服务端QC的安装目录下jboss\server\def ...
- WIN7下安装visualC++2008 redistributable 出现1935错误的解决办法(转自)
转自:http://zhidao.baidu.com/link?url=jylNh_JeANi4wrOMmd4d2i06e_N3QCw7z6BLGiNNNTu1Hc6ADTkUq2PORExKmjtk ...
- win7下IIS的安装和配置 图文教程
转自 http://www.jb51.net/article/29787.htm 最近工作需要IIS,自己的电脑又是Windows7系统,找了下安装的方法,已经安装成功.在博客里记录一下,给需要的 ...
- win7下cmd常用命令
当在win7下执行命令出现右图状况 状况下可以采用鼠标放在指定的文件夹然后按shilt+鼠标右键可以出现下图的界面直接在此处打开cmd
- Windows驱动开发技术详解HelloWDM例子win7下无法安装
HelloWDM例子编译完成之后,在win7下安装显示 查看setupapi.dev看到如下信息 这个C:\MyDriver_Check目录完全不是我指定的,我放到c盘根目录下 查看inf [Sour ...
随机推荐
- SqlServer 开启或关闭数据库主键自增
可用作删除一行主键数据库,在还原数据行,或者删掉后,被伤处的主键还可以利用 --开启当前表的可复制功能,仅在当前回话中有效 SET IDENTITY_INSERT dbo.PDAUserInfo O ...
- centos上如何安装mysql
centos可以使用yum安装mysql 但是版本很低,且不灵活. 本文将介绍如何使用安装包安装mysql http://dev.mysql.com/downloads/mysql/ 下载mysql ...
- (原)torch的apply函数
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221633.html torch中的apply函数通过可以不断遍历model的各个模块.实际上其使用的 ...
- asp.net运行机制图
(郑重提示:此图版权归广州传智播客老邹所有啊!!!!) 详细版
- java三层模型与三层架构
http://zhidao.baidu.com/question/316273675.html?qbl=relate_question_4 持久层用来固化数据,如常说的DAO层,操作数据库将数据入库业 ...
- MySQL历史版本下载(官方)
http://downloads.mysql.com/archives/community/ 社区版本(开源免费)
- 实例讲解MySQL联合查询
好了终于贴完了MySQL联合查询的内容了,加上上一篇一共2篇,都是我转载的,实例讲解MySQL联合查询.那下面就具体讲讲简单的JOIN的用法了.首先我们假设有2个表A和B,他们的表结构和字段分别为: ...
- 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式
本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...
- Android性能优化学习
工作以来,越来越觉得性能优化的重要性,从技术角度,它甚至成了决定一个app成败的最关键因素.因此,特地花时间去学习专研性能优化的方法. 学习性能优化最便捷的方式便是研读别人有关性能优化的博客,然而网上 ...
- iptables 添加,删除,查看,修改
iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录.如果iptables不熟悉的话可以用apf,是一款基于iptables的防火 ...