diff --git a/README.md b/README.md index c7d2d54..0ccf3a9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@  - WinXray V4.3 文件拖放现在支持了二维码图片的节点识别;传输现在添加了grpc! + WinXray V4.4 修复托盘右键扫一扫导入节点报错! 导语: diff --git a/WinXray/WinXray.exe b/WinXray/WinXray.exe index 995225f..e59e2f5 100644 Binary files a/WinXray/WinXray.exe and b/WinXray/WinXray.exe differ diff --git a/default.aproj b/default.aproj index cf60f48..bf9c612 100644 --- a/default.aproj +++ b/default.aproj @@ -1,5 +1,5 @@  - + diff --git a/lib/xray/outbounds.aardio b/lib/xray/outbounds.aardio index a51fe6d..336c0c3 100644 --- a/lib/xray/outbounds.aardio +++ b/lib/xray/outbounds.aardio @@ -850,8 +850,8 @@ importFromClipboard = function(refreshConfig){ if( ..string.startWith(str,"http://") || ..string.startWith(str,"https://") || ..string.match(str,"^\s*/\N+\s*$") ){ - import UpdateSubscription; - if( UpdateSubscription.updateSubscription({[str]=true}) ){return true} + //import UpdateSubscription; + if( updateSubscription({[str]=true}) ){return true} else {return false} } diff --git a/main.aardio b/main.aardio index 3e04f11..4a1d9ac 100644 --- a/main.aardio +++ b/main.aardio @@ -1,168 +1,168 @@ -/*启动参数检测{{*/ -if(_ARGV.github){ - loadcodex("\forms\main\tools\github.aardio"); - return; -} -if(_ARGV.uwp){ - loadcodex("\forms\main\tools\uwpExemption.aardio"); - return; -} -elseif(_ARGV.sshInstall){ - import fsys.wow64; - import process; - import console; - console.open(); - - var prcs; - fsys.wow64.disableRedirection( - function(){ - var dest,port = string.match(_ARGV.sshInstall,"(.+)\:(\d+)"); - if(dest&&port){ - _ARGV.sshInstall = "-p" + port +" " + dest; - } - - prcs = process("ssh","-t " +_ARGV.sshInstall + ` "echo -e '安装完成以后,您可以一次性复制所有服务器账号配置 - 然后在 WinXray 主界面点击\e[1;31m「批量导入链接」\e[0m即可,WinXray将逐行识别有效的服务器分享链接或通用JSON配置,并忽略无效的行。如果 CentOS 8安装失败 - 可尝试更换为 CentOS 7 并重新安装。\n';firewall-cmd --permanent --add-port=80/tcp;firewall-cmd --permanent --add-port=443/tcp;firewall-cmd --reload;iptables -A INPUT -p tcp --dport 80 -j ACCEPT;iptables -A INPUT -p tcp --dport 443 -j ACCEPT;wget -P /root -N --no-check-certificate ""https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh"" && chmod 700 /root/install.sh && /root/install.sh"`) - if(!prcs){ - if(_WIN10_LATER){ - import process.control; - process.control("ms-settings:optionalfeatures"); - console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); - } - else { - console.log("此功能仅支持 Windows 10 系统"); - } - } - else { - import process.job.limitKill; - prcs.assignToJobObject(process.job.limitKill); - prcs.wait(); - } - - console.pause(); - } - ) - - return; -} -elseif(_ARGV.sshLogin){ - import fsys.wow64; - import process; - import console; - console.open(); - - var prcs; - fsys.wow64.disableRedirection( - function(){ - var dest,port = string.match(_ARGV.sshLogin,"(.+)\:(\d+)"); - if(dest&&port){ - _ARGV.sshLogin = "-p" + port +" " + dest; - } - - prcs = process("ssh","-t " +_ARGV.sshLogin + ``) - if(!prcs){ - if(_WIN10_LATER){ - import process.control; - process.control("ms-settings:optionalfeatures"); - console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); - } - else { - console.log("此功能仅支持 Windows 10 系统"); - } - } - else { - import process.job.limitKill; - prcs.assignToJobObject(process.job.limitKill); - prcs.wait(); - } - - console.pause(); - } - ) - - return; -} -elseif(_ARGV.sshInstallKey){ - import fsys.wow64; - import process; - import console; - console.open(); - - var prcs; - fsys.wow64.disableRedirection( - function(){ - var sshKeyPath = io.getSpecial(0x28/*_CSIDL_PROFILE*/,"/.ssh/id_rsa.pub") ; - var keyData = string.load(sshKeyPath); - if(!keyData){ - var prcs = process.popen("ssh-keygen",` -t rsa -f "`+io.getSpecial(0x28/*_CSIDL_PROFILE*/,"/.ssh/id_rsa")+`" -y`); - keyData = prcs? prcs.read(-1); - } - - if(!keyData){ - if(_WIN10_LATER){ - import process.control; - process.control("ms-settings:optionalfeatures"); - console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); - } - else { - console.log("此功能仅支持 Windows 10 系统"); - } - } - else{ - var dest,port = string.match(_ARGV.sshInstallKey,"(.+)\:(\d+)"); - if(dest&&port){ - _ARGV.sshInstallKey = "-p" + port +" " + dest; - } - - prcs = process("ssh","-t " +_ARGV.sshInstallKey + ` "mkdir -p ~/.ssh;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys;echo '`+keyData+`' > ~/.ssh/authorized_keys"`) - if(!prcs){ - if(_WIN10_LATER){ - import process.control; - process.control("ms-settings:optionalfeatures"); - console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); - } - else { - console.log("此功能仅支持 Windows 10 系统"); - } - } - else { - import process.job.limitKill; - prcs.assignToJobObject(process.job.limitKill); - prcs.wait(); - } - } - - console.pause(); - } - ) - - return; -} -elseif(_ARGV.updateTime){ - import time.ntp; - time.ntp.updateSystemTime(); - return; -} -else { - import process; - import fsys.update.simpleMain; - - if( fsys.update.simpleMain( - "WinXray(网络代理通用客户端 )", - "https://raw.githubusercontent.com/TheMRLL/winxray/main/release/update/version.txt", - ..io.appData("/WinXray/update"), - function(version,description,status){} - ,,false)){ - return 0; - } -} -/*}}*/ -import fonts.fontAwesome; +/*启动参数检测{{*/ +if(_ARGV.github){ + loadcodex("\forms\main\tools\github.aardio"); + return; +} +if(_ARGV.uwp){ + loadcodex("\forms\main\tools\uwpExemption.aardio"); + return; +} +elseif(_ARGV.sshInstall){ + import fsys.wow64; + import process; + import console; + console.open(); + + var prcs; + fsys.wow64.disableRedirection( + function(){ + var dest,port = string.match(_ARGV.sshInstall,"(.+)\:(\d+)"); + if(dest&&port){ + _ARGV.sshInstall = "-p" + port +" " + dest; + } + + prcs = process("ssh","-t " +_ARGV.sshInstall + ` "echo -e '安装完成以后,您可以一次性复制所有服务器账号配置 - 然后在 WinXray 主界面点击\e[1;31m「批量导入链接」\e[0m即可,WinXray将逐行识别有效的服务器分享链接或通用JSON配置,并忽略无效的行。如果 CentOS 8安装失败 - 可尝试更换为 CentOS 7 并重新安装。\n';firewall-cmd --permanent --add-port=80/tcp;firewall-cmd --permanent --add-port=443/tcp;firewall-cmd --reload;iptables -A INPUT -p tcp --dport 80 -j ACCEPT;iptables -A INPUT -p tcp --dport 443 -j ACCEPT;wget -P /root -N --no-check-certificate ""https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh"" && chmod 700 /root/install.sh && /root/install.sh"`) + if(!prcs){ + if(_WIN10_LATER){ + import process.control; + process.control("ms-settings:optionalfeatures"); + console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); + } + else { + console.log("此功能仅支持 Windows 10 系统"); + } + } + else { + import process.job.limitKill; + prcs.assignToJobObject(process.job.limitKill); + prcs.wait(); + } + + console.pause(); + } + ) + + return; +} +elseif(_ARGV.sshLogin){ + import fsys.wow64; + import process; + import console; + console.open(); + + var prcs; + fsys.wow64.disableRedirection( + function(){ + var dest,port = string.match(_ARGV.sshLogin,"(.+)\:(\d+)"); + if(dest&&port){ + _ARGV.sshLogin = "-p" + port +" " + dest; + } + + prcs = process("ssh","-t " +_ARGV.sshLogin + ``) + if(!prcs){ + if(_WIN10_LATER){ + import process.control; + process.control("ms-settings:optionalfeatures"); + console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); + } + else { + console.log("此功能仅支持 Windows 10 系统"); + } + } + else { + import process.job.limitKill; + prcs.assignToJobObject(process.job.limitKill); + prcs.wait(); + } + + console.pause(); + } + ) + + return; +} +elseif(_ARGV.sshInstallKey){ + import fsys.wow64; + import process; + import console; + console.open(); + + var prcs; + fsys.wow64.disableRedirection( + function(){ + var sshKeyPath = io.getSpecial(0x28/*_CSIDL_PROFILE*/,"/.ssh/id_rsa.pub") ; + var keyData = string.load(sshKeyPath); + if(!keyData){ + var prcs = process.popen("ssh-keygen",` -t rsa -f "`+io.getSpecial(0x28/*_CSIDL_PROFILE*/,"/.ssh/id_rsa")+`" -y`); + keyData = prcs? prcs.read(-1); + } + + if(!keyData){ + if(_WIN10_LATER){ + import process.control; + process.control("ms-settings:optionalfeatures"); + console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); + } + else { + console.log("此功能仅支持 Windows 10 系统"); + } + } + else{ + var dest,port = string.match(_ARGV.sshInstallKey,"(.+)\:(\d+)"); + if(dest&&port){ + _ARGV.sshInstallKey = "-p" + port +" " + dest; + } + + prcs = process("ssh","-t " +_ARGV.sshInstallKey + ` "mkdir -p ~/.ssh;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys;echo '`+keyData+`' > ~/.ssh/authorized_keys"`) + if(!prcs){ + if(_WIN10_LATER){ + import process.control; + process.control("ms-settings:optionalfeatures"); + console.log("请检查是否指定了正确的SSH端口,或尝试重新安装 OpenSSH.Client"); + } + else { + console.log("此功能仅支持 Windows 10 系统"); + } + } + else { + import process.job.limitKill; + prcs.assignToJobObject(process.job.limitKill); + prcs.wait(); + } + } + + console.pause(); + } + ) + + return; +} +elseif(_ARGV.updateTime){ + import time.ntp; + time.ntp.updateSystemTime(); + return; +} +else { + import process; + import fsys.update.simpleMain; + + if( fsys.update.simpleMain( + "WinXray(网络代理通用客户端 )", + "https://raw.githubusercontent.com/TheMRLL/winxray/main/release/update/version.txt", + ..io.appData("/WinXray/update"), + function(version,description,status){} + ,,false)){ + return 0; + } +} +/*}}*/ +import fonts.fontAwesome; import win.ui; /*DSG{{*/ mainForm = win.form(text="WinXray";right=1019;bottom=679;bgcolor=15793151;border="none") mainForm.add( Promote={cls="plus";text="推荐";left=0;top=300;right=85;bottom=380;bkBottom=3;bkLeft=7;bkRight=8;bkTop=2;border={color=-65536};color=16777215;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={font=LOGFONT(h=-37;name='FontAwesome');padding={bottom=20}};iconText='\uF233';notify=1;textPadding={bottom=10};valign="bottom";x=0.5;y=0.2;z=8}; -caption={cls="bkplus";text="WinXray.COM V4.3";left=25;top=9;right=685;bottom=27;align="left";color=6052956;dl=1;dt=1;font=LOGFONT(h=-14);z=6}; +caption={cls="bkplus";text="WinXray.COM V4.4";left=25;top=9;right=685;bottom=27;align="left";color=6052956;dl=1;dt=1;font=LOGFONT(h=-14);z=6}; custom={cls="custom";left=83;top=40;right=1022;bottom=679;bgcolor=16777215;db=1;dl=1;dr=1;dt=1;z=3}; navBar={cls="bkplus";left=0;top=37;right=83;bottom=681;bgcolor=3442175;db=1;dl=1;dt=1;z=1}; navJsonConfig={cls="plus";text="配置";left=0;top=132;right=85;bottom=212;bkBottom=3;bkLeft=7;bkRight=8;bkTop=2;border={color=-65536};color=16777215;dl=1;dt=1;font=LOGFONT(h=-13);iconStyle={font=LOGFONT(h=-37;name='FontAwesome');padding={bottom=20}};iconText='\uF0F6';notify=1;textPadding={bottom=10};valign="bottom";x=0.5;y=0.2;z=5}; @@ -172,235 +172,235 @@ titleBar={cls="bkplus";left=0;top=0;right=1022;bottom=38;bgcolor=8036607;dl=1;dr ) /*}}*/ -import win.ui.atom; -var atom,hwnd = mainForm.atom("DFA5667E-1D8C-49C0-8918-C6FEC2DECCF8"); -if(!atom){ - win.showForeground(hwnd); - win.quitMessage(); - return; -} - -import win.ui.simpleWindow; -win.ui.simpleWindow( mainForm ); - -import win.dlg.message; -win.dlg.message.install(); - -import win.ui.tabs; -var tbs = win.ui.tabs( - mainForm.navStart, - mainForm.navJsonConfig, - mainForm.navTools -); - -tbs.skin({ - background={ - active=0xFFFFFFFF; - default=0x00FFFFFF; - hover=0x38FFFFFF - }; - color={ - default=0xFFFFFFFF; - }; - checked={ - background={default=0xFFFFFFFF;}; - color={default=0xff86a543;}; - } -}) - -tbs.loadForm(1,"\forms\main\xray.aardio" ); -tbs.loadForm(2,"\forms\main\config\jsonConfig.aardio" ); -tbs.loadForm(3,"\forms\main\tools\tools.aardio"); - -tbs.selIndex = 1; - -import xray.core; -import win.ui.menu; -mainForm.wndproc = { - [0xACCF/*_WM_TRAYMESSAGE*/ ] = function(hwnd,message,wParam,lParam){ - if( lParam = 0x205/*_WM_RBUTTONUP*/ ){ - win.setForeground(mainForm.hwnd) - mainForm.popmenu = win.ui.popmenu(mainForm); - mainForm.popmenu.add('自动切换到最快的服务器',function(id){ - publish("uiCommand.restartxrayCore",) - }); - mainForm.popmenu.add('立即更新所有订阅源',function(id){ - xray.outbounds.updateSubscription(); - }); - mainForm.popmenu.add("扫一扫导入节点",function(){ - import zbar; - import com.picture; - var scanner = zbar.scanner(); - scanner.config('qrcode.enable'); - scanner.scanBitmap(com.picture.snap(),function(typeName,data){ - import win.clip; - win.clip.write(data); - - import xray.outbounds; - if( !xray.outbounds.importFromClipboard(true) ){ - mainForm.msgInfo('二维码信息已保存至剪切板\r\n"'+data+'"'); - } - }) - }) - mainForm.popmenu.add(); - - import xray.core; - var id = mainForm.popmenu.add('不使用代理',function(id){ - sysProxy.switch("direct"); - }); - mainForm.popmenu.check(id,config.proxy.mode=="direct",0/*_MF_BYCOMMAND*/); - - var id = mainForm.popmenu.add('使用全局代理',function(id){ - sysProxy.switch("proxy"); - }); - mainForm.popmenu.check(id,config.proxy.mode=="proxy",0/*_MF_BYCOMMAND*/); - - var id = mainForm.popmenu.add('使用 PAC 自动代理',function(id){ - sysProxy.switch("pac"); - }); - mainForm.popmenu.check(id,config.proxy.mode=="pac",0/*_MF_BYCOMMAND*/); - - mainForm.popmenu.add(); - - mainForm.popmenu.add('编辑 PAC 配置',function(id){ - publish("uiCommand.showPacForm"); - }); - - if(_WIN10_LATER){ - mainForm.popmenu.add('UWP 应用代理配置',function(id){ - if(_STUDIO_INVOKED){ - mainForm.msgErr("请先发布为 EXE!"); - return; - } - - import process; - process.execute(io._exepath,"/uwp","runas") - }); - } - - mainForm.popmenu.add(); - - if(_WIN10_LATER){ - mainForm.popmenu.add('打开系统代理设置',function(id){ - import process.control; - process.control("ms-settings:network-proxy") - }); - mainForm.popmenu.add('打开 Internet 代理选项',function(id){ - import process.control; - process.control("inetcpl.cpl",,4); - }); - } - else { - mainForm.popmenu.add('打开系统代理设置',function(id){ - import process.control; - process.control("inetcpl.cpl",,4); - }); - } - - mainForm.popmenu.add('打开网卡连接',function(id){ - import process; - process.explore("shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"); - }); - mainForm.popmenu.add(); - - mainForm.popmenu.add('WinXray官网',function(id){ - import process; - process.openUrl("https://www.winxray.com") - }); - - import chrome.path; - var chromePath = chrome.path(); - if(chromePath && xray.core.socksProxyPort){ - mainForm.popmenu.add('使用 SOCKS5 代理打开浏览器',function(id){ - import process - process.execute(chromePath,` --proxy-server="SOCKS5://127.0.0.1:`+xray.core.socksProxyPort - +`" --user-data-dir="` +io.appData("WinXray/chrome-socks5")+ `" https://www.google.com`); - }); - } - - mainForm.popmenu.add(); - mainForm.popmenu.add('退出',function(id){ - mainForm.onClose = null; - mainForm.close() - }); - - var pt = ::POINT(); - ::User32.GetCursorPos(pt); - mainForm.popmenu.popup(pt.x,pt.y,true) - } - elseif( lParam = 0x203/*_WM_LBUTTONDBLCLK*/) { - if(win.isIconic(mainForm.hwnd)){ - mainForm.show(9/*_SW_RESTORE*/); - } - else { - mainForm.show(); - } - - win.setForeground(mainForm.hwnd); - } - } -} - -mainForm.onDestroy = function(){ - mainForm.tray.delete(); -} - -import win.util.tray; -mainForm.onClose = function(hwnd,message,wParam,lParam){ - if(!mainForm.tray){ - mainForm.tray = win.util.tray(mainForm); - } - else { - mainForm.tray.reset(); - } - - mainForm.show(false); - return true; -} - -mainForm.tray = win.util.tray(mainForm) -if(!_ARGV.tray){ - mainForm.show(); -} - -import win.image; -var trayIcons = { - direct = win.image.loadIconFromFile("\forms\ico\app-direct.ico"); - pac = win.image.loadIconFromFile("\forms\ico\app-pac.ico"); - proxy = _HAPPICON -} - -subscribe("sysProxy.modeChanged",function(active){ - mainForm.tray.icon = trayIcons[config.proxy.mode] ; -}) - -subscribe("uiCommand.HotkeyChanged",function(...){ - if(#config.proxy.hotkey){ - if(mainForm.hkProxyId){ - mainForm.unreghotkey(mainForm.hkProxyId) - mainForm.hkProxyId = null; - } - - mainForm.hkProxyId = mainForm.reghotkey( function(id,mod,vk){ - import sysProxy; - var mode = sysProxy.switchHotkey(); - var dlg = win.dlg.message(win.getForeground()) - dlg.ok(mode=="pac"?"已切换到 PAC 代理模式":"已切换到全局代理模式",1200); - },config.proxy.hotkey[1],config.proxy.hotkey[2]) - } -} ) -publish("uiCommand.HotkeyChanged"); - -mainForm.Promote.skin( - background = { - hover = "/res/images/btn-hover.png"; - focus = "/res/images/btn-focus.jpg"; - active = "/res/images/btn-active.png"; - disabled = "/res/images/btn-disabled.png"; - } -) -mainForm.Promote.oncommand = function(id,event){ - process.execute("https://ads.iuvpn.com"); -} - +import win.ui.atom; +var atom,hwnd = mainForm.atom("DFA5667E-1D8C-49C0-8918-C6FEC2DECCF8"); +if(!atom){ + win.showForeground(hwnd); + win.quitMessage(); + return; +} + +import win.ui.simpleWindow; +win.ui.simpleWindow( mainForm ); + +import win.dlg.message; +win.dlg.message.install(); + +import win.ui.tabs; +var tbs = win.ui.tabs( + mainForm.navStart, + mainForm.navJsonConfig, + mainForm.navTools +); + +tbs.skin({ + background={ + active=0xFFFFFFFF; + default=0x00FFFFFF; + hover=0x38FFFFFF + }; + color={ + default=0xFFFFFFFF; + }; + checked={ + background={default=0xFFFFFFFF;}; + color={default=0xff86a543;}; + } +}) + +tbs.loadForm(1,"\forms\main\xray.aardio" ); +tbs.loadForm(2,"\forms\main\config\jsonConfig.aardio" ); +tbs.loadForm(3,"\forms\main\tools\tools.aardio"); + +tbs.selIndex = 1; + +import xray.core; +import win.ui.menu; +mainForm.wndproc = { + [0xACCF/*_WM_TRAYMESSAGE*/ ] = function(hwnd,message,wParam,lParam){ + if( lParam = 0x205/*_WM_RBUTTONUP*/ ){ + win.setForeground(mainForm.hwnd) + mainForm.popmenu = win.ui.popmenu(mainForm); + mainForm.popmenu.add('自动切换到最快的服务器',function(id){ + publish("uiCommand.restartxrayCore",) + }); + mainForm.popmenu.add('立即更新所有订阅源',function(id){ + xray.outbounds.updateSubscription(); + }); + mainForm.popmenu.add("扫一扫导入节点",function(){ + import zbar; + import com.picture; + var scanner = zbar.scanner(); + scanner.config('qrcode.enable'); + scanner.scanBitmap(com.picture.snap(),function(typeName,data){ + import win.clip; + win.clip.write(data); + + import xray.outbounds; + if( !xray.outbounds.importFromClipboard(true) ){ + mainForm.msgInfo('二维码信息已保存至剪切板\r\n"'+data+'"'); + } + }) + }) + mainForm.popmenu.add(); + + import xray.core; + var id = mainForm.popmenu.add('不使用代理',function(id){ + sysProxy.switch("direct"); + }); + mainForm.popmenu.check(id,config.proxy.mode=="direct",0/*_MF_BYCOMMAND*/); + + var id = mainForm.popmenu.add('使用全局代理',function(id){ + sysProxy.switch("proxy"); + }); + mainForm.popmenu.check(id,config.proxy.mode=="proxy",0/*_MF_BYCOMMAND*/); + + var id = mainForm.popmenu.add('使用 PAC 自动代理',function(id){ + sysProxy.switch("pac"); + }); + mainForm.popmenu.check(id,config.proxy.mode=="pac",0/*_MF_BYCOMMAND*/); + + mainForm.popmenu.add(); + + mainForm.popmenu.add('编辑 PAC 配置',function(id){ + publish("uiCommand.showPacForm"); + }); + + if(_WIN10_LATER){ + mainForm.popmenu.add('UWP 应用代理配置',function(id){ + if(_STUDIO_INVOKED){ + mainForm.msgErr("请先发布为 EXE!"); + return; + } + + import process; + process.execute(io._exepath,"/uwp","runas") + }); + } + + mainForm.popmenu.add(); + + if(_WIN10_LATER){ + mainForm.popmenu.add('打开系统代理设置',function(id){ + import process.control; + process.control("ms-settings:network-proxy") + }); + mainForm.popmenu.add('打开 Internet 代理选项',function(id){ + import process.control; + process.control("inetcpl.cpl",,4); + }); + } + else { + mainForm.popmenu.add('打开系统代理设置',function(id){ + import process.control; + process.control("inetcpl.cpl",,4); + }); + } + + mainForm.popmenu.add('打开网卡连接',function(id){ + import process; + process.explore("shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"); + }); + mainForm.popmenu.add(); + + mainForm.popmenu.add('WinXray官网',function(id){ + import process; + process.openUrl("https://www.winxray.com") + }); + + import chrome.path; + var chromePath = chrome.path(); + if(chromePath && xray.core.socksProxyPort){ + mainForm.popmenu.add('使用 SOCKS5 代理打开浏览器',function(id){ + import process + process.execute(chromePath,` --proxy-server="SOCKS5://127.0.0.1:`+xray.core.socksProxyPort + +`" --user-data-dir="` +io.appData("WinXray/chrome-socks5")+ `" https://www.google.com`); + }); + } + + mainForm.popmenu.add(); + mainForm.popmenu.add('退出',function(id){ + mainForm.onClose = null; + mainForm.close() + }); + + var pt = ::POINT(); + ::User32.GetCursorPos(pt); + mainForm.popmenu.popup(pt.x,pt.y,true) + } + elseif( lParam = 0x203/*_WM_LBUTTONDBLCLK*/) { + if(win.isIconic(mainForm.hwnd)){ + mainForm.show(9/*_SW_RESTORE*/); + } + else { + mainForm.show(); + } + + win.setForeground(mainForm.hwnd); + } + } +} + +mainForm.onDestroy = function(){ + mainForm.tray.delete(); +} + +import win.util.tray; +mainForm.onClose = function(hwnd,message,wParam,lParam){ + if(!mainForm.tray){ + mainForm.tray = win.util.tray(mainForm); + } + else { + mainForm.tray.reset(); + } + + mainForm.show(false); + return true; +} + +mainForm.tray = win.util.tray(mainForm) +if(!_ARGV.tray){ + mainForm.show(); +} + +import win.image; +var trayIcons = { + direct = win.image.loadIconFromFile("\forms\ico\app-direct.ico"); + pac = win.image.loadIconFromFile("\forms\ico\app-pac.ico"); + proxy = _HAPPICON +} + +subscribe("sysProxy.modeChanged",function(active){ + mainForm.tray.icon = trayIcons[config.proxy.mode] ; +}) + +subscribe("uiCommand.HotkeyChanged",function(...){ + if(#config.proxy.hotkey){ + if(mainForm.hkProxyId){ + mainForm.unreghotkey(mainForm.hkProxyId) + mainForm.hkProxyId = null; + } + + mainForm.hkProxyId = mainForm.reghotkey( function(id,mod,vk){ + import sysProxy; + var mode = sysProxy.switchHotkey(); + var dlg = win.dlg.message(win.getForeground()) + dlg.ok(mode=="pac"?"已切换到 PAC 代理模式":"已切换到全局代理模式",1200); + },config.proxy.hotkey[1],config.proxy.hotkey[2]) + } +} ) +publish("uiCommand.HotkeyChanged"); + +mainForm.Promote.skin( + background = { + hover = "/res/images/btn-hover.png"; + focus = "/res/images/btn-focus.jpg"; + active = "/res/images/btn-active.png"; + disabled = "/res/images/btn-disabled.png"; + } +) +mainForm.Promote.oncommand = function(id,event){ + process.execute("https://ads.iuvpn.com"); +} + return win.loopMessage(); \ No newline at end of file diff --git a/release/WinXray.7z b/release/WinXray.7z index 6f14467..933831d 100644 Binary files a/release/WinXray.7z and b/release/WinXray.7z differ diff --git a/release/WinXray32.7z b/release/WinXray32.7z index 5f8290b..264ebc4 100644 Binary files a/release/WinXray32.7z and b/release/WinXray32.7z differ diff --git a/release/update/checksum.lzma b/release/update/checksum.lzma index 73e2537..53a5bd3 100644 Binary files a/release/update/checksum.lzma and b/release/update/checksum.lzma differ diff --git a/release/update/files/WinXray.exe.lzma b/release/update/files/WinXray.exe.lzma index be87912..1ec8d3f 100644 Binary files a/release/update/files/WinXray.exe.lzma and b/release/update/files/WinXray.exe.lzma differ diff --git a/release/update/version.txt b/release/update/version.txt index 64ef9f8..cfa9b4c 100644 --- a/release/update/version.txt +++ b/release/update/version.txt @@ -1,8 +1,8 @@ { - "description":"V4.3 文件拖放现在支持了二维码图片的节点识别;传输现在添加了grpc!", + "description":"V4.4 修复托盘右键扫一扫导入节点报错!", "format":".lzma", "main":"\\WinXray.exe", "updater":"\\WinXray.exe", "url":"https://raw.githubusercontent.com/TheMRLL/winxray/main/release/update/", - "version":"4.3" + "version":"4.4" } \ No newline at end of file