slore 发表于 2015-9-28 10:32:39

[更新(2019/03/03) ModernUI回归] explorer再见,WinXShell你好!

本帖最后由 slore 于 2019-3-3 16:47 编辑

什么是WinXShell?
支持Windows 7,8,8.1,10,Windows Server 2008,2012,2016,Windows 7 PE,Windows 8 PE,Windows 8.1 PE,Windows 10 PE,
Windows Server 2008 PE,Windows Server 2012 PE,Windows Server 2016 PE平台的代替explorer.exe的外壳程序。
(目前仍有explorer.exe的功能未实现。)
特别对于Windows PE直接启动系统自带的boot.wim,无需任何内核修改,运行即可用的外壳程序。

桌面预览:




使用方法:
正常系统下,CTRL+SHIFT按住右键任务栏,或者开始菜单空白处,可以结束explorer.exe进程,
结束默认外壳程序后,运行WinXShell.exe即可。(cmd或者任务管理器)

PE系统下,
1.shift+F10打开cmd.exe命令行
2.cmd.exe下执行WinXShell.exe -winpe即可。

加了-winpe参数的话,
a) 结束已有的shell程序(wallpaperhost.exe)。
b)当USERPROFILE环境变量未更改时,自动设置为X:\Users\Default。
c)开始菜单点击重启和关机时,会从配置文件中读取相关命令定义。(附件中定义为wpeutil.exe Reboot/Shutdown)

2.任务管理器结束默认外壳程序(Win 8(.1)以及Win 10PE的wallpaperHost.exe,Win 7 PE不需要)
   不结束的话,也可使用-desktop参数强制创建桌面,但是鼠标点击桌面的话,
   其他程序窗口都切到后面看不到(PExlorer本程序当成一个全屏的应用程序了),要任务栏点程序切换。
3.设置USERPROFILE环境变量为X:\Users\Default
   不进行此操作,桌面只有回收站,且不能新建文件(夹),因为Desktop默认定义为%USERPROFILE%\Desktop,
   PE下此环境变量默认指向X:\Windows\system32\config\xxxx,这个地方没有Desktop文件夹。
4.cmd.exe下执行PExlorer.exe -winpe

2019-03-03 更新:
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371541&pid=3750347&fromuid=166812

20H1 PE 中文版截图:




2018-10-02 更新:
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371541&pid=3653832&fromuid=166812

2018-08-08 更新:

x86版本lua的winapi.dll库的编译选项搞错了,编译成UNICODE版了,导致字符串无法正常识别,使用winapi库的注册表的操作,窗口操作不能正常工作。
使用x86版本的话,请替换附件中的winapi.dll到lua_helper\x86\。
其中还包含了需要-p指定密码才能运行shell的WinXShell.lua脚本(防止误操作),没有需要的话,不用替换。

2018-07-26 RC3.2.0更新:






winxshell.exe -daemon - gif 动画演示
https://github.com/slorelee/wimbuilder_sample/tree/master/winxshell/
https://github.com/slorelee/wimbuilder_sample/tree/master/winxshell/deamon_in_pe.gif(6.66MB)


[*]修复:气泡提示框无法显示问题
[*]修复:每次shell启动时,都会执行开机启动项的问题
[*]修复:托盘时钟区点击显示日历时,可能导致explorer.exe崩溃重启问题
[*]修复:WES环境控制面板项目启动卡顿问题
[*]   (针对WES环境,第一运行shell时,调用control.exe初始控制面板)
[*]新增:实现了对ms-settings协议的委托处理,可以自定义ms-settings请求的打开对象(虽然改下注册表也可以处理,但我还是采用了正规的委托方式来实现)
[*]   可以自定义当选择桌面菜单的分辨率设定,个性化菜单,任务栏右键菜单的任务栏属性,时间和日期,自定义通知区域等项目的动作
[*]新增:UI的xml中的图像定义,支持ico图标以及文件中的资源ID(file='notepad.exe,0')
[*]新增:对于UI对象,增加hotbordercolor参数,可指定鼠标在控件悬停时显示的边框颜色
[*]新增:对于UI对象,position参数增加一个leftbottom选项,可设置窗口启动时在左下角显示
[*]新增:对于UI对象,增加一个startup_win参数,可设置窗口启动时最大化显示
[*]新增:对于UI对象,增加窗口位置大小控制Lua指令-sui:move(dx,dy,dw,dh),sui:moveto(x,y,w,h)
[*]新增:UI_Launcher--APP快速启动界面(类似Win10开始菜单右侧部分)
[*]新增:针对Windows Embedded Standard环境,增加一个-wes参数进行动作区分
[*]新增:将UI界面的Lua脚本控制扩展到shell模块,可通过WinXShell.lua对程序的动作进行自定义
[*]   例如,开始菜单项目点击,托盘时钟区域的点击,ms-settings的消息处理等处理逻辑都可自定义
[*]改善:文件结构调整:将UI_xxxxx统一放置到wxsUI目录下。(可通过WINXSHELL_UIFOLDER环境变量自定义)
[*]改善:支持ZIP形式的UI_xxxxx资源
[*]改善:UI_xxxx资源调整(界面微调,主题更新,西班牙语支持), 感谢 bob.omb,teik。
[*]改善:通过WinXShell.Lua的引入,增强易用性。
[*]   仅需运行-winpe或者-wes或者-daemon,将自动根据环境条件进行下列动作(均可自定义):
[*]   * 如果系统不存在ieframe.dll,自动注册快捷方式的打开文件夹所在位置处理的wxsStub.dll
[*]   * WINPE模式下点击我的电脑【属性(P)】菜单自动打开UI_SystemInfo界面
[*]   * 任务栏时钟区域点击事件处理
[*]   * 自动注册ms-settings协议委托,并启动WinXShell.exe -Embedding处理委托



2018-04-16 RC3.1.0更新:







更新内容

[*] 新增:系统相当或更好功能,却只要少数十倍体积
[*] 新增:我的电脑属性,显示内存信息,并自定义显示运行时间功能(不需要15MB的wbem)
[*] 新增:劫持快捷方式右键打开所在目录,属性中打开所在目录响应,自定义快捷方式的打开所在文件方法。可以去掉ieframe.dll+wow64\ieframe.dll(24MB)
[*] 新增:单击任务栏时钟区可显示一个lua做的简易日历(有好的界面想法的,可以自定义)
[*] 新增:双击任务栏时钟区可运行timedate.cpl
[*] 新增:以上动作均可配置(是否劫持,可运行自定义程序)
[*] 改进:当无无线网络适配器时,WIFI的托盘图标显示为有线网络图标
[*] 改进:音量控制界面改变声音时,可指定是否发出Beep声音


使用方法:
WinXShell.exe运行前导入以下注册表
wxsStub.reg
UI_SystemInfo\handle_prop.reg

使用explorer.exe也可以使用“我的电脑属性”,“打开快捷方式所在位置拦截”,“时钟区域点击调用事件”,使用方法如下:
WinXShell.jcfg添加
"JS_DAEMON" : {
"handle_clockarea_click":true
}
后运行
WinXShell.exe -daemon

下版本预告:
共享目录访问认证界面


2018-03-30 RC3.0.0更新:





更新内容

[*]修复在WIN7,8系统下桌面右键卡死问题
[*]修复文件配置不正确导致程序异常终止的问题
[*]修复WSE7环境下,我的电脑,桌面不能打开控制面板问题
[*] 改进:WinXShell.jcfg中可添加“control”命令,控制开始菜单的控制面板菜单
[*] 改进:可以定义title属性来控制UI界面的任务栏名称(支持多国语言资源)
[*] 新增:导入Lua,可以通过脚本进行交互,动态改变UI元素状态
[*] 改进:界面多国语言支持改善,字符串资源可以从lua脚本直接指定系统资源(#{@shell32.dll,101}),资源不存在时,读取mui文件。
[*] 新增:高仿的我的电脑属性界面(所有信息,布局可自行更改,也可以追加新的启动链接,图片等)
[*] 新增:音量托盘控制图标
[*] 新增:音量控制界面
[*] 改进:分辨率设定界面通过Lua脚本定义,动作流程进行改善,可以15秒倒计时,自动恢复,也可以定义选择就改变分辨率


其他1:
RS4的17133.1简单测试了下,不需要额外处理,可以正常动作。
声音设定默认(boot.wim)可以直接使用?但是好像是内部设备,实际没有效果。
网络,发现WLAN服务可以直接开启,没有对应设备,没有测试,WIFI连接没有做改动。

其他2:
1/31我的儿子出生了,所以基本上没有太多时间来更新,本打算不太做机能,只是修复BUG和适配新的RS4,上个周有人提出,分辨率设置改善,
所以趁机强化了下UI部分。下面的开发履历可以看到其实只有最近5,6天更新比较频繁。




其他3:
我的美工不是很好,我的电脑属性保持了系统的样子,高仿,
声音控制界面是给大家一个例子,没有模仿 系统的声音设置界面,保持一致性的话,
可以参照WIFI界面,修改。如果谁有更好的UI设计,可以分享出来。

其他4:
集成的Lua是5.3版本,需要自己扩展的话,请静态编译对应的所需插件即可使用。
附件中带了一个winapi.dll,可以使用Windows的API, 访问注册表,启动程序,操作Windows窗口,进程管理等功能。
http://stevedonovan.github.io/winapi/api.html
我的电脑属性界面,只使用了读取注册表版本,CPU信息,如果想省空间(200KB),可以删除,把获取注册表信息部分写死。

因为PE的特殊性,都是静态编译版本,体积略大,不过单文件压缩不到1MB,还是可以接受的,如果有人
自己的PE集成VC++2015,可以用动态版本,可以回复我,给编译动态版本,估计从2,3MB的大小能到500KB~800KB。

2018-01-10 RC2.7.1更新:





更新内容

[*] 新增:"trans"选项(jcfg),可以使窗口有透明效果
[*] 新增:"theme"选项(jcfg & 命令行),可以加载不同的主题风格(参考:UI_WIFI,UI_Resolution)
[*] 新增:WIFI界面提供一个WLAN按钮,启动和停止Wlansvc服务
[*] 改进:网络图标将正确显示有线,无线状态。无线连接时显示信号强度
[*] 改进:分辨率设定界面添加滚动条,以及对"应用","取消"按钮增加快捷键,使得分辨率过低时也可调整
[*] 改进:移动Font定义到locales定义文件中
[*] 改进:当对应locales定义文件不存在时,使用英文定义文件(en_US.xml)
[*] 改进:新增"class"选项(jcfg)来识别是否是 无线网络连接界面,使得UI_WIFI名可被变更


Next

[*] 新增: "bartitle"选项(jcfg),可以指定任务栏显示名(本次更新漏提交:()   =完成=
[*] 新增:使用笔记本时,显示电池电量托盘
[*] 新增:音量调节界面及音量托盘图标       =完成=


WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -hidewindow
WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -theme darkgray

2017-12-26 RC2.7 更新:





更新内容

[*] 修复FreeVK等程序任务栏显示2个图标问题 (#241 2.6.1小修正吸收)
[*] 采用延时加载技术,使得在没有wlanapi.dll的boot.wim下也可以正常运行
[*] 分离UI功能和外壳功能——WIFI连接(含无线网络托盘状态)可以在正常Windows或者采用原版explorer为外壳的PE下独立运行
[*] 废除WinXShell.jcfg中的托盘图标设定,托盘图标由对应的UI功能实现
[*] 新增-hidewindow参数,可以让UI_WIFI初次启动后只显示托盘网络状态图标而不弹出【无线网络连接】界面
[*] 分辨率变化后,UI窗口可自动调整到“中央”或“右下角”正确位置(防止分辨率差距较大时,界面显示到屏幕范围外,必须重启UI程序的问题)
[*] UI中的文字信息的多国语言处理改善,移动到locales目录下,zh-CN.xml/en-US.xml自动识别
[*] 多国语言文件中的id,从必须是数字改为可以直接使用英文单词


WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg
WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -hidewindow

本来打算声音设置界面,做完一起发布的,因为wlanapi.dll加载失败问题,以及一些外国网友对英文版的需求,在新年前先发布一版。

================历史版本更新说明================
没赶上RS3更新,不过多的这1周修复了不少问题。
2017-10-28 RC2.6 更新(UI技术预览版):





对于最新Windows 10 RS3 16299.15前版本不需要修改仍可以使用,从4月份RS2以后就没动过代码了,
趁着这次Windows 10更新,对报告的问题进行修复,以及对托盘功能进行强化。
另外最新Win10PE右键新建菜单的问题微软已经修复,不会卡死。


更新内容

[*] 资源管理器 - 修复最大化时当鼠标移动到标题栏特定位置会抖动的问题
[*] 资源管理器 - 修复DWM有效时,点击最小化按钮问题
[*] 实现气泡提示功能
[*] 托盘增加声音(状态未实时更新,下版本对应,WinXShell.jcfg中可设置不显示此图标)
[*] 托盘增加网络图标(状态未实时更新,下版本对应,WinXShell.jcfg中可设置不显示此图标)
[*] 网络图标点击可直接连接WIFI,可启用和关闭防火墙


Modern UI相关详细内容说明,请参考回复帖。
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371541&pid=3459183&fromuid=166812

2017-04-08 更新:




[*]最新Windows 10 PE的右键新建菜单或导致卡死,追加一个支持自定义二级WinXNew菜单的选项。(存在卡死现象的版本,请使该参数有效,删除最前面的#号)
[*]桌面右键菜单现在可以支持注册表中的%V参数,打开命令提示符,打开powershell等菜单不再进行hook处理。
[*]可以通过配置文件,设置默认桌面图标大小。 (@shuren 说过年好更新的,结果拖了2个月)
[*]使用简易化。-winpe参数指定时,将自动结束原shell程序,并确认和设置USERPROFILE环境变量,直接启动到桌面。
[*]集成UI库duilib(文件增大500KB),支持自定义界面(目前支持分辨率,屏幕旋转设置界面,以及关机重启界面)。
[*]程序更名为WinXShell.exe,配置文件也变成WinXShell.jcfg。


桌面图标大小指定方法:
"::桌面":
{
   "iconsize":48
}
小图标 - 24, 中图标 - 48, 大图标 - 96

如果不需要引入UI库的版本,请告知我,单独发布。

2017-01-12 更新:
*请下载最新版


[*]最新Windows 10内测版本15002,改善DPI显示功能,桌面图标显示时会导致PExlorer崩溃,紧急追加一个选项禁用桌面图标,保证任务栏功能可用。
[*]另外15002版本,桌面右键的打开命令提示符改为了powershell,PE一般没有,默认调用cmd。如有PS的话,可配置force_cmdhere选项。
[*]删除"关于About PExlorer"菜单。


因无法显示桌面图标,稍后提供一个可启动指定应用程序的桌面挂件小工具。
(文件管理器可正常使用,用这个访问桌面文件夹也可以。)
微软的问题,估计后续版本会自然解决,目前先这样。

"::桌面":
{
    "no_items":true,
    "force_cmdhere":false,
    ...
}

其他:
PExlorer之后将引入UI库,自己实现,类似 手机的 开始菜单(更好的支持平板),分辨率设置,带农历的日历,WIFI连接,声音选项,壁纸设置,通知栏等,
可自行使用类html格式来制定界面布局颜色等。随后程序将正式更名为x-shell(PExlorer不是个单词,PE Explorer又是别的程序,一直打算改个名字的)。
顺利的话,估计6,7月能完。

2016-12-19 更新:
*请下载最新版(不配置no_items参数即可正常显示桌面)


[*]处理环境变量广播通知
[*]PE下ClassicShell的开始菜单1分钟后才响应的问题修正
[*]为更好的支持ClassicShell的开始菜单,提供一个参数调整开始菜单图标余白


ClassicShell不设置替换开始按钮的话,无法响应鼠标左右键点击,所以请使用3态开始按钮图标,
PExlorer的开始图标可配置为空,可根据自己选择的开始按钮图标设置右侧余白大小(下例的图标是40x120像素的,所以不需要设置偏移量,ClassicShell的标准贝壳图标的话,设置8像素会好看些)

"::开始菜单":
{
    "start_icon":"empty",
    "start_padding":8,
    ...
}

注意:ClassicShell请使用4.2.5版本。



FYI
3态开始按钮图标制作说明
http://www.classicshell.net/tutorials/buttontutorial.html
论坛给出的一些图标例子
http://www.classicshell.net/forum/viewtopic.php?f=18&t=3209&sid=aa9c00db6e1633b40e833d483ee1403c

2016-09-16 RC 2.4.2 更新:




[*]全屏网页或者视频时,隐藏任务栏
[*]支持运行中更改壁纸(PECMD WALL也有效)
[*]任务栏窗口右键系统菜单改善
[*]分辨率调整时可触发一个调用(个别需求)


onDisplayChanged定义时,当分辨率变化会调用定义的命令。showflags(0-隐藏调用,1-正常显示,默认值为:1)和parameters参数可省略。
"JS_TASKBAR":
{
    "bkcolor":,
    "onDisplayChanged": {
         "command": "app.exe",
         "showflags":1,
         "parameters":""
    }
}


2016-07-31 RC 2.4.1 更新:
*请下载最新版


[*]解决使用文件打开对话框作为文件管理器时,新建文件夹,复制删除等操作不会及时刷新问题(新方案)
[*]PExlorer的文件资源管理器任务栏图标由未知程序改为PExlorer的图标
[*]开始菜单项目可以通过PExlorer.jcfg设置
[*]SHIFT右键开始菜单图标或者任务栏空白处,增加退出PExlorer菜单(因为开始菜单中的结束程序默认不显示了)


新方案,支持全版本不用因为shell32版本不同而要修改配置了。
如果自己修改了shell32.dll或者不使用内置文件管理器可以通过:
"JS_FILEEXPLORER"下面的hook_GetShellWindow设置为false将禁用(默认值为true)。
注意新方案目前只会影响PExlorer.exe进程,如果使用notepad,任务管理器等的文件打开对话框时,仍然不会自动刷新。

开始菜单设置,以下为默认值,默认值的话可以缺省不设置

"JS_STARTMENU":
{
   "nosettings":true,
   "nobrowse":false,
   "nobrowse_network":true,
   "nofind":true,
    "norun":true,
    "nologoff":true,
    "norestart":false,
    "noshutdown":false,
    "noterm":true
   }



2016-05-20 RC 2.4 更新:
*请下载RC2.4.1版




[*]实现AppBarMessage消息处理,返回任务栏位置信息,使得ClassicShell开始菜单可以使用。



2016-05-13 RC 2.3 更新:
*请下载最新版


[*]解决使用文件打开对话框作为文件管理器时,新建文件夹,复制删除等操作不会及时刷新问题


原理及修改方法见#127楼。
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371541&pid=3235074&fromuid=166812

2016-05-11 RC 2.2 更新:
*请下载最新版


[*]创建一个打开对话框来代替文件管理器(实验性功能,PExlorer.jcfg中不定义第3方文件管理器时有效),已知细节问题如下:

[*]正常系统下最小化按钮不可用(PE下反而可用),可点击任务栏图标
[*]右键第一个菜单是“选择”(不太影响使用,双击可以正常访问)
[*]限制多文件选中按回车动作
[*]不能打开控制面板(与默认打开文件对话框一致)
[*]PE下,非explorer外壳程序,打开对话框中新建,复制,删除文件不会自动刷新(通用问题)
[*]开始菜单最顶部的“文件管理器”会自动刷新,但是微软内部消息处理机制,一个应用程序应该只打开一个打开文件对话框,所以通过这个方法打开多个窗口时,只有最新的窗口可以接收快捷键(F5,CTRL+C,CTRL+V)




[*]修复快速启动栏刷新的内存泄漏问题


2016-05-06 RC 2.0 更新:
*请下载最新版






[*]桌面强化

[*]工程编译UNICODE版本,解决重命名中文乱码问题
[*]在鼠标点击位置新建文件夹或文件,并自动进入重命名模式
[*]右键刷新,改变图标大小,排列顺序菜单后仍竖排显示
[*]分辨率,任务栏高度变更后,桌面图标自动调整
[*]F5键可以刷新桌面
[*]完善WIN+D处理逻辑




[*]任务栏强化

[*]支持系统托盘图标(声音,电池,网络,USB设备等,需要内核有支持文件)
[*]高DPI模式下,任务栏高度,图标大小自动适应




[*]其他功能

[*]JS_TASKBAR下可以添加"notaskbar":true参数屏蔽掉任务栏
[*]JS_HOTKEY段可以添加"WIN":"WIN+Z"参数来重定义WIN键



感谢ljycslg的积极反馈。

2016-02-19 RC 1.1 更新:
*请下载最新版

小幅更新。

[*]壁纸显示增强。

[*]显示方式可设置拉伸(新增/默认),平铺,居中(新增)。
[*]响应分辨率变化。


修改PExlorer.jcfg中对应参数即可,拉伸默认的话可省略此配置项。

"::桌面":
{
    "显示样式注释":"0-拉伸(默认值);1-平铺;2-居中",
    "::桌面壁纸显示样式":0,
   }


RC 2.0版计划:

[*]开始菜单增强。

第三方开始菜单不能用,试了些都不太满意,打算自己写了。
想着自定义高些试着html页面当菜单UI,根据内部链接目标决定是打开文件,
文件夹,特定系统命令,显示文件列表等。感觉有点像手机屏幕,主屏,扩展屏。
以下是预览图:

测试下好像没啥技术难题,结果默认boot.wim中没有带IE的web组件,
作为正常系统下的开始菜单自由度非常高,XP上都可以呈现Windows 10开始菜单的效果了。
下面试着看WEB组件是否好集成,不好放进去的话只能WIN32按自己的设计画UI了。

2016-02-05 RC 1 更新:
*请下载最新版



[*]各种设定json格式的配置文件导入->PExlorer.jcfg。
[*]壁纸JPG格式支持。
[*]解决任务栏文字颜色设定的技术问题。
[*]可自定义任务栏部分属性(字体颜色,背景颜色,高度,图标大小等)。
[*]可自定义第三方文件资源管理器。
[*]可自定义壁纸路径。
[*]支持第三方开始菜单软件start10(程序名需改为explorer.exe)。 <---当前版的start10无效了。
[*]桌面菜单,桌面文件菜单完善。
[*]解决托盘最后一个图标,悬停鼠标无法显示提示信息问题。 (遗留问题)
[*]去掉快速启动栏快捷方式箭头。(网友建议)
[*]快速启动栏动态更新。(网友建议)
[*]追加-winpe参数,可以自定义开始菜单关机,重启命令。(网友建议)
[*]任务栏字体显示不正常。(网友建议)
[*]不再支持XP系统。


已知问题:

[*]PE系统下,桌面图标无法拖拽(WIn 7,Win 8(.1) 的boot.wim正常,Win 10的boot.wim不可用。部分网友制作的PE可以使用,有explorer.exe都可以。)
[*]桌面图标位置未作保存处理,刷新后会在顶部横向排列。
[*]任务栏使用小图标时,快速启动栏图标偏上。
[*]桌面新建文件/文件夹,无法直接到重命名的编辑状态,而是直接创建。
[*]本程序的资源管理器,导航栏基本无效。
[*]开始菜单,一些动态加载内容的菜单容易出错。
[*]属性菜单不可用。(boot.wim PE内核缺少文件,正常系统下可以,但是显示位置为左上角或者右上角)


explorer.exe相关未实现功能

[*]托盘声音,网络等图标(内核添加文件的情况下可以显示)以及IME语言状态栏的显示。
[*]DDE服务未实现,默认的打开功能还是回去调用explorer.exe (桌面双击以做处理,右键菜单[新建],[在新金进程中打开]会失败)
[*]我的电脑属性无法显示,以前是sysdm.cpl,现在因为可以从属性再到导航到控制面板等,其实和资源浏览器一样了。
[*]桌面[个性化]等菜单,是新的ms-settings:xxxx格式的,explorer.exe对应的处理没有实现。
[*]快捷方式的打开到所在位置。(可以写个小工具处理,微软相同的处理机制很难)
[*]开始运行输入:system32,ms-settings:xxxx等无法打开,DDE服务未实现。
[*]空白处右键菜单调用命令为%V的命令无法调用,比如:git bash。(在命令窗口中打开菜单,做了特殊处理可以使用)


改善计划:

[*]托盘声音,网络等图标实现
[*]桌面图标刷新后位置变化问题
[*]设定文件结构改进
[*]添加开始图标右键菜单
[*]接近正常系统的开始菜单


2015-09-29 Beta 2 更新:

[*]快速启动栏初始宽度调整。
[*]托盘通知图标改回小图标。
[*]运行库静态链接,不需要额外DLL文件,WIN7,WIN8,WIN10的BOOT.WIM下可直接运行。
(x86版已支持XP方式编译,不过没有官方XP的PE未测试)


进PE,运行PExlorer.exe -install即可见桌面。(正常Windows下,请使用PExlorer.exe -desktop,免得注册表把Shell给改了)
任务栏快捷启动按钮,第二个可以打开第三方的资源管理器。

PExlorer/
|_PExlorer.exe
|_explorer.exe         (第三方资源管理器,我附件的例子是用explorer++.exe)
|_wallpaper.bmp(壁纸文件,必须是bmp格式)

已知问题:
1.桌面图标无法拖拽      (WIn 7 PE,Win 8 PE正常,Win 10 PE内核需要补充文件)
2.桌面右键菜单不完全(正常系统下可以),选中文件菜单正常,可打开,复制,创建快捷方式等。
3.属性菜单不可用。(PE内核缺少文件,正常系统下可以)
4.托盘最后一个图标,悬停鼠标无法显示提示信息 (Win 7 正常,Win 10 下同样无法显示)




-----------------------------------------------------------------------------------------------------------------------------------------------
2015-09-28 Beta 1:
后面还要编辑就懒得排版,随便写下。

基本是初版没怎么修改,在系统安装盘的boot.wim下测试了下。
任务栏基本OK,资源管理器依赖一些系统DLL运行会出错,
所以做了个简单的组合:
PExlorer/
|_PExlorer.exe
|_explorer.exe         (第三方资源管理器,我附件的例子是用explorer++.exe)
|_msvcp140.dll      (Visual Studio 2015开发所要的运行库)
|_vcruntime140.dll   (Visual Studio 2015开发所要的运行库)
|_wallpaper.bmp(壁纸文件,必须是bmp格式)

进PE,运行PExlorer.exe -install即可见桌面。
任务栏快捷启动按钮,第二个可以打开第三方的资源管理器。
不用修改WIM文件,1MB多的文件就可以见桌面了。

已知问题:
1.桌面图标无法拖拽      (正常系统下可以)
2.桌面右键菜单不完全(正常系统下可以)
3.托盘最后一个图标,悬停鼠标无法显示提示信息 (正常系统同样有问题)

改善计划:
各种设定json格式的配置文件导入。
桌面壁纸的显示效果改进,目前为平铺。
壁纸JPG支持(程序内部bmp位图化)。





-----------------------------------------------------------------------------------------------------------------------------------------------
预览:


最近无意间看到PapyrOS,觉得好漂亮。
就把曾经放弃过想法,自己做Windows的Shell把explorer替换掉。
为什么放弃,很简单,做着做着发现好难,自己画任务栏可以,但是怎么让系统的程序到自己的程序来就成了问了,
涉及到微软Shell的内部,也没有官方文档把Interface说明下。

看了曾经泄露的Windows代码,下载WINCE的微软公开的源码,还是没搞出来。
突然想到有款反编译NT内核的操作系统(大家都知道吧?ReactOS),找到了ROS Explorer,我看论坛也有人发过,
最后更新好像是2004年,汗~好早,要是早点有人改造就好了!
Windows 8.1之前的PE加explorer的都成型了,貌似Win10的也看有人做好了,也行开始的比较晚了吧。
win32下,基本可以直接编译出来,但是有些问题,经过一周总算Windows 10 x64上把x64版本调试通了。

开始菜单,快捷启动,任务进程管理,托盘,时钟,桌面都出来啦。

在正常系统上,已经可以跑起来了。

我对PE的定位是维护,所以要求不高。硬件支持好,体积小,带网络(官方的好像可以直接支持。)

看了下论坛制作PE的方法,想着本来解压WIM增减文件就好,可以有步注册表中的C:\,D:\改X:\,删除 Interactive User的全部键值,
目前还不清楚为什么。对驱动有影响么?谁知道给我说下。

心目中的PE是,WIM增减内核必须文件,然后其他外置补充就好。看到explorer添加到WIM好像很恶心,所以打算做个外置就能直接运行的shell,即
PExlorer (其实还有考虑过叫PESlorer (●'◡'●)偷笑 )

从boot.wim启动,发现运行不了,拷贝到本地系统C盘的system32下,可以出来了。
估计是桌面,文件资源管理器的实现用了Shell接口组件,打算把资源管理器删除,单纯的TaskBar的实现,
这部分基本上是纯C++的创建窗口,只依赖基本的系统文件,PE下可以直接运行的。

slore 发表于 2019-2-3 13:33:23

lwb1 发表于 2019-2-3 11:06
还有一个问题
我把WinXshell设为PE默认的Shell
WinXshell启动时或打开文件夹时会出现一个命令提示符窗口
...

因为使用lua脚本扩展,做了一个 自动加载 lua_helper的lua脚本,结果呢,
它调用dir /b命令获取所有lua文件列表会启动一个cmd来运行的,所以会闪一下。
与文件夹关联没有关系。

打开:WinXShell\lua_helper\lua_helper.lua,删除红色的部分,添加蓝色的部分。

package.cpath = dllpath .. package.cpath

local f = io.popen('@dir /b '.. path .. '\\*.lua')
for line in f:lines() do
if str.lower(line) ~= str.lower(__this__) then
    if suilib then
      suilib.print(line)
    else
      print(line)
    end
    require(line:sub(1, -5))
end
end
f:close()

--[[
require('reg_helper')
require('os_helper')
require('str_helper')
require('io_helper')
--]]

slore 发表于 2019-2-3 13:40:10

本帖最后由 slore 于 2019-2-3 13:43 编辑

lwb1 发表于 2019-2-3 10:07
打不开文件夹
要关联哪个资源管理器?
(我很清楚如何用注册表关联文件夹)

补充系统缺失的文件,可以使用内置的“打开文件对话框”模拟资源管理器,这种方式和explorer.exe几乎一模一样,而且PE系统的很多“浏览”按钮也可以使用了,方便打开文件。

如果是这种方式,你不用修改注册表,桌面打开文件夹,我的电脑,回收站,按Win+E打开资源管理器等都自动会由WinXShell.exe来打开。

运行直接输入: system32这种方式打开文件夹,确实漏了关联注册表,你可以修改HKCR\Folder的关联到WinXShell.exe %1程序。

如果你使用第三方文件管理器,比如explorer++.exe,他们支持多窗口等其他特性,而且是绿色软件,单独一个exe就可以了,不依赖系统组件,比较便携。

这个情况,你修改好WinXShell.jcfg的配置,桌面打开文件夹,我的电脑,回收站,按Win+E打开资源管理器等都自动会由WinXShell去调用第三方文件管理器,你不需要修改注册表。

当然,同样运行直接输入:system32会提示无法找到关联程序,你可以修改注册表关联到WinXShell.exe %1,也可以直接关联到该第3方文件管理器:explorer++.exe %1。

slore 发表于 2019-2-2 18:27:43

lwb1 发表于 2019-2-2 16:24
explorer++.exe放那个目录?

如果你用第三方文件管理器,如 explorer++.exe。
你放到和WinXShell.exe相同目录,

WinXShell.jcfg你打开

"::文件管理器":
{
    "#::第3方文件管理器":"##{JVAR_MODULEPATH}\\explorer++.exe",
    "#padding-bottom":20
},

"#::第3方文件管理器"开头的 #号删除掉就行了。

你也可以随意放到其他地方,这个路径修改就行了,比如:

"::第3方文件管理器":"X:\\Program Files\\explorer++\\explorer++.exe",

slore 发表于 2018-8-20 21:54:55

Mouri_Naruto 发表于 2018-8-20 00:36
有关系的
因为使用含有GPL许可的所有项目和使用LGPL许可的静态编译的项目都有问询源代码在哪里的权利
...

推送到PExplorer这里了,
里面有2个分支PExlorer_v1.0,引入UI库前的最后一个Tag版本,
另外WinXShell改名后对文件管理器也有部分修正,所以把这部分修正单独抽取出来,
推送到WinXShell_shellpart的分支了,可以无依赖VS2015编译成功。

WinXShell的仓库预留着吧。

slore 发表于 2018-4-20 23:16:17

本帖最后由 slore 于 2018-4-20 23:34 编辑

V587 发表于 2018-4-19 16:43
楼主您好!
请问可否自定义选择框的颜色,即,在桌面上拖动鼠标左键,所勾选的那一片长方形区域的颜色?
...



这个意思?

xintiandi 发表于 2018-1-29 22:21:52

本帖最后由 xintiandi 于 2018-1-29 22:33 编辑

的确是忘了加winpe参数,加上后,重启和关机都有效了。我想取消关机按钮,只保留重启,都是远程操作,一旦关机后,就不方便开机了,不知如何实现。

WinXShell.exe -ui -jcfg UI_Shutdown\main.jcfg

这个直接命令行可用,改到配置里面会出错。

friend8179 发表于 2015-9-29 14:32:09

楼主,还是静态编译,去除掉对VC库依赖吧

826773297 发表于 2015-9-28 10:39:39

任务栏全部弄成白色把,谢谢楼主,另外请提供可更改开始菜单图标的缺口,谢谢

826773297 发表于 2015-9-28 10:40:49

任务栏程序的快捷方式小箭头请去掉,谢谢

826773297 发表于 2015-9-28 10:42:08

任务栏中打开的程序能显示轮廓就更好了

826773297 发表于 2015-9-28 10:43:51

开始菜单和任务栏等功能尽量能精简,pe下无需太多功能

826773297 发表于 2015-9-28 10:46:34

pe版本请删除开始菜单中的终止pexplorer功能,既然选择了楼主的资源管理器,这项功能无用

andos 发表于 2015-9-28 11:00:40

曾经explorer还不能用时就有人找第3方的shell来替代,但是表现都很差,多半是太久没更新了的东西


楼主如果能把shell弄得美观点也不失为一个替代良方

singel 发表于 2015-9-29 01:44:31

支持楼主

slore 发表于 2015-9-29 02:57:01

初版先放出来,有兴趣的朋友可以测试下,把意见反馈给我。

2011npwjm 发表于 2015-9-29 08:47:06

谢谢楼主的分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [更新(2019/03/03) ModernUI回归] explorer再见,WinXShell你好!