|
本帖最后由 slore 于 2018-11-19 20:59 编辑
此自定义界面组件(xml+lua),已经整合到以下帖子中,并且完成了WIFI,声音设置,日历,我的电脑属性,分辨率设置,关机(窗口模式,全屏模式),仿WIN10开始菜单完成了一半,
最新版本请参照该主题。
[ModernUI回归] explorer再见,WinXShell你好
程序效果:
使用方法
- WinXShell.exe -ui -jcfg UI_xxxxx\main.jcfg
复制代码
随着Windows 10的更新,原来越多的设置改为了
新的UI方式,但是目前PE还不支持此类应用。
(开始菜单,设置,网络,声音等)
现在,原来的PExlorer引入了duilib轻量的
DirectUI库,可通过xml格式直接绘制具有现代风格,
andriod等UI的界面了。
因为PExlorer是支持XP以上全部Windows版本,
不限语言,不限制7,8,10大版本,各种测试预览版本的
Shell,且Windows可能以后只有X了,所以将导入
UI库的PExlorer更名WinXShell并分离维护。
(导入UI库,导致体积会增大500KB)
除了界面可以自定义以外,按钮事件之类的,
我也希望大家可以发挥自己创造,所以结合已有
的json配置文件,定义了一套简单语法来完成初始化,
和按钮响应,滑块移动等动作,以及UI元素交互,
修改内容,颜色,大小等。
挺佩服用PECMD写界面的大神,以及PECMD的解析,
界面代码我作为一个码农都看不懂,自己做解析器发现
编译原理都遗忘到大学课堂了,所以定义了的语法是
类汇编的,可以避免括号等嵌套的处理。有机会的话,
会升级解释器,可以识别更高级的写法。
放出预览版是希望大家提案想要的功能,想要的界面交互,
以及UI大神把界面做好我就直接用啦。
代码写了不到3天,关机画面和设定的画面这个例子,
我找ICON,调颜色就花了1天 :(
搜索:duilib 可以看看界面支持什么元素。
基本常用的控件都是有的,虽然我改善了下
xml界面定义的语法,不过元素没有少,应该都可以用。
(JCFG的交互目前只处理了Button,Combo)
TODO:
资源ZIP形式打包
UI_显示设置
* 分辨率 ●
* 屏幕旋转 □
* 亮度设置滑块 □
UI_我的电脑属性
* Windows 版本信息
* CPU
* 机器信息
* 内存
UI_声音设置
* 调节滑块,静音按钮
* 快速启动栏,托盘位置关联
UI_WIFI连接
* WIFI列表
* 密码输入
* 连接实现(外部命令,内部函数)
UI_开始菜单
* 手机风格?
* 文件列表扫描,自动图标配置
* 右键菜单
jcfg代码说明:
代码定义整体不能使用双引号,需要时请使用@q转义,想直接使用@的时候,用 @@。(@后面不是q的话,@可以不转义)
OnLoad配置,主要进行元素初始化。
= #元素名, 值或函数;
值:整数,字符串,TRUE,FALSE
函数: 以()结尾(::开头的为内部函数)。
字符串: '开头,'结尾的字符串。内部需要利用'的话,请使用\s转义,想直接使用\的时候,用 \\。(\后面不是s的话,\可以不转义)
OnClick配置,各个元素点击后调用。
PUSH 值;
将值压入参数栈,供函数使用。
CALL 函数名;
调用函数。
内部函数:
目前实现了
GetResolutionList() - 获取可用分辨率列表;
GetCurrentResolution() - 获取当前分辨率;
SetResolution(多参数) - 设置分辨率;
Close() - 关闭界面;
Command(参数个数, 命令名) - 调用JS_CMD定义的外部程序;
需要参数的函数,第一个参数为参数个数,方便以后功能扩展。
例如:
设置分辨率可,
- PUSH 768;
- PUSH 1024;
- PUSH 2;
- CALL ::SetResolution();
复制代码
也可,
- PUSH '1024x768';
- PUSH 1;
- CALL ::SetResolution();
复制代码
也可,
- PUSH #元素; <-将获取元素的文本内容,格式(宽x高)
- PUSH 1;
- CALL ::SetResolution();
复制代码
TODO:
后续可以使用.来具体指定获取和设置的元素属性
#元素.TEXT
#元素.COLOR
#元素.HEIGHT
#元素.xxx
XML界面定义
- <Style name="PowerBtn" value="height="40" textcolor="#FF000000" hottextcolor="#FFFFFF" hotimage="color='#FFF48FB1'"" />
- <VerticalLayout bkcolor="#FFF9F9F9">
- <HorizontalLayout height="32" bkcolor="#FFC2185B">
- <Label text="电源" textpadding="5,0,0,0" />
- <Control />
- <Button name="::closebtn" bkimage="file='close.png'" width="16" height="16" padding="0,8,5,0" />
- </HorizontalLayout>
- <VerticalLayout height="150" bkcolor="#FFE91E63">
- <HorizontalLayout>
- <Control />
- <VerticalLayout width="128">
- <Button normalimage="power.png" height="48" width="48" enabled="false" padding="40,16,0,0" />
- <Label text="关闭计算机" font="24" textpadding="0,10,0,0" />
- </VerticalLayout>
- <Control />
- </HorizontalLayout>
- </VerticalLayout>
- <VerticalLayout>
- <Button name="shutdownbtn" text="关机" style="PowerBtn" />
- <Button name="restartbtn" text="重启" style="PowerBtn"/>
- <Button text="休眠" style="PowerBtn" enabled="false" />
- <Button text="待机" style="PowerBtn" enabled="false" />
- </VerticalLayout>
- </VerticalLayout>
复制代码
JCFG动作定义
- {
- "name":"UI_Shutdown",
- "baricon":"power.ico",
- "OnClick":
- {
- "shutdownbtn":"
- PUSH 'test';
- PUSH 1;
- CALL ::Command();
- CALL ::Close();
- ",
- "restartbtn":"
- PUSH 'reboot';
- PUSH 1;
- CALL ::Command();
- CALL ::Close();
- "
- },
- "JS_CMD":
- {
- "test": {
- "command": "notepad.exe",
- "parameters": "C:\\Windows\\win.ini"
- },
- "reboot": {
- "command": "Wpeutil.exe",
- "parameters": "Reboot"
- },
- "shutdown": {
- "command": "Wpeutil.exe",
- "parameters": "Shutdown"
- }
- }
- }
复制代码
|
评分
-
查看全部评分
|