一、动因
这是一个小工具,主要是监视剪切板,保存历史记录,提高我们开发的速度,对我来说最重要的一点是可以用键盘进行操作,市面上有不少剪切板工具,但是都不满足我的要求,所以干脆自己写了这个小工具,只有300行代码,却用起来很方便,主要是不用鼠标,主要的功能如下:
二、功能介绍
1 监控剪切板,只拷贝文本文件,不拷贝其他,目前只保存10行记录,太多了没有意义,当然大家可以随便就可以修改一下保存更多
2 全键盘操作,alt+s弹出界面,键盘上下键或者 i/l 进行上下选择(不用把手移动是最好的)
3 "x" 退出该程序,“q" 关闭窗口
4 可以用鼠标进行选择,如果你喜欢的话,我不喜欢
5 当没有激活的时候自动隐藏,比如你点击一下编辑窗口就消失了
6 最新的拷贝的在第一个,很多剪切板工具都是通过订阅剪切板的事件,粘贴的时候发送到剪切板,然后通知编辑窗口粘贴,这样导致你这次的操作事实上导致了往剪切板又发送了一个拷贝。这样导致重复。我用一个queue 维护历史,重复的不加入到里面。
7 会自动定位到光标所在位置
这是一个方便快捷的小工具,希望对大家有用,附上源代码和可执行文件,用winform搞的。主要调用系统api进行。大家可以任意修改。无任何版权疑问,当然里面代码都没有怎么整理,有点乱,大家觉得有什么好功能需要加上,尽管加上。以后会断断续续放一些都是个人的一些小工具,都是方便我们进行开发的东西上来。谢谢捧场。
三、一些注意点
1、不能采用获取激活窗口,然后sendmessage(wm_patse)这样的方式,向编辑窗口发送剪切命令,因为不同的编辑窗口可能使用不能的消息进行粘贴
,所以我采用了sendkeys.send(^v).这里有两个问题,第一个是,有些版本的.net库是旧版本,这个sendkeys可能不行,要加上app.config,对sendkeys进行说明
第二个是这里的v是小写,大写是不可以的
2、注意要处理,当光标处在最下面和最左边的时候,弹出窗口要注意调整位置,否则弹出窗口就看不见了
3、要把弹出窗口设置为最前面的窗口,这里有一个很奇怪的现象,原来弹出的时候是这样的:
this.TopMost = true;
this.Visible = true;
this.BringToFront();
这种方式下面,第一次弹出的时候,并不能获取键盘焦点,但是如果用右键点击一下,然后以后的弹出都可以获取焦点。后来加上了下面这句:
WinApi.SetForegroundWindow(this.Handle);
直接调用api设置为最前窗口,则没有问题。这个问题我现在也还没有搞明白,高手请指教
4、注意要捕捉的是unicole字符,如果用DataFormats.Text,那么在有些版本的windows下面,可能导致乱码
iData.GetDataPresent(DataFormats.UnicodeText)
5 通过重载下面的函数可以达到启动就隐藏的效果
protected override void OnActivated(EventArgs e)
{
if (windowCreate)
{
base.Visible = false;
windowCreate = false;
}
base.OnActivated(e);
}
四、下载