Archives for 三月 2009

DM2_虚拟桌面插件_修改

    DM2是个好东西,占用资源少,而且功能相当实用。比如说最小化窗口到浮动图标、切换窗口总在最上层、最小化窗口到托盘等等等等。
    与此同时他还有好多强大的插件,我最喜欢的是它的虚拟桌面插件。理由也挺简单,资源占用小,切换迅速。不过这个插件有一个小小的缺点,就是无法设置哪些窗口在所有虚拟桌面上都存在。就比方说FastIcons,这个类似于Dock的小东西是我的标准系统常驻软件。在切换虚拟桌面的时候我就一直想让这个软件永久保留,要不然实在是太不方便了,如下图。

     还好DM2和它的插件都是开源的,再加上今天刚好有点时间,就顺便改改吧。最终成果如下:手动配置DM2目录下的dm2.ini文件,用文本编辑器在[Plugins_VirtualDesktop_Settings]这一节的最后加上如下几行。然后就这些程序就可以逍遥法外,置桌面切换而不顾了,haha。

1: ExcudeCount=1 //你要过滤的程序个数
2: Excude0=D:\Program Files\Tools\FastIcons\FastIcons.exe
3: Excude1=。。。。//每个程序的完整路径。编号为Excude+数字
4: Excude2=。。。。
5: Excude3=。。。。

     原本以为这小功能花不了几分钟时间,可一写下来才发现原来俺的C基础已经废了,调Bug的时候发现误删野指针无数,唉。最郁闷的是在VS下运行一切没问题,然后直接双击exe运行切换虚拟桌面是毫无反应,sigh…..
     经多方查证才发现问题在程序的权限上,VS下编译运行的程序是以Debug的权限运行的,比Windows的管理员权限还高。而我为了通过窗口的句柄获得其对应程序的路径,在代码里用了几个Tlhelp32里的API,在以管理员权限运行这个程序的时候是得不到结果的。没办法,只能手动提升进程的权限(利用AdjustTokenPrivileges这个API就行了)。
     现在终于是能运行了,不过还有一个更郁闷的事,就是Debug下一切正常的程序到了Release下就又出问题了。估计原因有两种可能,一是提升权限没成功,二是VC编译器优化的问题。先不搞了,等下次有空再来看。反正Debug下编译的Dll能用,先用着再说。
附 DLL + 很挫的修改代码,其实也就增加了四五个函数(Debug下出来的Dll有点大,这是没办法的事):
DLL下载    
插件源码   
 

Google Groups Via Https

 
  早上起来发现Google Groups 又不能正常访问了(可恶的 G’F’W)。
  还好Google Groups有提供Https链接,把网址链接的Http换成Https即可。不过像我等懒人怎么能忍受做这种挫事。
  随便写一句Greasemonkey的脚本搞定。话说Greasemonkey真是好用,HoHo。
附代码:

1: // ==UserScript==
2: // @name GoogleGroups Secure
3: // @description 强制使用Https 访问Google Groups
4: // @namespace http://example.com/projects/
5: // @include [...]