打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
剪贴板数据自动生成文件
感谢分享,几点意见供参考:
1、关于标准库函数的使用

最好是使用 winform.msgbox 而不是 win.msgbox;
winform.msgbox 会设置owner窗体。

process.getPath(process.getId())
实际上等价于 process.getPath()

而 process.getPath()
实际上等价于 io._exepath

2、关于获取启动参数

_CMDLINE 是解析前的纯文本,
你可以用 _ARGV[1] 取到第一个去掉分号的启动参数,这个更准确。

3、关于原始字符串
winform.edit.text = /*
可以这样表示原始字符串
换行自动被解释为'\r\n'
*/

4、其他

var fileName;// 全路径文件名
var dirName;// 当前路径,由命令行传入
这些变量声明最好放在实际使用他的代码前面,以增进代码的可读性。

win.clip.OpenClipboard(0);在代码中可尽可能靠尽win.clip.CloseClipboard();
多处调用win.clip.CloseClipboard();可以修改思路合并为一个win.clip.CloseClipboard();
一段代码一个入口、一个出口,相关的代码尽可能码到一起(聚合性)。

循环测试可用文件名因为在多处重用,可以写一个函数,例如 getPath
以下是改进后的代码( 未仔细测试,仅供参考 )。


  源代码 [ aardio ]

01if( _ARGV ? _ARGV[1] ) {
02 
03    import gdip;
04    import win.clip;
05    import fsys;
06     
07    // 取文件名
08    var getPath = function( name ){
09        var path;
10        name = string.replace(name,"\.\w+$","%d\0");
11        for(i=1;0xFFFF;1){
12            path = fsys.joinpath(_ARGV[1],string.format(name,i));
13            if( ! io.exist(path) ) return path;
14        }
15    }
16     
17    // 取剪贴板文字
18    win.clip.OpenClipboard(0);
19    var hData = win.clip.GetClipboardData(0x1/*_CF_TEXT*/)
20    if( hData ){
21        string.save(getPath("剪贴板文本 .txt"), raw.tostring(hData))
22    }
23    else {
24        hData = win.clip.GetClipboardData(0x2/*_CF_BITMAP*/)
25        if( hData ){
26            var bitmap = gdip.bitmap(hData, 0);
27            bitmap.save(getPath("剪贴板文本 .txt")); 
28        }
29        else {
30            win.msgbox("当前剪贴板中没有图片或文本供粘贴!" )
31        }
32    }
33    win.clip.CloseClipboard();
34    return; //不显示设置界面
35}
36 
37import win.ui; 
38/*DSG{{*/
39var winform = ..win.form(text="剪贴板文字或图片生成文件";right=449;bottom=292;border="dialog frame";max=false)
40winform.add(
41button={cls="button";text="添加右键菜单";left=16;top=18;right=153;bottom=64;z=1};
42button2={cls="button";text="删除右键菜单";left=16;top=76;right=153;bottom=122;z=2};
43edit={cls="edit";left=162;top=17;right=434;bottom=226;autohscroll=false;bgcolor=12639424;border=1;edge=1;multiline=1;z=3}
44)
45/*}}*/
46 
47import win.reg;
48winform.button2.oncommand = function(id,event){
49     
50    var reg = win.reg("HKEY_CLASSES_ROOT\Directory\Background\shell\剪贴板to文件")
51    var reg2 = win.reg("HKEY_CLASSES_ROOT\Directory\shell\剪贴板to文件")
52    if(reg.delKeyTree("") and reg2.delKeyTree("")){
53        winform.msgbox("右键菜单删除成功!")
54    }
55    else {
56        winform.msgbox("右键菜单删除失败!")
57    }
58     
59    reg.close()
60    reg2.close()
61}
62 
63winform.button.oncommand = function(id,event){
64    //这个表项可以在资源管理器中显示,但命令行必须是 "%v"
65    var reg = win.reg("HKEY_CLASSES_ROOT\Directory\Background\shell\剪贴板to文件\command")
66    var reg2 = win.reg("HKEY_CLASSES_ROOT\Directory\shell\剪贴板to文件\command")
67    if(reg.setSzValue("",'"' + io._exepath + '"' + ' "%v"') and
68        reg2.setSzValue("",'"' + io._exepath + '"' + ' "%1"')){
69        winform.msgbox("右键菜单添加成功!")
70    }
71    else {
72        winform.msgbox("右键菜单添加失败!")
73    }
74    reg.close()
75}
76 
77winform.edit.text = /*
78添加右键菜单后,会在资源管理器右键菜单中出现"剪贴板toXX",复制了文字或图片点击右键中的
79"剪贴板toXX"就可在当前目录产生一个对应内容的文件。
80 
81注意 :
82该程序保存位置变更后需要重新 生成右键菜单 ,之前添加会自动删除掉。
83*/
84 
85winform.show()
86win.loopMessage();

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[AAuto] 菜单演示程序
!!!!【AAuto】QQ 客户端全源码
如何在 Win7 下一键清空剪贴板
Win8关机又一绝技 让“Win8关机”进右键
解决win10打开office时操作系统当前的配置不能运行此应用程序
不习惯Win11右键菜单?三招教你恢复到经典模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服