无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 25117|回复: 59
打印 上一主题 下一主题

[原创] [预览]WinXShell - 可创建现代风格窗口界面的Windows Shell

    [复制链接]
跳转到指定楼层
#
发表于 2017-3-10 02:00:54 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 slore 于 2018-11-19 20:59 编辑

此自定义界面组件(xml+lua),已经整合到以下帖子中,并且完成了WIFI,声音设置,日历,我的电脑属性,分辨率设置,关机(窗口模式,全屏模式),仿WIN10开始菜单完成了一半,
最新版本请参照该主题。


[ModernUI回归] explorer再见,WinXShell你好

程序效果:




使用方法
  1. 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定义的外部程序;

需要参数的函数,第一个参数为参数个数,方便以后功能扩展。

例如:
设置分辨率可,
  1. PUSH 768;
  2. PUSH 1024;
  3. PUSH 2;
  4. CALL ::SetResolution();
复制代码


也可,
  1. PUSH '1024x768';
  2. PUSH 1;
  3. CALL ::SetResolution();
复制代码


也可,
  1. PUSH #元素;  <-将获取元素的文本内容,格式(宽x高)
  2. PUSH 1;
  3. CALL ::SetResolution();
复制代码


TODO:
后续可以使用.来具体指定获取和设置的元素属性
#元素.TEXT
#元素.COLOR
#元素.HEIGHT
#元素.xxx


XML界面定义

  1.     <Style name="PowerBtn" value="height=&quot;40&quot; textcolor=&quot;#FF000000&quot; hottextcolor=&quot;#FFFFFF&quot; hotimage=&quot;color='#FFF48FB1'&quot;" />
  2.     <VerticalLayout bkcolor="#FFF9F9F9">
  3.         <HorizontalLayout height="32" bkcolor="#FFC2185B">
  4.             <Label text="电源" textpadding="5,0,0,0" />
  5.             <Control />
  6.             <Button name="::closebtn" bkimage="file='close.png'" width="16" height="16" padding="0,8,5,0" />
  7.         </HorizontalLayout>
  8.         <VerticalLayout height="150" bkcolor="#FFE91E63">
  9.             <HorizontalLayout>
  10.                 <Control />
  11.                 <VerticalLayout width="128">
  12.                     <Button normalimage="power.png" height="48" width="48" enabled="false" padding="40,16,0,0" />
  13.                     <Label text="关闭计算机" font="24" textpadding="0,10,0,0" />
  14.                 </VerticalLayout>
  15.                 <Control />
  16.             </HorizontalLayout>
  17.         </VerticalLayout>
  18.         <VerticalLayout>
  19.             <Button name="shutdownbtn" text="关机" style="PowerBtn" />
  20.             <Button name="restartbtn" text="重启" style="PowerBtn"/>
  21.             <Button text="休眠" style="PowerBtn" enabled="false" />
  22.             <Button text="待机" style="PowerBtn" enabled="false" />
  23.         </VerticalLayout>
  24.     </VerticalLayout>
复制代码


JCFG动作定义

  1. {
  2.   "name":"UI_Shutdown",
  3.   "baricon":"power.ico",
  4.   "OnClick":
  5.   {
  6.   "shutdownbtn":"
  7. PUSH 'test';
  8. PUSH 1;
  9. CALL ::Command();
  10. CALL ::Close();
  11.   ",
  12.   "restartbtn":"
  13. PUSH 'reboot';
  14. PUSH 1;
  15. CALL ::Command();
  16. CALL ::Close();
  17.   "
  18.   },
  19.   "JS_CMD":
  20.   {
  21.     "test": {
  22.          "command": "notepad.exe",
  23.          "parameters": "C:\\Windows\\win.ini"
  24.     },
  25.     "reboot": {
  26.        "command": "Wpeutil.exe",
  27.        "parameters": "Reboot"
  28.     },
  29.     "shutdown": {
  30.       "command": "Wpeutil.exe",
  31.       "parameters": "Shutdown"
  32.     }
  33.   }
  34. }
复制代码


WinXShell_x64.zip

875.11 KB, 下载次数: 343, 下载积分: 无忧币 -2

预览版

WinXShell_x86.zip

760.48 KB, 下载次数: 174, 下载积分: 无忧币 -2

预览版

评分

参与人数 10无忧币 +42 收起 理由
韩谷队7764 + 1 赞一个!
audny2002 + 1 很给力!
cyf1990427 + 5
879792799 + 5 深夜到此,只为给个赞
yhcfsr + 5 深夜到此,只为给个赞
zmac2007 + 5
freesoft00 + 5
1400700226 + 5 很给力!
不知 + 5 赞一个!
wintoflash + 5 很给力!

查看全部评分

52#
发表于 2024-11-1 20:46:01 | 只看该作者
请教一下大师,10PE怎么增加系统属性OEM图片?
我把oemLogo.bmp放进去了,注册表也增加了
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation]
"Logo"="X:\\Windows\\system32\\oemLogo.bmp"
为何显示不出来

11PE同样这样增加可以显示
回复

使用道具 举报

51#
发表于 2024-10-24 08:30:11 | 只看该作者
感谢楼主分享
回复

使用道具 举报

50#
发表于 2024-10-24 08:26:07 | 只看该作者
感谢楼主分享
回复

使用道具 举报

49#
发表于 2024-10-23 09:17:44 | 只看该作者
看看
回复

使用道具 举报

48#
发表于 2024-9-29 06:08:46 | 只看该作者
slore 发表于 2024-9-28 19:03
wxsUI%uI_SystemInfo.zip\
         locales\zh-CN.xml

谢谢
回复

使用道具 举报

47#
发表于 2024-9-29 06:08:20 | 只看该作者
slore 发表于 2024-9-28 19:03
wxsUI%uI_SystemInfo.zip\
         locales\zh-CN.xml

系统属性界面显示不正常的原因找到了,是因为那个面板依赖systemcpl.dll但是我没有添加
回复

使用道具 举报

46#
发表于 2024-9-29 06:08:09 | 只看该作者
slore 发表于 2024-9-28 19:03
wxsUI%uI_SystemInfo.zip\
         locales\zh-CN.xml

系统属性界面显示不正常的原因找到了,是因为那个面板依赖systemcpl.dll但是我没有添加
回复

使用道具 举报

45#
 楼主| 发表于 2024-9-28 19:03:05 | 只看该作者
guyu孤语 发表于 2024-9-28 18:59
请问一下作者,WinXShell自带的系统属性面板上依赖的字体是什么?我制作的PE精简字体之后使用WinXShell系统 ...

wxsUI\UI_SystemInfo.zip\
         locales\zh-CN.xml

里面是字体定义,应该用的微软雅黑。
回复

使用道具 举报

44#
发表于 2024-9-28 18:59:41 | 只看该作者
请问一下作者,WinXShell自带的系统属性面板上依赖的字体是什么?我制作的PE精简字体之后使用WinXShell系统属性遇到了字体显示不全的问题

点评

wxsUI%uI_SystemInfo.zip\ locales\zh-CN.xml 里面是字体定义,应该用的微软雅黑。  详情 回复 发表于 2024-9-28 19:03
回复

使用道具 举报

43#
发表于 2024-9-14 21:31:02 | 只看该作者
1
回复

使用道具 举报

42#
发表于 2024-7-14 14:16:18 | 只看该作者
谢谢分享,winxshell很强大!
回复

使用道具 举报

41#
发表于 2024-7-4 17:50:35 | 只看该作者
666
回复

使用道具 举报

40#
发表于 2024-7-4 17:49:45 | 只看该作者
666
回复

使用道具 举报

39#
发表于 2021-3-19 10:26:55 | 只看该作者
        赞一个!
回复

使用道具 举报

38#
发表于 2021-3-8 20:24:47 | 只看该作者
赞一个!
回复

使用道具 举报

37#
发表于 2020-11-23 21:01:55 | 只看该作者
好好学习
回复

使用道具 举报

36#
发表于 2020-10-21 04:13:19 | 只看该作者
本帖最后由 jecky.s 于 2020-10-23 09:07 编辑

explorer再见 倒是很好,可为何要学win10风格呢,不是我理解错误吧.我倒是希望有老win风格的shell  for win10.
win10太丑,也难用.
我要发多少贴才可以下载阿,不要让我破戒吧.郁闷

点评

不要Windows 10风格的直接用老版本Explorer。我觉得Win10纯色挺好的,不用贴图。Win 10风格代码简单。  发表于 2020-11-24 10:45
回复

使用道具 举报

35#
发表于 2020-7-23 15:16:12 | 只看该作者
顶顶顶顶顶
回复

使用道具 举报

34#
发表于 2020-4-26 20:56:42 | 只看该作者
非常感谢,点一个赞吧
回复

使用道具 举报

33#
发表于 2020-3-20 07:09:44 | 只看该作者
本帖最后由 命令提示符CMD 于 2020-3-20 07:11 编辑
slore 发表于 2020-3-19 22:55
不至于废了,就是改了些explorer.exe关联的菜单啥的。自带了备份注册表项目,不过没有提供命令还原,PE重 ...

谢谢,explorer恢复正常。不过我手贱打开的是最新的WimBuilder里的winxshell啊下次再也不敢作死了
回复

使用道具 举报

32#
 楼主| 发表于 2020-3-19 22:55:35 | 只看该作者
本帖最后由 slore 于 2020-3-19 22:56 编辑
命令提示符CMD 发表于 2020-3-19 22:40
谢谢,我好像光修改了software里面的Folder\shell\open\command
明天开电脑的时候我再试试(还好火绒报 ...

不至于废了,就是改了些explorer.exe关联的菜单啥的。自带了备份注册表项目,不过没有提供命令还原,PE重启就行了。。。
回复

使用道具 举报

31#
发表于 2020-3-19 22:40:17 | 只看该作者
本帖最后由 命令提示符CMD 于 2020-3-19 22:41 编辑
slore 发表于 2020-3-19 22:33
新版本有个 -unregist 命令,可以恢复系统资源管理器关联。不过还没发布。

把文件夹的打开方式,还原 ...

谢谢,我好像光修改了software里面的Folder\shell\open\command
明天开电脑的时候我再试试(还好火绒报毒拦截了一部分操作要不然系统又要废了)

点评

不至于废了,就是改了些explorer.exe关联的菜单啥的。  详情 回复 发表于 2020-3-19 22:55
回复

使用道具 举报

30#
 楼主| 发表于 2020-3-19 22:33:33 | 只看该作者
本帖最后由 slore 于 2020-3-19 22:39 编辑
命令提示符CMD 发表于 2020-3-19 22:29
我手贱把winxshell在正常的系统打开了,然后重启后打不开文件夹了,自行恢复后打开一个文件夹就在新的窗口 ...

新版本有个 -unregist 命令,可以恢复系统资源管理器关联。不过还没发布。

把文件夹的打开方式,还原就好了。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\open\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\
  65,00,00,00
"DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"




你用的WinXShell.exe版本比较老了,看了下新版本的WinXShell.lua会判断是否存在 C:\Windows\explorer.exe,
有系统资源管理器的话,不会注册文件夹关联。
回复

使用道具 举报

29#
发表于 2020-3-19 22:29:17 | 只看该作者
我手贱把winxshell在正常的系统打开了,然后重启后打不开文件夹了,自行恢复后打开一个文件夹就在新的窗口打开了。怎么办

点评

新版本有个 -unregist 命令,可以恢复系统资源管理器关联。不过还没发布。 把文件夹的打开方式,还原就好了。  详情 回复 发表于 2020-3-19 22:33
回复

使用道具 举报

28#
发表于 2020-3-12 13:39:46 | 只看该作者
无权限下载附件。。
回复

使用道具 举报

27#
发表于 2018-11-20 17:07:58 | 只看该作者

楼主大大,桌面上有一个网络的图标怎么才能把它删除,没啥用在哪,回收站我删除了,不过网络删除不了

点评

你用的谁的PE.ljycslg的?隐藏桌面网络[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]"{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"=dword:00000001   发表于 2018-11-20 21:32
回复

使用道具 举报

26#
发表于 2018-11-20 16:47:17 | 只看该作者
song分享 发表于 2018-11-20 16:46
ShowDrivs_Gui_x64.exe  这个让我删除了  不过为什么非要有这个东西呢

TEAM TEXT   启动无线服务.....$30|WAIT 100
EXEC =!net start Wlansvc
WAIT 100
forx %fdrive%\WifiDriver\*.xml,con,1,set &&exi=%con%
find $Z=Z%&exi%, exec %ProgramFiles%\ShowDrivs_Gui_x64.exe "%ProgramFiles%\wificonnect.wcs"! call loadc
回复

使用道具 举报

25#
发表于 2018-11-20 16:46:52 | 只看该作者

ShowDrivs_Gui_x64.exe  这个让我删除了  不过为什么非要有这个东西呢

点评

TEAM TEXT 启动无线服务.....$30|WAIT 100 EXEC =!net start Wlansvc WAIT 100 forx %fdrive%\WifiDriver\*.xml,con,1,set &&exi=%con% find $Z=Z%&exi%, exec %ProgramFiles%\ShowDrivs_Gui_x64.exe "%Progra  详情 回复 发表于 2018-11-20 16:47
回复

使用道具 举报

24#
发表于 2018-11-20 16:39:22 | 只看该作者
slore 发表于 2018-11-20 12:24
WIFI连接需要:
WinXShell.exe  + wxsUI%uI_WIFI文件夹

点评

楼主大大,桌面上有一个网络的图标怎么才能把它删除,没啥用在哪,回收站我删除了,不过网络删除不了  详情 回复 发表于 2018-11-20 17:07
ShowDrivs_Gui_x64.exe 这个让我删除了 不过为什么非要有这个东西呢  详情 回复 发表于 2018-11-20 16:46
回复

使用道具 举报

23#
发表于 2018-11-20 16:11:20 | 只看该作者
有WinXShell的群吗?

点评

因为可以添加系统的explorer,我也忙没太更新了,基本功能够用。只有论坛少量反馈,虽然UI暗黑主题,新的流畅设计,19H1的界面风格我也能做,不过毕竟是UI对于PE没那么重要。没什么讨论,我也没建群。  发表于 2018-11-20 21:22
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 11:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表