无忧启动论坛

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

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

    [复制链接]
发表于 2020-12-13 18:45:30 | 显示全部楼层
请教一下slore大,如果我想通过注册表把WinXShell的某一个功能比如说“隐藏文件扩展名”添加到右键菜单,来实现显示和隐藏切换,能实现吗?

点评

WinXShell.exe -code FolderOptions:Set('ShowExt',1) 可以隐藏文件扩展名。 没有提供切换的接口,要自己获取下。 ToggleFileExt.lua onoff = FolderOptions:Get('ShowExt') + 1 FolderOptions:Set('Show  详情 回复 发表于 2020-12-13 21:33
回复

使用道具 举报

 楼主| 发表于 2020-12-13 21:33:53 | 显示全部楼层
沉默凌神 发表于 2020-12-13 18:45
请教一下slore大,如果我想通过注册表把WinXShell的某一个功能比如说“隐藏文件扩展名”添加到右键菜单,来 ...

WinXShell.exe -code FolderOptions:Set('ShowExt',1)

可以隐藏文件扩展名。

没有提供切换的接口,要自己获取下。

ToggleFileExt.lua
  1. local onoff = FolderOptions:Get('ShowExt') + 1
  2. FolderOptions:Set('ShowExt', onoff)
复制代码


WinXShell.exe -script %windir%\ToggleFileExt.lua

上面的代码也可以写成函数,放到 WinXShell.lua中,

  1. function ToggleFileExt()
  2.   local onoff = FolderOptions:Get('ShowExt') + 1
  3.   FolderOptions:Set('ShowExt', onoff)
  4. end
复制代码


然后,可以
WinXShell.exe -code "ToggleFileExt()"

点评

感谢slore大!!!  发表于 2020-12-13 21:44

评分

参与人数 1无忧币 +5 收起 理由
沉默凌神 + 5 很给力!

查看全部评分

回复

使用道具 举报

发表于 2020-12-15 14:19:26 | 显示全部楼层
看起来挺酷。名字让我想起了当年的dosshell
回复

使用道具 举报

发表于 2020-12-23 12:39:49 | 显示全部楼层
s 大你好。
关注这个winxshell 很久了.


十多年前玩过一段时间 pecmd/wincmd 。
玩多了类C语言,现在再回过头看 pecmd的语法可读性太糟糕了。

lua 和 C还是蛮接近的,至少阅读没有什么障碍。
winxshell内置了lua 引擎,是否可以将它拿来做 lua 解释器,这样可以一定程度上代替 pecmd。
目前发现可以使用 -code 执行lua 命令,或 -script 载入外部脚本。
配合 -console 可以用 app:print() 调试,但是 lua 内部的 print函数 无输出。

加之 您的 winxshell 加了很多对象,看起来缺乏文档指引(或者我没找到),要自己写点什么很是吃力。
甚至连 winxshell 的一些命令行参数都没有帮助,只能在您发布的几个帖子来回翻找。

由于不是开源软件,也找不到任何有价值的进阶线索。。。

点评

WinXShell 公开参数一览: wxs-open:system | 打开我的电脑属性 wxs-open:printers | 打开打印机设置窗口 wxs-open:networkconnections | 打开网络连接设置窗口 wxs-open:devicesandprinters | 打开设备和打印  详情 回复 发表于 2020-12-23 19:56
外壳部分是开源的。 lua和UI是独立程序有很多操作外壳的函数在外壳部分就合并了。 lua代码在WinXShell的资源里面,APP_LUAHELPER,老版本是lua_helper文件夹下面放着,不是都喜欢单文件麽。 单独我还  详情 回复 发表于 2020-12-23 12:59
回复

使用道具 举报

 楼主| 发表于 2020-12-23 12:59:42 | 显示全部楼层
本帖最后由 slore 于 2020-12-23 13:25 编辑
junyee 发表于 2020-12-23 12:39
s 大你好。
关注这个winxshell 很久了.

外壳部分是开源的。 lua和UI是独立程序有很多操作外壳的函数在外壳部分就合并了。

lua代码在WinXShell的资源里面,APP_LUAHELPER,老版本是lua_helper文件夹下面放着,不是都喜欢单文件麽。

>winxshell内置了lua 引擎,是否可以将它拿来做 lua 解释器

可以。内置方法都能用,额外加了winapi库,可以操作注册表,窗口。

但是作为代替pecmd,建议用独立的luac.exe好些。



WinXShell是桌面程序,不是控制台程序,print命令没发输出。-console自己调皮创建了一个输出管道,app:print会写到这里。除非编译一个WinXShellC.exe。
不用外壳功能的话,直接用luac可以代替pecmd写就可以了。

执行程序,访问文件,函数,运算lua都有了。
实现创建快捷方式,读取注册表的几个方法,做一个lua的dll扩展库就行了。
回复

使用道具 举报

 楼主| 发表于 2020-12-23 19:56:57 | 显示全部楼层
本帖最后由 slore 于 2020-12-23 20:23 编辑
junyee 发表于 2020-12-23 12:39
s 大你好。
关注这个winxshell 很久了.

WinXShell 公开参数一览:

wxs-open:system | 打开我的电脑属性
wxs-open:printers | 打开打印机设置窗口
wxs-open:networkconnections | 打开网络连接设置窗口
wxs-open:devicesandprinters | 打开设备和打印机设置窗口
wxs-open:wifi | 打开无线网络连接界面
wxs-open:volume | 打开音量控制界面

ms-settings:taskbar | 打开任务栏设置界面
ms-settings:dateandtime | 打开时间和日期设置界面ms-settings:display | 打开显示设置界面
ms-settings:personalization | 打开个性化设置界面
ms-settings:network | 打开网络连接设置界面(高版本Windows有效)
-console | 调试窗口
-ui -jcfg XXXXX\YYYY\ZZZ.jcfg | 启动UI组件
-winpe      | Windows PE 环境标识
-code luacode | 执行单行lua代码
-file luafile | 执行lua脚本文件

WinXShell 公开对象一览(-code, -script 时使用):

app 程序对象。
app:info(opt)  | 获取程序信息
app:call(...)  | 调用WinXShell内置函数
app:jcfg(opt)  | 获取jcfg配置文件设定信息
app:print(str) | 打印信息到调试窗口

对象方法参数说明:
app:info(opt)  | 获取程序信息
opt可以指定以下值。
'cmdline'  | 命令行参数(字符串)
'winver'   | Windows版本号(字符串)
'langid’  | 系统语言编号(字符串)
'locale'   | 系统语言名称(字符串)
'path'     | 程序模块路径(字符串)

对象方法参数说明:
app:call(...)  | 调用WinXShell内置函数
... 可指定函数及参数如下。
'getresolutionlist' | 获取可用分辨率列表(字符串)
'cd', path                 | 切换当前工作目录到指定位置
'desktop::updatewallpaper'       | 刷新系统壁纸
'desktop::getwallpaper'          | 获取系统壁纸文件路径
'desktop::setwallpaper', file    | 更改系统壁纸
'volume::mute', 0or1             | 禁音/解除禁音
'volume::ismuted'                | 获取禁音状态
'volume::getlevel'               | 获取当前音量大小
'volume::setlevel', 0to100       | 更改当前音量大小
'volume::getname'                | 获取当前音频设备名称
'gettickcount'                   | 获取系统启动时间(秒单位)
'sleep', imsec                   | 等待imsec毫秒
'play', wavfile                  | 播放WAV格式音频文件
'putenv', var, val               | 设置环境变量
'envstr', str                    | 展开字符串中的环境变量(字符串)
'resstr', resstr                 | 展开字符串中的系统字符串资源
'run', file                      | 启动程序或者文件
'exitcode', code                 | 指定程序的退出码
'exit', code                     | 直接退出程序

--------------------------------------------------------
System 系统对象。
System:GetSettings(key) | 获取系统设定
System:SetSettings(key, val) | 更改系统设定
System:SysColorTheme(mode) | 更改系统颜色主题(mode = 'light' | 'dark')
System:AppsColorTheme(mode) | 更改应用颜色主题(mode = 'light' | 'dark')
System:Reboot() | 重启计算机
System:Shutdown() | 关闭计算机


对象方法参数说明:
System:GetSettings(key) | 获取系统设定
key可以指定以下值。
'AppsColorTheme' | 应用程序颜色主题
'SysColorTheme'  | 系统颜色主题
'ShellColorPrevalence'  | 外壳外观颜色
'WindowColorPrevalence' | 系统外观颜色
'Colors.Transparency'   | 使用透明色

System:SetSettings(key, val) | 更改系统设定
key可以指定以下值。
'ShellColorPrevalence'  | 外壳外观颜色
'WindowColorPrevalence' | 系统外观颜色
'Colors.Transparency'   | 使用透明色

--------------------------------------------------------
Screen 屏幕对象。
Screen:Get(...) | 获取屏幕信息
Screen:GetX() | 获取屏幕分辨率宽度
Screen:GetY() | 获取屏幕分辨率高度
Screen:GetRotation() | 获取屏幕旋转状态
Screen:Disp([w, h]) | 设置屏幕分辨率。不指定宽度和高度时,自动使用最大分辨率。
Screen:DispTest(arr) | 按照指定的分辨率列表逐个尝试设置屏幕分辨率,直到设置成功为止。

--------------------------------------------------------
Taskbar 任务栏对象。
Taskbar:IsReady(sec) | 指定sec秒内判断任务栏是否准备就绪(sec为-1时,直到任务栏准备好为止)
Taskbar:WaitForReady() | 等待任务栏加载完毕(内部调用Taskbar:IsReady(-1)方法)
Taskbar:GetSetting(key) | 获取任务栏设定
Taskbar:SetSetting(key, value, type) | 更改任务栏设定
Taskbar:CombineButtons(value[, update]) | 更改任务栏合并按钮选项(value ='always' | 'auto'), update为0时,不立即生效
Taskbar:UseSmallIcons(value[,update]) | 更改任务栏使用小图标选项(value ='always' | 'auto'), update为0时,不立即生效
Taskbar:AutoHide(value) | 更改任务栏自动隐藏选项(value = 0 | 1)。
Taskbar:Pin(target[, name[, param[, icon[, index[, showcmd]]]]]) | 固定命令到任务栏

--------------------------------------------------------
Startmenu 开始菜单对象。
Startmenu:Pin(target[, name[, param[, icon[, index[, showcmd]]]]]) | 固定命令到开始菜单

--------------------------------------------------------
FolderOptions 文件夹选项对象。
FolderOptions:Get(opt) | 获取文件夹选项。
FolderOptions:Set(opt, val) | 更改文件夹选项。

对象方法参数说明:
opt可以指定以下值。
'ShowAll'          | 显示隐藏文件
'ShowExt'          | 显示隐藏已知文件类型的扩展名
'ShowSuperHidden'  | 显示系统隐藏文件

WinXShell 可使用的库:

Lua5.4内置库: os, math, io等
https://www.lua.org/manual/5.4/

winapi 扩展库
https://github.com/stevedonovan/winapi

WinXShell 公开函数一览(-code, -script 时使用):

HideWindow(class, title) | 隐藏指定窗口。
CloseWindow(class, title) | 关闭指定窗口。
CloseShellWindow() | 关闭外壳窗口(外壳窗口不存在时,将等待外壳窗口出现后再关闭)。
os_ver_info() | 获取 ProductName, CSDVersion 信息(注册表)。
cpu_info() | 获取 CPU 信息(注册表)。
mem_info() | 获取系统可用内存(硬件以外),总内存大小,当前可用内存。
res_str(file, id) | 获取指定字符串资源。
win_copyright() | 获取 Windows 许可证说明。
call_dll(...) | 调用 dll 中的公开函数。
reg_read(key, values) | 读取注册表信息。
reg_write(key, name, value[, type]) | 写入注册表信息。未指定type时, 当作 REG_SZ 类型。
exec(option, cmd) | 执行命令。 option 可指定 /wait - 等待执行命令结束, /hide - 隐藏,/min - 最小化。
link(lnk, target, param, icon, index, showcmd) | 创建快捷方式。
wxsUI(ui[, jcfg[, opt[, app_path]]]) | 打开指定的UI组件。
PinToStartMenu(target[, name[, param[, icon[, index[, showcmd]]]]]) | 别名。固定命令到开始菜单。



点评

S大 有个问题 就是改分辨率后 任务栏位置不跟着刷新 有啥办法  详情 回复 发表于 2021-1-6 21:57
赞 ,不错 !  发表于 2021-1-6 21:55
感谢整理。 昨天我还费劲 枚举函数。。 ``` app:print('\r\n---------'); tb=""; function list(t) for k, v in pairs(t) do tb= tb .. '\n' .. tostring(k) .. "\ttype:" .. tostring(type(v));  详情 回复 发表于 2020-12-24 09:49
回复

使用道具 举报

发表于 2020-12-24 09:49:06 | 显示全部楼层
slore 发表于 2020-12-23 19:56
WinXShell 公开参数一览:

wxs-open:system | 打开我的电脑属性

感谢整理。

昨天我还费劲 枚举函数。。

```
app:print('\r\n---------');

tb="";

function list(t)
        for k, v in pairs(t) do
                tb= tb .. '\n' .. tostring(k) .. "\ttype:" .. tostring(type(v));
                if type(v) == "table" then
                winapi.show_message('is_table', k);
                for k1, v1 in pairs(v) do
                        tb = tb .. '\n  ' .. k .. "." .. k1 .. '\ttype:' .. tostring(type(v1));
                end
                end
                tb= tb .. "\n";
        end
end

winapi.show_message('@',  __this__ )
list(_G);


f = io.open("1.txt", "a")
f:write( tb )
f:close()
```

回复

使用道具 举报

发表于 2021-1-6 14:54:45 | 显示全部楼层
正由此需要
回复

使用道具 举报

发表于 2021-1-6 21:57:24 | 显示全部楼层
slore 发表于 2020-12-23 19:56
WinXShell 公开参数一览:

wxs-open:system | 打开我的电脑属性

S大  有个问题 就是改分辨率后 任务栏位置不跟着刷新  有啥办法

点评

右键 显示设置,用WinXShell设置分辨率。或者-daemon模式启动WinXShell,自动调整桌面。  详情 回复 发表于 2021-1-6 21:58
回复

使用道具 举报

 楼主| 发表于 2021-1-6 21:58:45 | 显示全部楼层
23456 发表于 2021-1-6 21:57
S大  有个问题 就是改分辨率后 任务栏位置不跟着刷新  有啥办法

右键 显示设置,用WinXShell设置分辨率。或者-daemon模式启动WinXShell,自动调整桌面。

点评

[attachimg]472377[/attachimg] 右边的是我在用的 11月11随W2制作的 左边的是在你官网的蓝奏 下载的1月1日版本 有区别吗  详情 回复 发表于 2021-1-7 17:21
我用的是这Screen:DispTest 但是 有时候设置分辨率了 任务栏位置没有变  详情 回复 发表于 2021-1-7 14:21
回复

使用道具 举报

发表于 2021-1-7 09:37:14 | 显示全部楼层
没有权限下载,还需要努力回帖才行
回复

使用道具 举报

发表于 2021-1-7 14:21:02 | 显示全部楼层
slore 发表于 2021-1-6 21:58
右键 显示设置,用WinXShell设置分辨率。或者-daemon模式启动WinXShell,自动调整桌面。

我用的是这Screen:DispTest     但是 有时候设置分辨率了  任务栏位置没有变

点评

0404版?使用随W2的最新版本试试。  发表于 2021-1-7 15:21
回复

使用道具 举报

发表于 2021-1-7 16:47:34 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2021-1-7 17:21:21 | 显示全部楼层
slore 发表于 2021-1-6 21:58
右键 显示设置,用WinXShell设置分辨率。或者-daemon模式启动WinXShell,自动调整桌面。

QQ图片20210107171837.png


右边的是我在用的  11月11随W2制作的       左边的是在你官网的蓝奏 下载的1月1日版本 有区别吗

点评

分辨率是应该了 个别情况 就是 任务栏 没即时刷新到最下方  发表于 2021-1-7 18:21
单独的0101_Dev是开发版本,不到0101就发了,测试没有问题的话0101的W2一起。如果有小改动W2.20210101带的应该最新。  发表于 2021-1-7 17:48
按理说,应该一样。或者W2的更新些才对。我搞错版本了?调整分辨率应该都正常才对。  发表于 2021-1-7 17:46
回复

使用道具 举报

发表于 2021-1-7 17:44:11 | 显示全部楼层
赞一个!
回复

使用道具 举报

发表于 2021-1-10 16:35:00 | 显示全部楼层

谢谢楼主的分享
回复

使用道具 举报

发表于 2021-1-17 19:13:41 | 显示全部楼层
我问下要初始化网络是不是还要执行过wpeinit.exe

点评

wpeinit.exe会识别硬件,安装网卡驱动。  发表于 2021-1-17 19:19
回复

使用道具 举报

发表于 2021-2-2 12:04:29 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表于 2021-2-3 10:15:04 | 显示全部楼层
有没有完整的源代码

点评

开始菜单可以用Classic Shell,源码GitHub/PExplorer  发表于 2021-2-3 12:18
回复

使用道具 举报

发表于 2021-2-3 10:15:58 | 显示全部楼层
或者把开始菜单调整一下
回复

使用道具 举报

发表于 2021-2-3 12:54:28 | 显示全部楼层
但是Classicshell只有win7风格的菜单
回复

使用道具 举报

发表于 2021-2-3 12:55:01 | 显示全部楼层
pe中还有很多程序运行不了如visual studio
回复

使用道具 举报

发表于 2021-2-3 13:54:35 | 显示全部楼层
VisualStudio如何在pe中运行
回复

使用道具 举报

发表于 2021-2-16 23:09:02 | 显示全部楼层
具体怎么使用呢?比如我想用winxshell调整屏幕分辨率,桌面右键菜单调出调节界面,怎么操作呢?

点评

方法1 接管系统本身菜单: 1.导入系统本身的右键桌面菜单的注册表。(如果没有 显示设置) 2. 启动WinXShell.exe -daemon 方法2 直接调用: WinXShell.exe ms-settings:display  详情 回复 发表于 2021-2-17 11:39
回复

使用道具 举报

发表于 2021-2-17 11:01:54 | 显示全部楼层
楼主能否发一个针对小白的winxshell使用说明?

点评

我下次更新的时候,里面的UI_Test.bat和Lua_Test.bat写详细些。 #786 楼你可以看看。  详情 回复 发表于 2021-2-17 11:44
回复

使用道具 举报

 楼主| 发表于 2021-2-17 11:39:57 | 显示全部楼层
本帖最后由 slore 于 2021-2-17 11:42 编辑
yxc51 发表于 2021-2-16 23:09
具体怎么使用呢?比如我想用winxshell调整屏幕分辨率,桌面右键菜单调出调节界面,怎么操作呢?

方法1 接管系统本身菜单:
1.导入系统本身的右键桌面菜单的注册表。(如果没有  显示设置)

2.   启动WinXShell.exe -daemon

方法2 直接调用:
WinXShell.exe ms-settings:display
可以做成快捷方式,也可以做成热键命令,可以任意注册表菜单调用。
回复

使用道具 举报

 楼主| 发表于 2021-2-17 11:44:43 | 显示全部楼层
本帖最后由 slore 于 2021-4-29 00:47 编辑
yxc51 发表于 2021-2-17 11:01
楼主能否发一个针对小白的winxshell使用说明?

我下次更新的时候,里面的UI_Test.bat和Lua_Test.bat写详细些。

#786 楼你可以看看。

RC4.4  (2020-10-10)
改善: lua_helper扩展。将winapi和lua扩展库编译到应用程序本身。
     减小程序体积,简化结构,仅应用程序就可支持运行lua代码。

强化: UI组件。
  UI_WIFI          支持连接隐藏网络
  UI_WIFI          支持多无线网卡进行网络连接
  UI_Calendar   支持显示农历信息
  UI_Settings    支持修改显示DPI

RC4.5  (2021-04-04)
新增: 任务栏窗口预览功能(thumbnail)。
改进: lua接口
  可使用Desktop对象,可通过此对象更改壁纸,实时改变桌面图标大小,
  布局等表示样式,可直接刷新桌面。
改进: UI组件
  UI_Settings   支持设置屏幕亮度
  UI_SystemInfo 支持读取OEM信息
  UI_SystemInfo 修复无法正确显示机器名的问题
  UI_SystemInfo 调整界面字体,布局等细节
  UI_WIFI       可直接输入回车键进行连接
  UI_WIFI      【网络和Internet 设置】可打开【网络连接】页面(更改适配器选项)
  UI_WIFI       修复启动窗口闪烁问题
  UI_WIFI       修复在外壳启动前运行时,弹出连接窗口会覆盖任务栏的问题
  UI_WIFI       WIFI列表按照信号强度显示

将支持的Lua函数和对象信息书写LUA_TEST.bat测试脚本(UTF8编码,中文说明)。



RC4.4 (2020-10-10)
Improved: the lua_helper extension.
    Compile winapi.dll and lua extension helpers into the application itself.
    Reduce the size of the program, simplify the structure, can support running Lua code with the single application file only.
Improved: UI components.
    UI_WIFI        supports connection to hidden network
                        supports multiple wireless network adapters for network connection
    UI_Calendar  supports lunar calendar for Chinese OS
    UI_Settings   supports DPI display setting

RC4.5 (2021-04-04)
Added: task thumbnail feature.
Improved: the lua interface.
    Add the Desktop object, through which you can change the wallpaper, change the size of the desktop icons, the layout and other presentation styles in real time,
    and refresh the desktop directly.
Improved: UI components
     UI_Settings    supports screen brightness setting
     UI_SystemInfo  supports reading OEM information
     UI_SystemInfo  fix the issue that the computer name cannot be displayed correctly
     UI_SystemInfo  adjust interface font, layout and other details
     UI_WIFI        add the enter key to connect
     UI_WIFI        [network and Internet settings] link will open [Network connection] control panel window(change adapter options)
     UI_WIFI        fix the flickering problem of the startup window
     UI_WIFI        fix the problem that the connection window will cover the taskbar when the this is running before the shell starts.
     UI_WIFI        show wifi ssid list by signal strength

Write the supported Lua functions and objects into the LUA_TEST.bat test script (UTF-8 encoding, in Chinese).


回复

使用道具 举报

发表于 2021-2-18 08:35:11 | 显示全部楼层
支持!
回复

使用道具 举报

发表于 2021-3-2 20:18:42 | 显示全部楼层
一直没找到PE10能用的桌面!谢谢楼主分享
回复

使用道具 举报

发表于 2021-3-7 10:13:08 来自手机 | 显示全部楼层
请教slore大神,如果c盘程序文件夹下面有个bootice.exe,怎么在进桌pe面之前就用语句设置好给这个bootice.exe发送一个快捷方式到pe系统的桌面上去?

点评

WinXShell.lua 中使用link命令直接用lua创建快捷方式, function onfirstrun() ... link([[X:%users\Default\Desktop\BOOTICE.lnk]], [[C:\bootice.exe]]) end 或者, 改成用exec('pecmd.exe load X:\  详情 回复 发表于 2021-3-7 14:03
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 12:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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