前言
在日常工作中有许多文件要根据模板编写新的文件,每次复制粘贴太繁琐,还有些文件需要备注,又不想在文件名里写的很乱。就萌生了自己写个工作助手的想法。程序必须满足以下几个需求。
- 根据模板自己建立新的文件。
- 可以给文件备注。
- 打开快捷文件、程序、网页。
- 有时候找东西,想不起来放在那里了,需要一个搜索界面,Everything很好用,但每次都忘记去打开,所以想整合在一起。
- 有时候需要根据发过来的内容进行作业,需要一个简单的便签贴在桌面。
- 有时候需要将其他程序置顶。
- 工作时间过长,需要一个休息提醒功能。
针对以上几个要求打造一款个人工作助手。
** 部分源码**
由于这次是设计多个功能,源码比较多,主界面写的比较乱就不展示,直接放在链接中。
窗口置顶功能
窗口置顶 = function(){ import win; //窗口库 import win.dlg.message; //窗口消息库 var hwnd =win.getForeground() //获取前台窗口句柄 var 是否置顶 = win.getStyleEx(hwnd ,0x8/*_WS_EX_TOPMOST*/ ) var msgDlg = win.dlg.message(hwnd); //创建提醒窗口 //console.log(hwnd,是否置顶) if(是否置顶 != 0){ win.setTopmost(hwnd,false) //取消置顶 msgDlg.ok("取消置顶",500) } else { win.setTopmost(hwnd) //置顶 msgDlg.ok("置顶",500) }; };
|
搜索窗口
import win.ui; import console; /*DSG{{*/ var winform = win.form(text="文件搜索";right=699;bottom=499;min=false;mode="popup") winform.add( edit={cls="edit";left=80;top=24;right=592;bottom=48;dl=1;dr=1;dt=1;edge=1;z=1}; listview={cls="listview";left=16;top=64;right=688;bottom=488;db=1;dl=1;dr=1;dt=1;edge=1;gridLines=1;z=2} ) /*}}*/ import process; import fsys.everything; process.execute("\app\Everything.exe","-startup"); //启动Everything并隐藏界面 winform.listview.insertColumn("文件名",350); winform.listview.insertColumn("路径",500); winform.listview.fillParent(); //第二列自动列宽 winform.edit.setFocus(0,-1) //设置输入框焦点 winform.show(); winform.edit.onOk = function(){ var 关键字 = winform.edit.text; if(关键字 = "" or 关键字 = null){ return ; }; winform.edit.text = "搜索中,请耐心等待" winform.listview.clear(); //清空列表 var 显示内容 = {}; for 路径 in fsys.everything.eachSearch(关键字){ var 文件名 = io.splitpath(路径).file var 文件信息 = {文件名,路径}; table.push(显示内容,文件信息) }; if(#显示内容 = 0){ winform.edit.text = "未找到搜索内容" }; else { winform.edit.text = 关键字 }; winform.listview.items = 显示内容; }; // 双击打开文件 import process; winform.listview.onDoubleClick = function(item,subItem,nmListView){ var 路径 = winform.listview.getItemText(item,2); if(io.exist(路径)){ process.explore(路径); //打开路径 }; }; //右键菜单 import win.ui.menu; //菜单库 import win.clip.file; //剪贴板文件库 import win.clip; //剪贴板文本库 winform.listview.onRightClick = function(item,subItem,nmListView){ var 路径 = winform.listview.getItemText(item,2); if(!io.exist(路径)){ return }; //路径不存在则跳过 var 右键菜单 = win.ui.popmenu(winform); 右键菜单.add("打开",function(){ process.explore(路径); //打开路径 }); 右键菜单.add("打开目录",function(){ process.exploreSelect(路径); }); 右键菜单.add("复制",function(){ win.clip.file.write(路径) }); 右键菜单.add("复制路径",function(){ win.clip.write(路径); }); 右键菜单.popup(); } win.loopMessage(); return winform;
|
便签窗口
import win.ui; import console; /*DSG{{*/ var winform = win.form(text="aardio form";right=303;bottom=399;bgcolor=12974079;border="none";exmode="toolwindow";topmost=1) winform.add( richedit={cls="richedit";left=8;top=8;right=296;bottom=392;autohscroll=false;bgcolor=12974079;link=1;multiline=1;wrap=1;z=1} ) /*}}*/ if(!存档对象.NotesData.data){ /* 无存档信息,建立初始信息 */ 存档对象.NotesData.data = { left=winform.left; right=winform.right; top=winform.top; bottom=winform.bottom; 内容="简单便签,只支持插入文本与图片,满足简单记录使用。退出自动保存内容,按Esc键退出" } //初始信息 winform.richedit.text = 存档对象.NotesData.data.内容; //加载常规内容 }; else { //加载富文本内容 winform.richedit.streamIn(存档对象.NotesData.data.内容); // 加载位置 winform.left = 存档对象.NotesData.data.left; winform.right = 存档对象.NotesData.data.right; winform.top = 存档对象.NotesData.data.top; winform.bottom = 存档对象.NotesData.data.bottom; }; // 实现按住拖动窗口效果 winform.onMouseDown = function(wParam,lParam){ winform.hitCaption(); }; //Esc键退出 winform.onCancel = function(){ winform.close() }; //退出前保存数据 winform.onDestroy = function(){ 存档对象.NotesData.data.内容 = winform.richedit.streamOut(); 存档对象.NotesData.data.left=winform.left; 存档对象.NotesData.data.right=winform.right; 存档对象.NotesData.data.top=winform.top; 存档对象.NotesData.data.bottom=winform.bottom; } //鼠标滚动 winform.richedit.wndproc = function(hwnd,message,wParam,lParam){ if(message = 522){ //鼠标滚轮 if(wParam = 4287102976){ //鼠标向下 winform.richedit.vScroll(1/*_SB_LINEDOWN*/) }; elseif(wParam = 7864320){ //鼠标向上 winform.richedit.vScroll(0/*_SB_LINEUP*/) }; }; }; winform.show(); win.loopMessage(); return winform;
|
休息提醒窗口
import fonts.fontAwesome; import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469;image=$"\pexels-tobi-620337.jpg";bkBottom=0;bkLeft=0;bkRight=0;bkTop=0;border="none") winform.add( plus={cls="plus";left=728;top=8;right=752;bottom=32;align="left";color=255;dr=1;dt=1;font=LOGFONT(h=-16);iconStyle={font=LOGFONT(h=-20;name='FontAwesome')};iconText='\uF00D';notify=1;valign="top";z=1}; static={cls="static";text="Static";left=168;top=64;right=600;bottom=104;align="center";center=1;color=255;dl=1;dr=1;dt=1;font=LOGFONT(h=-35;weight=700);transparent=1;z=2} ) /*}}*/ import key.hook; var hook = key.hook(); hook.proc = function(msg,vkcode,scancode,injected,flags,timeStamp,extraInfo){ return true; //锁定按键 }; var 图像路径 = 存档对象.config.提醒.路径; var 秒数 = 存档对象.config.提醒.休息 if(io.exist(图像路径)){ winform.image = 图像路径; }; winform.plus.skin({ color={ active=0xFFFF0000; default=0xFFFF0000; disabled=0xFF6D6D6D; hover=0xFF00FF00 } }) winform.plus.oncommand = function(id,event){ hook.close() //关闭键盘钩子 winform.close() }; winform.show(); //显示界面 winform.fullscreen(true) //全屏窗口 for(i=1;秒数;1){ var 时间 = 秒数 +1 - i winform.static.text = "距离休息结束还有 " + 时间 + " 秒" win.delay(1000) if(i = 秒数){ hook.close() //关闭键盘钩子 winform.close() }; }; win.loopMessage(); return winform;
|
使用界面
软件BUG
众所周知没有BUG的软件不是一个好软件。个人能力及精力有限,无法做到优化很好。
- 无法直接添加网页快捷,可在资源管理器中添加后在刷新使用助手打开。
- 没有事实更新资源管理器的文件变动,所有会出现文件实际删除了,软件没刷新打开文件后报错。
- 因为特意设计两层目录,使用的符号过滤来过滤掉文件在树形列表显示,可能存在目录中存在符号无法显示的问题。
- 其他不重要或未发现的BUG。
**
链接**
源码:链接: https://pan.baidu.com/s/1WXY0V6GNddC2B5nGqodcBA 提取码: 4gfw 复制这段内容后打开百度网盘手机App,操作更方便哦
成品:链接: https://pan.baidu.com/s/1yg2_HjyeNPrVL02HCQmwNg 提取码: esc8 复制这段内容后打开百度网盘手机App,操作更方便哦