分享一个屏幕亮度调节工具的源码

By admin at 2019-08-05 • 1人收藏 • 2106人看过

盯着屏幕时间久了, 眼睛难免不舒服, 把亮度调整下, 这样对眼睛很有好处.

以前用过护眼宝这个软件, 非常不错, 适合我们这种写代码的人用

但是,它在我的电脑上有时候启动不起来, 不知道为什么, 也许是杀毒软件惹的祸...

于是, 自己想着也写一个类似的, 自己用也方便.

image.png


image.png



编译好的软件exe下载:

屏幕亮度调节工具.zip


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;

有兴趣的可以,看看代码, 同时也希望大家能多提提意见, 多多改进下,

当然如果你有更好的方法, 可以在下面留言交流一下, 哈

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...