前段时间用Linux Mint,有四个虚拟桌面,非常的好用,特别是看PPT的时候,不用退出播放就可以回到桌面上来。可惜Windows下没有这个功能,所以自己写了一个小工具,虽然名字叫虚拟桌面,其实都是真实的桌面啦。
跟Linux下的相比,还是有些不一样。虽然也是通过 Ctrl+Alt+方向键 来选择桌面,但是我写的程序中,每个方向键是直接对应一个桌面,在Linux中,方向键对应的桌面是相对的,即按某个方向切换到下一个桌面。我这种设计一是考虑设计方便,二是觉得直接切换更方便。
不幸的是,这些快捷键跟QQ音乐的快捷键冲突了,反正一般情况下我不用QQ音乐的快捷键(况且本本有独立多媒体键),所以,我直接把QQ音乐的快捷键改成别的了...
编写的过程还是挺曲折的。一开始考虑用MFC写,但是碰到个小问题,不创建窗体的话,托盘图标创建后立刻消失(就是在App的InitInstance方法中创建托盘图标,MFC我不熟,哪位高手给我解释下原因感激不尽)。后来想直接用Windows的API来写,发现问题依旧。然后就考虑用C#来写(用P/Invoke),别看在C++下才用了那几个API,转到C#后,用那些个API实在太麻烦了(主要是类型转换,写个小程序不想搞这么麻烦啦)。无奈了..想用C++封装个DLL来供C#调...后来想想,一开始放弃MFC是自己太执于不创建窗体(我觉得白白浪费资源),于是乎干脆直接把窗体隐藏了事,绕了个大弯又回来了....
我对MFC实在是外行,代码就不好意思贴上来了,附上可执行文件以便有同样需求的朋友。版权所有,盗版不究~
参考API:OpenDesktop、CreateDesktop、SwitchDesktop、SetThreadDesktop、CreateProcess、Shell_NotifyIcon、RegisterHotKey
本文转自 dogegg250 51CTO博客,原文链接:http://blog.51cto.com/jianshusoft/625111,如需转载请自行联系原作者