找回密码
 立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

搜索
查看: 940|回复: 6

[转载] 【aardio】《工作助手》新手打造一款办公助手

[复制链接]
  • TA的每日心情
    开心
    2024-8-27 08:33
  • 签到天数: 170 天

    连续签到: 1 天

    [LV.7]常住居民III

    4

    主题

    169

    回帖

    2309

    积分

    管理员

    积分
    2309
    来自: 中国福建泉州
    发表于 2024-4-2 00:05:52 | 显示全部楼层 |阅读模式 来自: 中国福建泉州
    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    前言
    在日常工作中有许多文件要根据模板编写新的文件,每次复制粘贴太繁琐,还有些文件需要备注,又不想在文件名里写的很乱。就萌生了自己写个工作助手的想法。程序必须满足以下几个需求。
    • 根据模板自己建立新的文件。
    • 可以给文件备注。
    • 打开快捷文件、程序、网页。
    • 有时候找东西,想不起来放在那里了,需要一个搜索界面,Everything很好用,但每次都忘记去打开,所以想整合在一起。
    • 有时候需要根据发过来的内容进行作业,需要一个简单的便签贴在桌面。
    • 有时候需要将其他程序置顶。
    • 工作时间过长,需要一个休息提醒功能。
      针对以上几个要求打造一款个人工作助手。


    部分源码
    由于这次是设计多个功能,源码比较多,主界面写的比较乱就不展示,直接放在链接中。

    窗口置顶功能
    [AAuto] 纯文本查看 复制代码
    窗口置顶 = 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) 
            };        
    };


    搜索窗口
    [AAuto] 纯文本查看 复制代码
    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;


    便签窗口
    [AAuto] 纯文本查看 复制代码
    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;


    休息提醒窗口
    [AAuto] 纯文本查看 复制代码
    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,操作更方便哦

    非业余 - aardio 编程语言 - 非官方问答社区
    限时85折!暑假期间,用aardio培训班充实自己!https://mp.weixin.qq.com/s/c4Z8sZPOiMh_OTG2VPOJmA
    Aardio培训大揭秘,轻松上手打造个人项目!https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug
    aardio风行者第二期培训班https://mp.weixin.qq.com/s/uB6XHUDnGSk0JlWuiBE9AA
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-8-7 15:30
  • 签到天数: 60 天

    连续签到: 1 天

    [LV.6]常住居民II

    5

    主题

    57

    回帖

    768

    积分

    培训会员

    积分
    768
    来自: 中国上海
    发表于 2024-4-3 14:21:07 | 显示全部楼层 来自: 中国上海
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-8-13 08:22
  • 签到天数: 98 天

    连续签到: 2 天

    [LV.6]常住居民II

    16

    主题

    84

    回帖

    1307

    积分

    培训会员

    积分
    1307
    来自: 中国四川成都
    发表于 2024-4-10 11:37:22 | 显示全部楼层 来自: 中国四川成都
    厉害厉害
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-8-19 08:31
  • 签到天数: 38 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    50

    回帖

    409

    积分

    培训会员

    积分
    409
    来自: 中国广西柳州
    发表于 2024-4-19 19:33:31 | 显示全部楼层 来自: 中国广西柳州
    谢谢分享~!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-25 09:18
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    1

    主题

    13

    回帖

    164

    积分

    培训会员

    积分
    164
    来自: 中国重庆
    发表于 2024-5-17 08:33:07 | 显示全部楼层 来自: 中国重庆
    非常厉害~
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-8-19 08:31
  • 签到天数: 38 天

    连续签到: 1 天

    [LV.5]常住居民I

    1

    主题

    50

    回帖

    409

    积分

    培训会员

    积分
    409
    来自: 西班牙
    发表于 2024-6-8 19:08:57 | 显示全部楼层 来自: 西班牙
    谢谢分享。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-25 09:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    回帖

    56

    积分

    培训会员

    积分
    56
    来自: 美国
    发表于 2024-7-20 23:15:32 | 显示全部楼层 来自: 美国
    试了一下 半个小时突然跳个 休息屏幕出来 吓了一跳
    回复

    使用道具 举报

    *滑块验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|非业余 - aardio 编程语言 - 非官方问答社区

    GMT+8, 2024-9-8 09:00 , Processed in 0.178203 second(s), 40 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表