无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: slore
打印 上一主题 下一主题

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

    [复制链接]
451#
发表于 2018-9-13 11:59:45 | 只看该作者
本帖最后由 xintiandi 于 2018-9-13 13:03 编辑
slore 发表于 2018-9-13 09:00
你看handle_prop.reg, "Position"="Bottom" 这个信息注册表补充了么。我的电脑下面多了属性的话,我先在W ...


注册表内容见下图,把属性补齐后,就系统类型和计算机描述2项是空的。


更改一个123菜单还是加在上面,不是在最后。最终解决了。用"Position"="Bottom"  就是在最后            用"Position(&R)"="Bottom"就是出现在图中的位置,测试了都能打开系统属性信息。

点评

系统类型的资源是106行main.lua: ResHacker打开你的systemcpl.dll.mui看看,字符串资源号对不对。 如果单纯中文系统的话,你自己可以写死文本,不用从系统加载。 计算机描述PE都是空的,我没处理,自  详情 回复 发表于 2018-9-13 13:52
哦,注释写错了,@="属性(&R)",这个是显示的菜单项,带&R的话,按R可以打开属性。位置是Position控制的。没有就是系统决定顺序。  发表于 2018-9-13 13:11
回复

使用道具 举报

452#
发表于 2018-9-13 13:17:22 | 只看该作者
slore 发表于 2018-9-10 11:16
不用,只要加System32下面3,4个文件,和explorerframe.dll的CLSID注册表项目。

NewOpenFileDialog. ...

感谢大佬指点, 这些可以用winxshell.exe来打开管理器了。

我把winxshell.exe -winpe 加入winlogon注册表 咋没启动起来,还是出来cmd窗口。

1111.jpg (79.36 KB, 下载次数: 114)

1111.jpg

点评

正常系统会加载shell,或者ramos,admin用户登录。。。 WinPE的话,启动是 Winpeshl.ini和Startnet.cmd。 使用了pecmd的话,PECMD.ini中设置。  详情 回复 发表于 2018-9-13 13:56
回复

使用道具 举报

453#
 楼主| 发表于 2018-9-13 13:52:44 | 只看该作者
xintiandi 发表于 2018-9-13 11:59
注册表内容见下图,把属性补齐后,就系统类型和计算机描述2项是空的。

系统类型的资源是106行main.lua:
  
  1. local arch_id = 0
  2.   if ARCH == 'x86' then
  3.     arch_id = 56 -- Windows 10
  4.     if vernum == "6.1" then arch_id = 23 end -- Windows 7
  5.   else
  6.     arch_id = 60 -- Windows 10
  7.     if vernum == "6.1" then arch_id = 24 end -- Windows 7
  8.   end
  9.   set_res('arch_text', arch_id)
复制代码

ResHacker打开你的systemcpl.dll.mui看看,字符串资源号对不对。

如果单纯中文系统的话,你自己可以写死文本,不用从系统加载。
  1. if ARCH == 'x86' then
  2.   set_text('arch_text', '32 位操作系统,基于 x86 的处理器')
  3. else
  4.   set_text('arch_text', '64 位操作系统,基于 x64 的处理器')
  5. end
复制代码


计算机描述PE都是空的,我没处理,自己补个读取注册表的操作。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters\srvcomment

main.lua有类似的代码,你先抄下看看。

点评

麻烦楼主在帮忙看看,按照你说的我自己加了系统类型是syscpl.dll中资源对应不对,我把23改成58就可以了,计算机描述,我参照版本那的注册表读取,也可以了,我加了正版的图标,但是下方那的 联机了解更多内容,搞了  详情 回复 发表于 2018-9-13 22:46
回复

使用道具 举报

454#
 楼主| 发表于 2018-9-13 13:56:31 | 只看该作者
luobo3230 发表于 2018-9-13 13:17
感谢大佬指点, 这些可以用winxshell.exe来打开管理器了。

我把winxshell.exe -winpe 加入wi ...

正常系统会加载shell,或者ramos,admin用户登录。。。

WinPE的话,启动是
Winpeshl.ini和Startnet.cmd。
使用了pecmd的话,PECMD.ini中设置。
回复

使用道具 举报

455#
发表于 2018-9-13 22:46:52 | 只看该作者
本帖最后由 xintiandi 于 2018-9-13 22:55 编辑
slore 发表于 2018-9-13 13:52
系统类型的资源是106行main.lua:
  


麻烦楼主在帮忙看看,按照你说的我自己加了系统类型是systemcpl.dll.mui中资源对应不对,我把23改成58就可以了,计算机描述,我参照版本那的注册表读取,也可以了,我加了正版的图标,但是下方那的 联机了解更多内容,搞了一阵字体无法调小,感觉font参数没用,你帮忙看看,最终想要的效果见下面第一张图,我也尝试改了 <Label name="basic_label" font="18" textcolor="#FF303F9F" />,字体也不会发生变化,难道main.xml中字体写死了。能否在main.lua中传递font参数?可能还是我对这个代码没有读明白。



点评

font字体表示ID,在locales\zh_CN.xml中先定义,大小,字体名,加粗,斜体啥的。 然后main.xml中引用对应的字体id。  详情 回复 发表于 2018-9-13 23:16
回复

使用道具 举报

456#
 楼主| 发表于 2018-9-13 23:16:44 | 只看该作者
xintiandi 发表于 2018-9-13 22:46
麻烦楼主在帮忙看看,按照你说的我自己加了系统类型是systemcpl.dll.mui中资源对应不对,我把23改成58 ...

font字体表示ID,在locales\zh_CN.xml中先定义,大小,字体名,加粗,斜体啥的。
然后main.xml中引用对应的字体id。

点评

非常感谢,终于可以了。看来是对winxshell的整体结构还不熟,没有仔细看说明,真没去想font后面是定义的字体的id,我一直以为是size,折腾了半天,可以休息了。 [attachimg]379435[/attachimg]  详情 回复 发表于 2018-9-13 23:30
回复

使用道具 举报

457#
发表于 2018-9-13 23:30:26 | 只看该作者
slore 发表于 2018-9-13 23:16
font字体表示ID,在locales\zh_CN.xml中先定义,大小,字体名,加粗,斜体啥的。
然后main.xml中引用对 ...

非常感谢,终于可以了。看来是对winxshell的整体结构还不熟,没有仔细看说明,真没去想font后面是定义的字体的id,我一直以为是size,折腾了半天,可以休息了。

点评

是我没时间写文档,慢慢补吧。  发表于 2018-9-14 00:29
回复

使用道具 举报

458#
发表于 2018-9-14 22:17:26 | 只看该作者
本帖最后由 xintiandi 于 2018-9-14 22:19 编辑

在请教楼主一个问题,和winxshell没有关系,就是我想去掉wes8默认启动后的开始菜单界面(就是所谓的metro风格),而直接进入桌面,见下图,现在的情况每次重启后,都会停在这个界面等待按开始菜单进入桌面,我试了网上提供的win8去掉metro的方法,添加注册表项和删除某个dll文件都不行,如果我结束explorer.exe,在重新运行explorer.exe,就会直接进入桌面,不会出现这个菜单。如果我配置默认启动shell为cmd,cmd下在运行explorer也不会出现这个开始菜单,而是直接进入桌面,我想楼主指点一下,有什么方法可以排查这个界面和哪个文件有关系?给个思路,因为是监听启动过程,我还没有找到适合方法,如果监听一般的应用程序就容易多了。
回复

使用道具 举报

459#
发表于 2018-9-19 19:59:35 | 只看该作者
四海皆狂龙 发表于 2017-9-2 07:31
比较下这两款文件管理器
Q-Dir明显是比较直接的使用默认的explorer接口,而Explorer++应该是自己处理了不 ...

winfile我看过下,编译不过,可能要比较高版本的vs。感觉这个代码是很老的东西,怀疑和nt5有差别,所以懒得弄了。你有没有试过编译来玩玩,里面代码有什么可以取的。

点评

默认是VS2017的工程。 VS2015打开,把工程属性的SDK版本改成自己有的, 另外平台改成v140直接就编译出来了,几秒钟。 NT4的,老,样子不好看,功能也不行,学习的话也许有内容,我没看。 winxshell最初的代  详情 回复 发表于 2018-9-19 22:18
回复

使用道具 举报

460#
发表于 2018-9-19 21:36:20 | 只看该作者
slore 发表于 2018-8-7 21:21
1.不要explorer,访问控制面板

基本不可能。因为很多UI都是explorer窗口显示的。

没错,微软把那些功能和explorer绑得太死,要完全踢掉explorer,只能全部自己开发,每个组件都是一个不小工程,感觉这工作量太巨大。

点评

是的,不是不能做,太费精力了。我的UI也只是做写简单的常用部分来代替。  发表于 2018-9-19 22:19
回复

使用道具 举报

461#
 楼主| 发表于 2018-9-19 22:18:48 | 只看该作者
四海皆狂龙 发表于 2018-9-19 19:59
winfile我看过下,编译不过,可能要比较高版本的vs。感觉这个代码是很老的东西,怀疑和nt5有差别,所以懒 ...

默认是VS2017的工程。

VS2015打开,把工程属性的SDK版本改成自己有的,
另外平台改成v140直接就编译出来了,几秒钟。

NT4的,老,样子不好看,功能也不行,学习的话也许有内容,我没看。
winxshell最初的代码也是带了多窗口的,和这个差不多,不过新版本的资源管理器
确实改进了不少,比如导航栏。。。所以我用文件对话框代替了,代码少还稳定。

以前PSP上好多经典游戏当时没完,现在拿起来,看到像素就没法玩了,
时代过去了,这种就是收藏吧。

点评

看来还是没搞头,微软都不舍得开源nt5的。  详情 回复 发表于 2018-9-19 23:34
回复

使用道具 举报

462#
发表于 2018-9-19 23:00:09 | 只看该作者
请问为何我在VMWARE测试时,使用WEPE的WINPE内核,在PECMD.INI里加载EXPLORER.EXE,替换成加载WINXSHELL.EXE -WINPE,能正常启动并且加载WINXSEHLL.EXE,但是启动后没有鼠标的小键头,但是移动时会有选中,可以打开,就是看不到小键头。我看了任务管理器里没有加载EXPLORER的。还有用WINXSEHLL默认配置及默认桌面图片时进入WINPE后桌面背景是一片小黄色,没有显示出桌面图片出来。

点评

最好给个截图. 背景第一回读取 WinXShell.exe相同目录的wallpaper.jpg,可以在WinXShell.jcfg中修改,或者启动后,通过pecmd wall命令修改壁纸. 鼠标的问题不好说,默认boot.wim/winre.wim直接启动,shift+f10的cmd中  详情 回复 发表于 2018-9-19 23:37
回复

使用道具 举报

463#
发表于 2018-9-19 23:32:39 | 只看该作者
我很久不弄这东西了,我看你好像做了不少。我记得你说,通过什么方法搞定文件管理器自动刷新问题,所以我下载测试了下,但是发现创建文件还是不会自动刷新。

点评

钩住GetShellWindow API强制返回0.我没做全局钩子,只是WinXShell的文件管理器hook自己的,做出全局的也不难,不过感觉方法还是不好.  详情 回复 发表于 2018-9-19 23:34
回复

使用道具 举报

464#
 楼主| 发表于 2018-9-19 23:34:33 | 只看该作者
四海皆狂龙 发表于 2018-9-19 23:32
我很久不弄这东西了,我看你好像做了不少。我记得你说,通过什么方法搞定文件管理器自动刷新问题,所以我下 ...

钩住GetShellWindow API强制返回0.我没做全局钩子,只是WinXShell的文件管理器hook自己的,做出全局的也不难,不过感觉方法还是不好.

点评

也就是说还是不完美?  详情 回复 发表于 2018-9-19 23:35
回复

使用道具 举报

465#
发表于 2018-9-19 23:34:43 | 只看该作者
slore 发表于 2018-9-19 22:18
默认是VS2017的工程。

VS2015打开,把工程属性的SDK版本改成自己有的,

看来还是没搞头,微软都不舍得开源nt5的。
回复

使用道具 举报

466#
发表于 2018-9-19 23:35:42 | 只看该作者
slore 发表于 2018-9-19 23:34
钩住GetShellWindow API强制返回0.我没做全局钩子,只是WinXShell的文件管理器hook自己的,做出全局的也不 ...

也就是说还是不完美?

点评

某些程序,如果是桌面挂件的话,找不到桌面,不是不能用了?当然可以在钩子中过滤,不过提前不知道谁是真的要用桌面句柄,不过通常程序不会用这个API,95%以上都是OK的.  详情 回复 发表于 2018-9-19 23:39
回复

使用道具 举报

467#
 楼主| 发表于 2018-9-19 23:37:12 | 只看该作者
木头人 发表于 2018-9-19 23:00
请问为何我在VMWARE测试时,使用WEPE的WINPE内核,在PECMD.INI里加载EXPLORER.EXE,替换成加载WINXSHELL.EX ...

最好给个截图. 背景第一回读取 WinXShell.exe相同目录的wallpaper.jpg,可以在WinXShell.jcfg中修改,或者启动后,通过pecmd wall命令修改壁纸.

鼠标的问题不好说,默认boot.wim/winre.wim直接启动,shift+f10的cmd中输入winxshell.exe -winpe有的话,
就是explorer和其他的程序影响的吧.
回复

使用道具 举报

468#
 楼主| 发表于 2018-9-19 23:39:10 | 只看该作者
四海皆狂龙 发表于 2018-9-19 23:35
也就是说还是不完美?


某些程序,如果是桌面挂件的话,找不到桌面,不是不能用了?当然可以在钩子中过滤,FindWindow给他句柄,
不过提前不知道谁是真的要用桌面句柄,不过通常程序不会用这个API,95%以上都是OK的.
回复

使用道具 举报

469#
发表于 2018-9-20 14:51:35 | 只看该作者
pe直接shell启动是否可以,也就是跳过pecmd一类的工具,因为感觉透过那些工具启动太过啰嗦了,不如直接启动。

点评

我是不用pecmd。WINPE自启动脚本Winpeshl.ini 和Startnet.cmd,这2个里面配置。pecmd更多的是初始化准备环境工具  发表于 2018-9-20 15:21
回复

使用道具 举报

470#
发表于 2018-9-20 16:07:39 | 只看该作者
那就是说直接使用原生系统的方法了,Startnet.cmd是命令行,会不会有小黑窗。还有就是,默认的热键呼出任务管理器,也在shell处理?

点评

startnet.cmd会有黑窗. CTRL+SHIFT+ESC要自己起个不结束的程序注册热键,是不是shell无所谓,我的没有加  发表于 2018-9-20 18:57
回复

使用道具 举报

471#
发表于 2018-9-20 22:20:15 | 只看该作者
我研究了下气泡,发现超时参数UINT uTimeout好像并不起作用。网上说时间间隔是10-30秒,但是接收的值总是3。不知道哪里问题。

点评

NOTIFYICONDATA结构体中: union { UINT uTimeout; UINT uVersion; // used with NIM_SETVERSION, values 0, 3 and 4 } DUMMYUNIONNAME; 超时和版本是共同体,你后面设置了版本就变  详情 回复 发表于 2018-9-21 00:14
回复

使用道具 举报

472#
 楼主| 发表于 2018-9-21 00:14:38 | 只看该作者
四海皆狂龙 发表于 2018-9-20 22:20
我研究了下气泡,发现超时参数UINT uTimeout好像并不起作用。网上说时间间隔是10-30秒,但是接收的值总是3 ...

NOTIFYICONDATA结构体中:
    union {
        UINT  uTimeout;
        UINT  uVersion;  // used with NIM_SETVERSION, values 0, 3 and 4
    } DUMMYUNIONNAME;

超时和版本是共同体,你后面设置了版本就变成了, 不过这里是毫秒,小的话,应该是毫秒.

然后又查了下,发现受到系统Message Duration这个设定的影响,超时时间不能超过这个,
没改过就是3秒吧.

可以通过SPI_SETMESSAGEDURATION更改.

https://docs.microsoft.com/en-us ... to/message-duration

点评

就一个超时参数而已,都搞那么复杂,真是太佩服微软。  详情 回复 发表于 2018-9-21 01:16
回复

使用道具 举报

473#
发表于 2018-9-21 01:16:39 | 只看该作者
slore 发表于 2018-9-21 00:14
NOTIFYICONDATA结构体中:
    union {
        UINT  uTimeout;

就一个超时参数而已,都搞那么复杂,真是太佩服微软。

点评

可以传过去,但是,我看这里介绍 https://blog.csdn.net/zjx_cfbx/article/details/81779481 这个联合体参数规则比较诡异,按照微软默认规则,不同系统版本处理不同,细节也很难摸清,如果是自己的shell要模仿原始  详情 回复 发表于 2018-9-21 02:24
为了保证兼容性和内存对齐的一种妥协吧.老的结构体设计的不好.新版的话都有开头都有size了,可以区分了.  发表于 2018-9-21 01:35
回复

使用道具 举报

474#
发表于 2018-9-21 02:24:09 | 只看该作者
四海皆狂龙 发表于 2018-9-21 01:16
就一个超时参数而已,都搞那么复杂,真是太佩服微软。

可以传过去,但是,我看这里介绍
https://blog.csdn.net/zjx_cfbx/article/details/81779481
这个联合体参数规则比较诡异,按照微软默认规则,不同系统版本处理不同,细节也很难摸清,如果是自己的shell要模仿原始explorer规则,好像不是太容易吧。我看有些shell,对于超时值根本就不处理的,就是给个固定值,完全不理发送过去的参数。
回复

使用道具 举报

475#
 楼主| 发表于 2018-10-3 02:16:00 | 只看该作者
2018/10/03 RC3.3 更新
WinXShell_x64.zip (2.34 MB, 下载次数: 303)
WinXShell_x86.zip (2.18 MB, 下载次数: 161)

新任务栏风格


新关闭界面


计划登录界面



修正:托盘菜单显示在屏幕上方的问题
修正:当任务栏未选择时,鼠标悬停在任务栏程序窗口,不显示提示信息的问题
修正:文件管理器不能打开文件夹快捷方式的问题
修正:文件管理器中未选中文件按回车时,提示找不到文件的问题
修正:WinXShell.lua脚本中的对WES环境的不正确处理的问题
修正:WinXShell.lua脚本中路径不正确导致无法启动UI的问题
改善:提供适配最新版ClassicShell(Open-Shell)的方法
改善:从ZIP格式中直接读取jcfg配置参数(目录结构更简洁)
改善(视觉):文件管理器支持新版本的暗黑主题(其实什么也没做)
改善(视觉):开始按钮采用新风格
改善(视觉):任务栏各图标大小间距更接近新系统
改善(视觉):任务栏上的任务窗口显示风格(仅图标,下划线)
新增(UI):WIN10系统风格日历,声音设定界面
新增(UI):UI_Launcher显示开始菜单程序树
新增(UI):UI_Shutdown增加全屏模式界面
新增(UI):UI_Logon/UI_LOCK登陆与锁定界面
自定义扩充:开始按钮按下背景颜色
自定义扩充:快速启动按钮间距
自定义扩充:任务栏任务窗口显示模式(图标+标题 或 仅图标)
自定义扩充:任务栏任务窗口是否绘制下划线及其颜色
自定义扩充:快速启动栏的固定项目是否显示(显示桌面,文件管理器)
自定义扩充:是否显示时钟区域
自定义扩充:是否显示托盘显示隐藏图标按钮
自定义扩充:是否显示开始菜单中的文件管理器



  1. "JS_TASKBAR":
  2.   {
  3.     "bkcolor":[0,122,204],
  4.     "task_line_color":[240,240,240],
  5.     "no_task_title":true
  6.   },
  7.   "JS_NOTIFYAREA":
  8.   {
  9.     "hide_toggle_button":true
  10.   },
  11.   "JS_NOTIFYCLOCK":
  12.   {
  13.     "visible":true
  14.   },
  15.   "JS_STARTMENU":
  16.   {
  17.     "start_pushed_bkcolor" : [0, 100, 180],
  18.     "start_icon_comment": "empty;custom",
  19.     "start_icon": "custom",
  20.     "nofileexplorer":true
  21.   },
  22.   "JS_QUICKLAUNCH":
  23.   {
  24.     "hide_showdesktop":true,
  25.     "hide_fileexplorer":true
  26.   }
复制代码
回复

使用道具 举报

476#
发表于 2018-10-3 23:03:02 | 只看该作者
本帖最后由 xintiandi 于 2018-10-4 00:18 编辑

非常期待加入登陆界面的版本。不知道这个登陆界面是加载winxshell自己设置的用户和密码,还是直接验证windows系统自带的用户名和密码,当然期待是后者就完美了。

刚刚顺便试了一下针对wes8,启动后打开控制面板的问题,怎么还是卡顿,难道是默认没有启用运行一次control,不是找到问题了,不需要执行一次control,有时间再比对一下lua文件和之前的解决方式之间的差异。

点评

这是之前测试过没有问题的版本  详情 回复 发表于 2018-10-4 22:30
过节有点事,忘了,没改对吧。主要改了路径和版本判断。。。 我回头看看,或者你PM下,你改好的  发表于 2018-10-4 09:17
回复

使用道具 举报

477#
发表于 2018-10-4 22:30:31 | 只看该作者
xintiandi 发表于 2018-10-3 23:03
非常期待加入登陆界面的版本。不知道这个登陆界面是加载winxshell自己设置的用户和密码,还是直接验证windo ...

这是之前测试过没有问题的版本
WinXShell.rar (2.71 KB, 下载次数: 13)

回复

使用道具 举报

478#
发表于 2018-10-11 11:00:19 | 只看该作者
又更新了,真好,虽然这段时间忙,但还是期待越来越强大
回复

使用道具 举报

479#
发表于 2018-12-22 18:27:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

480#
发表于 2018-12-23 21:05:57 | 只看该作者
期待楼主登录界面版本的更新,不知道年前能更新不,能否透露一下登录机制的细节,我现在的环境是,系统启动后不会运行explorer,会自动运行一个程序,运行完后,我希望winxshell也能跟随运行,等我需要的程序界面启动完成后,就自动切换到winxshell的登录界面,相当于锁住桌面,不知道这样的运行环境,新版winxshell是否满足?winxshell能否配置是否记住上次登录的用户名?

点评

会闪动一下。另外,winlgon的shell从eshell改成 explorer,explorer也行,不过桌面会打开一个explorer,嘛,再写一个关闭窗口命令。。。能解决。。。  发表于 2018-12-27 22:59
你之前给我的WES8我还原了,直接登录界面问题,手动按WIN+D可以,但是发送按键不行。添加一个开机启动autoit命令:Sleep(5000) Send("桌面") Send("{Enter}")可以,不过相当于右边输入APP,回车。   发表于 2018-12-27 22:58
你发的CustomLogon我看了。只能改变单个用户认证的 头像,密码显示这块,整体背景图啥的不能改。  发表于 2018-12-27 22:56
WinXShell有2个月没更新了。暂时也没功能更新的计划。工作上有些忙。脚本工具偶尔写写。登录界面我这里的类似PECMD的password吧,就是有个密码输入框,其他的不能点不能切。你发我的是系统的,估计那种相当的WIN+L锁  详情 回复 发表于 2018-12-23 22:43
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-25 17:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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