无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品好系统,装机首选好系统

「简单绿色的装机助手」盘云出品

助力无忧,捐助本站,加入VIP会员广告联系 QQ:184822951 微信:wuyouceo
查看: 43890|回复: 503
打印 上一主题 下一主题

[原创] [更新(2018/07/26) ModernUI回归] explorer再见,WinXShell你好!

    [复制链接]
跳转到指定楼层
#
发表于 2015-9-28 10:32:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 slore 于 2018-8-8 20:56 编辑

什么是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


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

2018-07-26 RC3.2.0更新:
WinXShell_x64.zip (2.19 MB, 下载次数: 90)
WinXShell_x86.zip (2.04 MB, 下载次数: 43)




winxshell.exe -daemon - gif 动画演示
https://github.com/slorelee/wimb ... e/master/winxshell/
https://github.com/slorelee/wimb ... ll/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更新:
WinXShell_x64.zip (2.55 MB, 下载次数: 286)
WinXShell_x86.zip (2.39 MB, 下载次数: 205)





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


使用方法:
WinXShell.exe运行前导入以下注册表
  1. wxsStub.reg
  2. UI_SystemInfo\handle_prop.reg
复制代码


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

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


2018-03-30 RC3.0.0更新:
WinXShell_x64.zip (2.25 MB, 下载次数: 105)
WinXShell_x86.zip (2.09 MB, 下载次数: 89)



更新内容
  • 修复在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更新:
WinXShell_x64.zip (1.14 MB, 下载次数: 187)
WinXShell_x86.zip (1.02 MB, 下载次数: 117)



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


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


  1. WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -hidewindow
  2. WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -theme darkgray
复制代码


2017-12-26 RC2.7 更新:
WinXShell_x64.zip (1.14 MB, 下载次数: 1338)
WinXShell_x86.zip (1.01 MB, 下载次数: 150)



更新内容
  • 修复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,从必须是数字改为可以直接使用英文单词


  1. WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg
  2. WinXShell.exe -ui -jcfg UI_WIFI\main.jcfg -hidewindow
复制代码


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

================历史版本更新说明================
没赶上RS3更新,不过多的这1周修复了不少问题。
2017-10-28 RC2.6 更新(UI技术预览版):
WinXShell_x64.zip (1.13 MB, 下载次数: 211)
WinXShell_x86.zip (1.01 MB, 下载次数: 146)



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


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


Modern UI相关详细内容说明,请参考回复帖。
http://bbs.wuyou.net/forum.php?m ... &fromuid=166812

2017-04-08 更新:
WinXShell_x64.zip (1.08 MB, 下载次数: 339)
WinXShell_x86.zip (986.34 KB, 下载次数: 229)

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


桌面图标大小指定方法:
  1.   "::桌面":
  2.   {
  3.    "iconsize":48
  4.   }
复制代码

小图标 - 24, 中图标 - 48, 大图标 - 96

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

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

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


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

  1.   "::桌面":
  2.   {
  3.     "no_items":true,
  4.     "force_cmdhere":false,
  5.     ...
  6.   }
复制代码


其他:
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像素会好看些)

  1.   "::开始菜单":
  2.   {
  3.     "start_icon":"empty",
  4.     "start_padding":8,
  5.     ...
  6.   }
复制代码


注意:ClassicShell请使用4.2.5版本。



FYI
3态开始按钮图标制作说明
http://www.classicshell.net/tutorials/buttontutorial.html
论坛给出的一些图标例子
http://www.classicshell.net/foru ... 3b40e833d483ee1403c

2016-09-16 RC 2.4.2 更新:
PExlorer_x64.zip (572.45 KB, 下载次数: 155)
PExlorer_x86.zip (498.88 KB, 下载次数: 155)

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


onDisplayChanged定义时,当分辨率变化会调用定义的命令。showflags(0-隐藏调用,1-正常显示,默认值为:1)和parameters参数可省略。
  1.   "JS_TASKBAR":
  2.   {
  3.     "bkcolor":[0,122,204],
  4.     "onDisplayChanged": {
  5.          "command": "app.exe",
  6.          "showflags":1,
  7.          "parameters":""
  8.     }
  9.   }
复制代码



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,任务管理器等的文件打开对话框时,仍然不会自动刷新。

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

  1. "JS_STARTMENU":
  2.   {
  3.    "nosettings":true,
  4.    "nobrowse":false,
  5.    "nobrowse_network":true,
  6.    "nofind":true,
  7.     "norun":true,
  8.     "nologoff":true,
  9.     "norestart":false,
  10.     "noshutdown":false,
  11.     "noterm":true
  12.    }

复制代码


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



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



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

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


原理及修改方法见#127楼。
http://bbs.wuyou.net/forum.php?m ... &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中对应参数即可,拉伸默认的话可省略此配置项。

    1. "::桌面":
    2.   {
    3.     "显示样式注释":"0-拉伸(默认值);1-平铺;2-居中",
    4.     "::桌面壁纸显示样式":0,
    5.    }
    复制代码


    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 下同样无法显示)

    PExlorer_x64.zip (1.42 MB, 下载次数: 278)
    PExlorer_x86.zip (1.21 MB, 下载次数: 223)

    -----------------------------------------------------------------------------------------------------------------------------------------------
    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下可以直接运行的。

WinXShell_c.png (1.3 MB, 下载次数: 13)

WinXShell

WinXShell

rc2.5.png (523.65 KB, 下载次数: 4)

rc2.5.png

PExlorer_x64.zip

825.76 KB, 下载次数: 119

RC1.1

PExlorer_x86.zip

676.79 KB, 下载次数: 168

RC1.1

评分

参与人数 36无忧币 +171 收起 理由
wjguowei + 5 很给力!牛人佩服!!
heilulu + 1 神马都是浮云
xuexiang + 5 很给力!
音乐与电脑 + 5 很给力!
nbyhc + 5 牛人。
dd.wzg + 5 赞一个!
V587 + 5 真心佩服!
maomihuacha + 1
2011ChrisR + 5 很给力!
1400700226 + 5
ge + 5 很给力!
立帮电子 + 5 很给力!
2012zhd + 5 赞一个!
yhcfsr + 5 无言以对唯有跪,太强了,期待这两天能发布
hero8000 + 5 赞一个!
lookerJ + 5 赞一个!
whyme22 + 5 最小化没反应是个例吗S大
+ 5 赞一个!
sd3166 + 5 赞一个!
zmac2007 + 5
addaadda + 5 很给力!继续完善,早晚一天可以不用explore.
jsgh1983 + 5 绝对牛人一个!
ksafei + 5 很给力!
wxc232 + 5 神马都是浮云
fukystone + 5 很给力!
weijun189 + 5 赞一个!
zqjiang + 5 赞一个!
信长野望 + 5 很给力!
sgw888 + 5 很给力!
2010smilewit + 5 很给力!

查看全部评分

推荐
 楼主| 发表于 2018-4-20 23:16:17 | 只看该作者
本帖最后由 slore 于 2018-4-20 23:34 编辑
V587 发表于 2018-4-19 16:43
楼主您好!
请问可否自定义选择框的颜色,即,在桌面上拖动鼠标左键,所勾选的那一片长方形区域的颜色?
...




这个意思?

color__bin_x86.zip

946.28 KB, 下载次数: 3

color_bin_x64.zip

1.09 MB, 下载次数: 4

点评

实在是抱歉呀,才发现这个选择框的颜色,原来是可以跟随系统设置的,麻烦老大了!  详情 回复 发表于 2018-4-21 09:48
实在是抱歉呀,才发现这个选择框的颜色,原来是可以跟随系统设置的,麻烦老大了!  详情 回复 发表于 2018-4-21 09:48
实在是抱歉呀,才发现这个选择框的颜色,原来是可以跟随系统设置的,麻烦老大了!  详情 回复 发表于 2018-4-21 09:48
实在是抱歉呀,才发现这个选择框的颜色,原来是可以跟随系统设置的,麻烦老大了!  详情 回复 发表于 2018-4-21 09:48
实在是抱歉呀,才发现这个选择框的颜色,原来是可以跟随系统设置的,麻烦老大了!  详情 回复 发表于 2018-4-21 09:48

评分

参与人数 1无忧币 +5 收起 理由
V587 + 5 正是这个!谢谢老大!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2018-1-29 22:21:52 | 只看该作者
本帖最后由 xintiandi 于 2018-1-29 22:33 编辑

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

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

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

点评

参考#254楼回复, "noshutdown":true, 就可以没关机菜单。 shutdwon_ui\\main.jcfg 斜杠需要写2个,在配置文件里。 main.xml文件,对关机按钮,配置个enabked=false,界面上关机也不能点了。参考其他的待  详情 回复 发表于 2018-1-30 09:38
回复 支持 1 反对 0

使用道具 举报

推荐
发表于 2015-9-29 14:32:09 | 只看该作者
楼主,还是静态编译,去除掉对VC库依赖吧
回复 支持 1 反对 0

使用道具 举报

429#
发表于 前天 23:28 | 只看该作者
真是支撑论坛发展的大牛!!!
回复 支持 反对

使用道具 举报

428#
 楼主| 发表于 前天 20:34 | 只看该作者
本帖最后由 slore 于 2018-8-16 22:16 编辑
Mouri_Naruto 发表于 2018-8-16 19:36
我关注这个项目已经有一段时间……

但是,有个疑惑就是,源代码在哪里?


ReactOS的explorer的代码是LGPL的协议,lib库形式的话,不用开源,
这部分修改了几个BUG而已,ROS的explorer的代码很完整,本身直接编译就能用。不过我改的部分也开源了,
源码是已pexlorer的git项目提交的,中间忘了什么原因那个工程被删除掉了。

我的版本修改内容如下:
  • x64对应
  • 桌面壁纸显示
  • 任务栏自绘(自定义颜色)
  • 托盘图标支持x64,x86程序
  • xml配置改为json配置
  • 任务栏支持大图标
  • 删除多桌面切换
  • 删除多文档文件管理器(太老土,功能弱,bug多)
  • 利用文件打开对话框作为文件管理器
  • API钩子,实现第三方Shell的自动刷新
  • 实现Appbar消息,使得支持ClassicShell第三方开始菜单



UI的部分,完全是普通的带UI界面的APP而已,跟shell没有关系这2年不时的更新的是这部分的,
和shell一点关系都没有,所以这部分目前是闭源的,毕竟就像用pecmd,autoit画界面一样,没有啥技术含量。
而且是xml+lua脚本组合,都是没有加密的文本,代码可见。
(因为PE没有运行库,静态编译体积大,所以2个exe合并到一起发布而已。)

现在在旅游,回头回家了把pexlorer的部分重新再在github上推送一次。
回复 支持 反对

使用道具 举报

427#
发表于 前天 19:57 来自手机 | 只看该作者
Mouri_Naruto 发表于 2018-8-16 19:36
我关注这个项目已经有一段时间……

但是,有个疑惑就是,源代码在哪里?

这两者好像没关系
回复 支持 反对

使用道具 举报

426#
发表于 前天 19:36 | 只看该作者
本帖最后由 Mouri_Naruto 于 2018-8-16 19:40 编辑

我关注这个项目已经有一段时间……

但是,有个疑惑就是,源代码在哪里?
因为你的项目基于ReactOS的其中一个组件,而ReactOS整个项目使用的都是用了就要开源的GPL v2许可。

毛利

点评

ReactOS的explorer的代码是LGPL的协议,lib库形式的话,不用开源, 这部分修改了几个BUG而已,本身就能用。不过我也开源了, 源码是已pexlorer的git项目提交的,中间忘了什么原因那个工程被删除掉了。 UI的部分  详情 回复 发表于 前天 20:34
这两者好像没关系  详情 回复 发表于 前天 19:57
回复 支持 反对

使用道具 举报

425#
发表于 2018-8-10 13:17:08 | 只看该作者
slore 发表于 2018-8-10 12:49
第二句是调试用的,拼了一个字符串,用来判断窗口是否找到,不要也可以。
send_message和你想到Messag ...

那就是对windowsapi相关的操作了。看来不管什么语言,在windows机制上运行都要遵循api规则,这块了解得少,之所以学了一下c#和delphi差不多。图形化的,相对简单得多,lua好像是基于c语言搞的吧。
wes7,8模式其实是wes的Command Prompt Shell with Custom Shell Support方式,其他方式应该和win7,win8是一样的,不需要加-wes参数。省得给其他用wes系统的用户误导。
回复 支持 反对

使用道具 举报

424#
 楼主| 发表于 2018-8-10 12:49:54 | 只看该作者
本帖最后由 slore 于 2018-8-10 12:56 编辑
xintiandi 发表于 2018-8-10 12:40
winxshell越来越完善了。lua的代码主要是一些函数和方法不知道怎么用,对于非编程人员是有难度,

local ...


第二句是调试用的,拼了一个字符串,用来判断窗口是否找到,不要也可以。
send_message和你想到MessageBox这种提示消息不同,这个是给应用程序发送消息,
这里是SYSCOMMAND,窗口标题右键的系统菜单,SC_CLOSE表示关闭。

这个Windows编程的程序消息机制,与使用语言无关,C#,C++,C,VB,au3,易语言等等
都是要这样做,C/C++的标准API就是SendMessage。
https://msdn.microsoft.com/zh-cn/library/ms644950(v=vs.85).aspx

界面上可能要点击很多菜单,界面才能选择到的动作,最终是给窗体自己发送消息,让它触发要做的事情。
这里是lua找到窗体句柄了,直接发送过去,就不用人为点击了。(其实可以再好点100毫秒循环监控窗口发现就隐藏然后退出,不用等1秒,根本察觉不到启动control的,不过就运行1次没必要)
当然还有可以获取进程ID,然后调用TerminateProcess的方式结束程序,不过这种相当于
任务管理器,右键 强制结束, 有些暴力。

点评

那就是对windowsapi相关的操作了。看来不管什么语言,在windows机制上运行都要遵循api规则,这块了解得少,之所以学了一下c#和delphi差不多。图形化的,相对简单得多,lua好像是基于c语言搞的吧。 wes7,8模式其实是  详情 回复 发表于 2018-8-10 13:17
回复 支持 反对

使用道具 举报

423#
发表于 2018-8-10 12:40:25 | 只看该作者
本帖最后由 xintiandi 于 2018-8-10 12:41 编辑

winxshell越来越完善了。lua的代码主要是一些函数和方法不知道怎么用,对于非编程人员是有难度,

local cp_win = winapi.find_window('CabinetWClass', ctrlpanel_title)
  app:print(string.format("Control Panel Handle:0x%x", cp_win:get_handle()))
  cp_win:send_message(WM_SYSCOMMAND, SC_CLOSE, 0)
类似这样的代码,我自己是没办法写出来,只是大概能猜到意思,感觉是先通过lua的api去找控制面板的窗体,找到后输出控制面板的句柄,最后那句不太懂,既然是message,感觉是弹出消息之类的提示。
以后不懂的还要多向楼主请教。今天刚注意到大家都算是无忧的老人了。居然都是2007年1月注册的,都11年多了。
之前用了一周的时间也把网上找的进程守护改造了一下,昨天发布到csdn,我就是用来守护winxshell用的,如果有需要的朋友可以去下载。
https://blog.csdn.net/xintiandi12345/article/details/81534648

点评

非科班很厉害了,看了程序介绍功能很强啊,还有托盘啥的,比这lua脚本复杂多了,编程的问题,随意OK。  发表于 2018-8-10 12:53
第二句是调试用的,拼了一个字符串,用来判断窗口是否找到,不要也可以。 send_message和你想到MessageBox这种提示消息不同,这个是给应用程序发送消息, 这里是SYSCOMMAND,窗口标题右键的系统菜单,SC_CLOSE表示  详情 回复 发表于 2018-8-10 12:49
回复 支持 反对

使用道具 举报

422#
 楼主| 发表于 2018-8-10 00:20:14 | 只看该作者
本帖最后由 slore 于 2018-8-11 00:41 编辑

在调试给UI_Luncher添加【所有程序】程序树(纯lua脚本),
比微软,classicshell,startisback的开始菜单要好的地方是,
可以直接加载多个U盘上的程序,不用创建快捷方式,
而且自定义性高。估计周末能赶不上。。。

就暂时只小幅更新下完善了WES对应的部分。




  1. D:\Dev\Shell\WinXShell>lua53 winapi_test.lua
  2. H:\Start Menu\Programs\*.*
  3. 11对战平台
  4.    11对战平台.lnk
  5.    卸载11对战平台.lnk
  6. 7-Zip
  7.    7-Zip File Manager.lnk
  8.    7-Zip Help.lnk
  9. Accessibility
  10.    Desktop.ini
  11.    Speech Recognition.lnk
  12. Accessories
  13.    Math Input Panel.lnk
  14.    Paint.lnk
  15.    Quick Assist.lnk
  16.    Remote Desktop Connection.lnk
  17.    Snipping Tool.lnk
  18.    Steps Recorder.lnk
  19.    System Tools
  20.       Character Map.lnk
复制代码


100行lua处理dir /b /s的文件列表,生成<TreeNode>的xml格式,可以显示图标了。
300个图标花了2,3秒略有卡顿,开机缓存估计好些。


回复 支持 反对

使用道具 举报

421#
发表于 2018-8-9 22:18:19 | 只看该作者
本帖最后由 xintiandi 于 2018-8-9 23:43 编辑

这种方式没有问题,可以更新了。但是仅wes8需要这么处理,wes7是不需要的,我把function onfirstrun()里面的ver改成6.2,意思就是wes8的时候才初始化,但是经常在wes7下也会运行control,没有wes10的环境,就没有办法测试。
上次也遇到这样的问题,不知道后来怎么又好了,好像是全部替换了一遍文件,感觉替换的都没改动。现在是wes7 x64也出现一样的情况,我在wes8下测试好了,直接拷贝到wes7下的,我用的x64位版本的winxshell测试的,运行后,控制面板又自动打开了,感觉判断版本那有点问题。wes7,弹出控制面板,wes8也就解决了。如果wes7不弹出控制面板,wes8好像也不行了。不知道是哪个地方的配置又出了问题,这样的问题之前测试也遇到过,如果没记错的话,也出现了2,3次。就像下午测试wes8不行,晚上回来后文件都没有替换,就加了console运行一次后,就可以了。真是奇怪了。难道和虚拟机有关。之前测试的winxshellx86版本已经完美了。



找到问题了,下面这3行,wes8加上,wes7删除。感觉代码有点问题哦,对于wes8没有问题,但是对于wes7,好像有问题,假如是wes模式,就会初始化控制面板,控制面板的函数中,版本不等于6.2的时候也会执行control.exe
之前也是照搬没有仔细想,改成和onfirstrun函数中一致就好了。既判断是wes,也要判断版本是6.2,才初始化控制面板就行了。好了,所有问题完美解决。

  1.   if is_wes and win_ver == '6.2' then
  2.     initcontrolpanel(win_ver)
  3.   end
复制代码


点评

:+1: 导出lua控制看来对飞编程的还是有点复杂啊。上面回复只是解决方法的验证代码,正式的WinXShell.lua, WES7,8我根据你反馈的状况在改,打算周末更新下的。(EXE也要改:onfirstrun将被干掉,增加beforeshell) WES   发表于 2018-8-10 00:12

评分

参与人数 1无忧币 +5 收起 理由
slore + 5 自己动手,丰衣足食!

查看全部评分

回复 支持 反对

使用道具 举报

420#
发表于 2018-8-9 17:43:02 | 只看该作者
本帖最后由 xintiandi 于 2018-8-9 17:57 编辑

现在测试可以了。能打开控制面板了。之前不知道怎么回事不行,不知道是不是和编码有关,因为beyoud打开的文档有些识别成ansi,有些又是utf-8,lua和jcfg好像也有差异。有时我用记事本改的。

之前出现了一次这样的提示,不知道是怎么导致的。

点评

确认这个方式可以就好。那我就在shell创建前导出一个beforeshell接口。  发表于 2018-8-9 18:31
有地方改错了,语法错误,或者if,end没对齐,导致脚本整体解析失败。函数都找不到就无效了。  发表于 2018-8-9 18:29
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2018-8-18 04:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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