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

By admin at 2019-08-05 • 0人收藏 • 332人看过

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

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

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

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

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;

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

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

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...