分享一个屏幕亮度调节工具的源码
By
admin
at 2019-08-05 • 1人收藏 • 2147人看过
盯着屏幕时间久了, 眼睛难免不舒服, 把亮度调整下, 这样对眼睛很有好处.
以前用过护眼宝这个软件, 非常不错, 适合我们这种写代码的人用
但是,它在我的电脑上有时候启动不起来, 不知道为什么, 也许是杀毒软件惹的祸...
于是, 自己想着也写一个类似的, 自己用也方便.
编译好的软件exe下载:
exe分流下载地址:
https://www.crsky.com/soft/141021.html
源代码下载如下:
链接:https://pan.baidu.com/s/1ID3FqqcP6W0EUUeEoGhBOw
提取码:wsox
软件里使用了:
1, layeredRound分层窗体,
2,plus的穿透/拖动条/缩放,
3, 还有tray,右下角弹泡,右下角弹窗,
4,注册表的使用, 开机启动
嗯... 大概就这么多...
主界面maiform.aardio 代码如下:
import win.ui; /*DSG{{*/ mainForm = win.form(text="护眼";right=486;bottom=364;bgcolor=0;border="none";exmode="toolwindow") mainForm.add() /*}}*/ import fsys; import fsys.ini; var filepath = fsys.appdata("/护眼模式/set.ini"); if(!io.exist(filepath)){ string.save(filepath,$"/res/set.ini"); } var setini = fsys.ini(filepath); var 透明度 = tonumber(setini.read("透明度","数值","80")); var 颜色 = tonumber(setini.read("透明度","颜色","0")); //根据配置,设置背景色 mainForm.bgcolor = 颜色; //设置窗体覆盖在桌面工作区 mainForm.setRect(..win.getRect(win.getDesktop(),true)); //设置透明度 mainForm.transparent(透明度); //穿透 mainForm.modifyStyleEx(,0x20/*_WS_EX_TRANSPARENT*/); //置顶 win.setTopmost(mainForm.hwnd); //注册系统快捷键(作用:关闭蒙版 Ctrl+Q ) var hkId; mainForm.unreghotkey(hkId); hkId = mainForm.reghotkey( function(id,mod,vk){ mainForm.close() } ,2/*_MOD_CONTROL*/,'Q'# ); //弹出气泡提示 import win.util.tray; var tray = win.util.tray(mainForm) tray.pop("双击这里打开透明度调节功能","护眼模式") tray.message = 0xACCF/*_WM_TRAYMESSAGE*/ tray.tip = "护眼模式" //设置鼠标提示 //窗体处理接收到鼠标在右下角图标上自定义的(0xACCF)事件 //注意:此事件消息是可以自定义的哦 mainForm.wndproc = { [0xACCF/*_WM_TRAYMESSAGE*/ ] = function(hwnd,message,wParam,lParam){ if( lParam = 0x205/*_WM_RBUTTONUP*/ or lParam = 0x202/*_WM_LBUTTONUP*/ ){ var frmChild = mainForm.loadForm("\dlg\控制.aardio"); frmChild.show(); } } } //设置开机启动 import win.reg; reg = win.reg("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run") reg.setSzValue("护眼模式", io._exepath ); reg.close() mainForm.show(); return win.loopMessage();
控制.aardio 的代码如下:
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=561;bottom=38;image=$"\res\t.png";bkBottom=4;bkLeft=4;bkRight=4;bkTop=4;border="none";exmode="toolwindow") winform.add( black={cls="plus";left=443;top=0;right=482;bottom=39;border={radius=-1};color=12674;foreRepeat="center";forecolor=0;notify=1;z=2}; green={cls="plus";left=523;top=0;right=562;bottom=39;border={radius=-1};color=12674;foreRepeat="center";forecolor=32768;notify=1;z=4}; red={cls="plus";left=483;top=0;right=522;bottom=39;border={radius=-1};color=12674;foreRepeat="center";forecolor=128;z=3}; 透明度={cls="plus";left=0;top=0;right=442;bottom=39;border={color=-16777216;radius=5;width=1};color=12674;foreRight=16;forecolor=-16777216;linearGradient=0;z=1} ) /*}}*/ import fsys; import fsys.ini; var filepath = fsys.appdata("/护眼模式/set.ini"); var setini = fsys.ini(filepath); var 透明度 = tonumber(setini.read("透明度","数值","80")); var 颜色 = tonumber(setini.read("透明度","颜色","0")); if(颜色==0x000080){ 颜色=0x800000; } //设置透明度工具条区间和动态效果 winform.透明度.setTrackbarRange(1,255); winform.透明度.skin({ //进度条背景色 background={ default=0xFFFFFFFF }; //滑块颜色 color={ default=0xFF823100; hover=0xFF00AEFF } }) //更新颜色和透明度 winform.透明度.foreground = 0xFF000000 + 颜色; winform.透明度.progressPos = 透明度; //设置单选颜色块的动态放大缩小效果 var scaleSkin = { scale ={ active=1; //放大100% hover=0.8; //缩小为80% default=0.6;//默认缩小60% }; checked = { scale ={ active=1; //放大100% hover=0.8; //缩小为80% }; } group = "单选"; } //使用效果 winform.black.skin(scaleSkin); winform.red.skin(scaleSkin); winform.green.skin(scaleSkin); //判断哪个应该被选中 if(颜色 == 0){ winform.black.checked = true; }elseif(颜色 == 0x800000){ winform.red.checked = true; }else { winform.green.checked = true; } //获取桌面工作区大小 var rect = win.getWorkArea(); //设置透明度工具条位置(右下角) winform.setPos(rect.right-winform.width,rect.bottom-winform.height); //修改透明度 winform.透明度.onMouseMove = function(wParam,lParam){ if( wParam & 0x1/*_MK_LBUTTON*/ ){ if(winform.parent){ mainForm.transparent(winform.透明度.progressPos); setini.write("透明度","数值",tostring(winform.透明度.progressPos)); } } } //前置窗口,不然不点击工具条窗口不会消失 win.setForeground(winform.hwnd); //窗体失去焦点立即关闭 winform.onActivate = function(state,hwndOther,minimized){ if(!state) winform.close(); } winform.red.oncommand = function(id,event){ winform.透明度.foreground = 0xFF800000; if(winform.parent){ mainForm.bgcolor = 0x000080; mainForm.redrawBackground(); mainForm.transparent(winform.透明度.progressPos); setini.write("透明度","数值",tostring(winform.透明度.progressPos)); setini.write("透明度","颜色",tostring(0x000080)); } } winform.black.oncommand = function(id,event){ winform.透明度.foreground = 0xFF000000; if(winform.parent){ mainForm.bgcolor = 0x000000; mainForm.redrawBackground(); mainForm.transparent(winform.透明度.progressPos); setini.write("透明度","数值",tostring(winform.透明度.progressPos)); setini.write("透明度","颜色",tostring(0x000000)); } } winform.green.oncommand = function(id,event){ winform.透明度.foreground = 0xFF008000; if(winform.parent){ mainForm.bgcolor = 0x008000 mainForm.redrawBackground(); mainForm.transparent(winform.透明度.progressPos); setini.write("透明度","数值",tostring(winform.透明度.progressPos)); setini.write("透明度","颜色",tostring(0x008000)); } } //使用分层圆角窗体特效 import win.ui.layeredRound; win.ui.layeredRound(winform,5); winform.show(); win.loopMessage(); return winform;
有兴趣的可以,看看代码, 同时也希望大家能多提提意见, 多多改进下,
当然如果你有更好的方法, 可以在下面留言交流一下, 哈
登录后方可回帖