首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

施用c++/flex开发的快速桌面搜索工具

2012-10-08 
使用c++/flex开发的快速桌面搜索工具?如果安装了windows中安装了太多的应用程序,菜单中就会占的很满,找起

使用c++/flex开发的快速桌面搜索工具



?如果安装了windows中安装了太多的应用程序,菜单中就会占的很满,找起来也是一件很郁闷的事情,所以使用c++结合flex开发了windows finder这样一个工具,可以快速查找指定的应用程序和定位至指定的应用程序位置.

?

主要功能有:

?

1. 自动索引开始菜单,桌面我的文档三个位置

2. 指定位置发生变更时能及时生效,无需频繁扫描文件系统

3. 可直接定位到指定的文件位置

4. flex全局热键支持

?

主要使用的技术:c++ flex sqlite

?

界面如下:

?

1.检索

?

?施用c++/flex开发的快速桌面搜索工具

?

2. 列出最近使用,使用相对应的数字键即可快速打开

?


施用c++/flex开发的快速桌面搜索工具

?

界面是flex的优势,实现起来没有什么难度,这里主要说一下我在做的过程中遇到的问题:

?

1. 全局热键的问题,众所周知,flex不支持全局热键,但是这里有一个变通的办法来实现,因为我的后端是c++的,所以有了如下的实现,上代码:

??? 这段代码的主要目的就是在操作系统中注册一个线程消息队列用来接受发给该线程的消息,此处是注册了热键,然后启动消息循环等待按下热键,

?

??? callwfinder函数的功能比较简单,就是创建调用flex应用程序进程,触发flex中注册的INVOKE事件,

?

?

unsigned __stdcall hotkeyProcessThread(void *attach){if(RegisterHotKey(NULL,WM_USER+1982,MOD_WIN,0x57)){MSG msg={0,};while(GetMessage(&msg,NULL,0,0)!=0){if(msg.message==WM_HOTKEY){callwfinder();}if(msg.message==WM_USER+19820){break;}}UnregisterHotKey(NULL,WM_USER+1982);}return 0;}
?

??? flex中注册INVOKE事件的代码如下:

?

?

protected function invokeHandler(event:InvokeEvent):void{if(!nativeWindow.visible){nativeWindow.activate();}}
?

?

???? 这样flex应用就可以响应系统热键了.

热点排行