无忧启动论坛

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

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

    [复制链接]
发表于 2017-1-20 20:38:46 | 显示全部楼层
请问大侠,使用PExlorer怎样通过修改注册表控制桌面图标大小?
让PE每次启动时设定固定的桌面图标大小,无需用鼠标控制

使用的是版本是:
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
[发布] Win10 RedStone 14393 PE x86+x64 (12.19 更新) attach_img recommend heatlevel agree  ...23456..39       
ljycslg
2016-5-27

点评

不好意思,保存桌面图标,位置设定没有存储,每次都是默认设置显示的,现在在出差,过年后在配置文件我加个参数来设置好了。  详情 回复 发表于 2017-1-20 21:00
回复

使用道具 举报

 楼主| 发表于 2017-1-20 21:00:29 来自手机 | 显示全部楼层
shuren 发表于 2017-1-20 20:38
请问大侠,使用PExlorer怎样通过修改注册表控制桌面图标大小?
让PE每次启动时设定固定的桌面图标大小,无 ...

不好意思,保存桌面图标,位置设定没有存储,每次都是默认设置显示的,现在在出差,过年后在配置文件我加个参数来设置好了。

点评

感谢大侠及时回复,等候改进。新年愉快!  详情 回复 发表于 2017-1-20 22:29
回复

使用道具 举报

发表于 2017-1-20 22:29:40 | 显示全部楼层
slore 发表于 2017-1-20 21:00
不好意思,保存桌面图标,位置设定没有存储,每次都是默认设置显示的,现在在出差,过年后在配置文件我加 ...

感谢大侠及时回复,等候改进。新年愉快!

点评

有点晚了,赶在Creators Update更新,把程序更新了下。 你试试,是不是你想要的效果,如果不是另外还有2个隐藏配置viewmode,viewflags可以调节。  详情 回复 发表于 2017-4-9 11:01
回复

使用道具 举报

发表于 2017-3-4 21:19:20 | 显示全部楼层
感谢一直坚持pe开发一线的大神们,好多年不折腾了,更能感到这份坚持的不易
回复

使用道具 举报

发表于 2017-3-4 21:47:13 | 显示全部楼层
不错感谢分享!
回复

使用道具 举报

 楼主| 发表于 2017-4-9 11:01:12 | 显示全部楼层
shuren 发表于 2017-1-20 22:29
感谢大侠及时回复,等候改进。新年愉快!

有点晚了,赶在Creators Update更新,把程序更新了下。
你试试,是不是你想要的效果,如果不是另外还有2个隐藏配置viewmode,viewflags可以调节。

点评

多谢大侠更新,下载测试  详情 回复 发表于 2017-4-9 23:32
回复

使用道具 举报

发表于 2017-4-9 12:11:16 | 显示全部楼层
thank you
回复

使用道具 举报

发表于 2017-4-9 12:48:42 | 显示全部楼层
不错感谢分享!
回复

使用道具 举报

发表于 2017-4-9 13:05:32 | 显示全部楼层
再有xp版就全了                                                                                                                                                         。
回复

使用道具 举报

发表于 2017-4-9 15:14:21 | 显示全部楼层
不知道经过这几年的发展, 稳定性如何呢, 如果放到pe中推广, 会有卡死, 崩溃问题嘛

点评

2年了,但是也没一直开发。不过从第一版开始就没有卡死和崩溃过。(除了Win7 系统右键会卡住以外),不过没必要PE推广,如果已经添加好explorer的话。  发表于 2017-4-9 17:28
回复

使用道具 举报

发表于 2017-4-9 23:32:27 | 显示全部楼层
slore 发表于 2017-4-9 11:01
有点晚了,赶在Creators Update更新,把程序更新了下。
你试试,是不是你想要的效果,如果不是另外还有2 ...

多谢大侠更新,下载测试
回复

使用道具 举报

发表于 2017-5-30 15:31:52 | 显示全部楼层

点评

l大的PE出的早2,3星期,后来新建菜单有最终解决方案,l大的PE还是刚出来的临时方案,所以新建不能用。和这个shell无关。  详情 回复 发表于 2017-5-30 16:52
回复

使用道具 举报

 楼主| 发表于 2017-5-30 16:52:15 来自手机 | 显示全部楼层
tegl 发表于 2017-5-30 15:31
报告BUG,见此帖477楼
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=378234&extra=page%3D1&page=4 ...

l大的PE出的早2,3星期,后来新建菜单有最终解决方案,l大的PE还是刚出来的临时方案,所以新建不能用。和这个shell无关。

点评

能不能把l大的pe更新一下,修复“新建”,同时把WinXShell也更新一下,l大好久不来了。  详情 回复 发表于 2017-5-30 18:07
回复

使用道具 举报

发表于 2017-5-30 18:07:13 | 显示全部楼层
slore 发表于 2017-5-30 16:52
l大的PE出的早2,3星期,后来新建菜单有最终解决方案,l大的PE还是刚出来的临时方案,所以新建不能用。和 ...

能不能把l大的pe更新一下,修复“新建”,同时把WinXShell也更新一下,l大好久不来了。
回复

使用道具 举报

发表于 2017-8-21 08:32:37 | 显示全部楼层
我最近在完善我的文件管理器,但是发现一些快捷键例如delete和选择所有文件均无效(以及explorer select,x方法还没搞清楚如何模拟处理,因不知道如何选择文件),所以我试了下你的桌面,发现你处理了delete按键, 不知道楼主是在iShellView的什么地方处理的,以及选择文件是否有思路。

点评

哦,看了下我用的基本代码封装了个消息处理,确实自己处理了。 当接收到WM_KEYDOWN等消息是,pretranslate_msg,给各个窗口,看是否有热键响应。 if (hwnd) { int rc = TranslateAccelerat  详情 回复 发表于 2017-8-21 13:37
桌面热键的话,好像只有F5处理了。 直接可以delete吧,我回头再看看。 选中文件的话,获取父的文件夹FolderView对象,然后调用SelectItem方法就可以了。 HRESULT _stdcall IFolderView::SelectItem(int iItem  详情 回复 发表于 2017-8-21 13:12
回复

使用道具 举报

 楼主| 发表于 2017-8-21 13:12:37 | 显示全部楼层
四海皆狂龙 发表于 2017-8-21 08:32
我最近在完善我的文件管理器,但是发现一些快捷键例如delete和选择所有文件均无效(以及explorer select,x ...

桌面热键的话,好像只有F5处理了。
直接可以delete吧,我回头再看看。

选中文件的话,获取父的文件夹FolderView对象,然后调用SelectItem方法就可以了。

HRESULT _stdcall IFolderView::SelectItem(int iItem,  DWORD dwFlags)

点评

我对这个枚举还是不太理解,按说法BindToObject绑定到父pidl,而这里有两个IShellFolder,使用一个IShellFolder的EnumObjects进行枚举?搞不懂,怎么我枚举总是从桌面开始,然后就连接到当前目录去了。说实在的,我  详情 回复 发表于 2017-8-26 19:42
开始我也看到有个selectitem,但是当时不知道如何玩,你这么一说,我才想到pidl这东西(微软的pidl真够费解的),枚举每个子pidl可以选择所有组。  详情 回复 发表于 2017-8-26 08:57
回复

使用道具 举报

 楼主| 发表于 2017-8-21 13:37:09 | 显示全部楼层
四海皆狂龙 发表于 2017-8-21 08:32
我最近在完善我的文件管理器,但是发现一些快捷键例如delete和选择所有文件均无效(以及explorer select,x ...

哦,看了下我用的基本代码封装了个消息处理,确实自己处理了。

当接收到WM_KEYDOWN等消息是,pretranslate_msg,给各个窗口,看是否有热键响应。
        if (hwnd) {
            int rc = TranslateAccelerator(g_Globals._hwndShellView, _hAccel, lpmsg);
            if (rc != 0) return true;
            return _pShellView->TranslateAccelerator(lpmsg) == S_OK;   //没人处理的话,交给ShellView处理热键。
        }

点评

这个方法不错,快捷键问题解决,现在还差了文件选择定位问题。  详情 回复 发表于 2017-8-27 08:31
回复

使用道具 举报

发表于 2017-8-22 09:10:50 | 显示全部楼层
15063版本的PE 点最小化没有反应 不知道是不是个例

点评

文件管理器么?那确实是这样的。文件管理器是用“打开”对话框模拟的,这个对话框是模态的,不能最小化,最大化的。WIN10PE的话,关闭DWM就能点那些按钮了。 如果用第三方 explorer++.exe,xypolorer.exe的话就没  详情 回复 发表于 2017-8-22 19:25
回复

使用道具 举报

 楼主| 发表于 2017-8-22 19:23:44 | 显示全部楼层
本帖最后由 slore 于 2017-8-22 19:25 编辑

(delete)
回复

使用道具 举报

 楼主| 发表于 2017-8-22 19:25:24 | 显示全部楼层
whyme22 发表于 2017-8-22 09:10
15063版本的PE 点最小化没有反应 不知道是不是个例


文件管理器么?那确实是这样的。文件管理器是用“打开”对话框模拟的,这个对话框是模态的,不能最小化,最大化的。WIN10PE的话,关闭DWM就能点那些按钮了。
如果用第三方 explorer++.exe,xypolorer.exe的话就没问题。

这种情况可以在任务栏右键进行最小化。
回复

使用道具 举报

发表于 2017-8-26 08:57:27 来自手机 | 显示全部楼层
slore 发表于 2017-8-21 13:12
桌面热键的话,好像只有F5处理了。
直接可以delete吧,我回头再看看。


开始我也看到有个selectitem,但是当时不知道如何玩,你这么一说,我才想到pidl这东西(微软的pidl真够费解的),枚举每个子pidl可以选择所有组。
回复

使用道具 举报

发表于 2017-8-26 19:42:20 | 显示全部楼层
slore 发表于 2017-8-21 13:12
桌面热键的话,好像只有F5处理了。
直接可以delete吧,我回头再看看。

我对这个枚举还是不太理解,按说法BindToObject绑定到父pidl,而这里有两个IShellFolder,使用一个IShellFolder的EnumObjects进行枚举?搞不懂,怎么我枚举总是从桌面开始,然后就连接到当前目录去了。说实在的,我一直不理解微软这个设计的机制。
回复

使用道具 举报

发表于 2017-8-26 21:00:04 | 显示全部楼层
我发现一个问题,使用选择组后,并不能自动滚动到那个文件的位置,不知道它如何实现选择并滚动到具体位置的。
回复

使用道具 举报

发表于 2017-8-27 08:31:30 来自手机 | 显示全部楼层
slore 发表于 2017-8-21 13:37
哦,看了下我用的基本代码封装了个消息处理,确实自己处理了。

当接收到WM_KEYDOWN等消息是,pretrans ...

这个方法不错,快捷键问题解决,现在还差了文件选择定位问题。
回复

使用道具 举报

发表于 2017-8-30 13:41:30 | 显示全部楼层
我有一个新问题请教,把窗口设置为桌面的函数,我的目的是为了把窗口置于底层,使用SetShellWindow虽然可以达到目的,但是使用这个函数之后,默认的文件管理器将无法收到文件的更新消息(创建文件删除文件均不更新到文件管理视图,需要手动刷新),后来我测试ros-explorer,发现默认文件管理器可以,经过测试它是通过使用SetShellWindowEx和添加IServiceProvider IOleCommandTarget接口实现,但不知道其原理,但是第三方的Q-Dir和自己弄的文件管理器依旧无法接收到更新,而在win7系统所有文件管理器都无法接收到更新消息(explorer++除外,这个无论是否使用SetShellWindow都能接收到)。不知道你是如何处理这个桌面问题的。
回复

使用道具 举报

 楼主| 发表于 2017-8-30 20:12:57 来自手机 | 显示全部楼层
四海皆狂龙 发表于 2017-8-30 13:41
我有一个新问题请教,把窗口设置为桌面的函数,我的目的是为了把窗口置于底层,使用SetShellWindow虽然可以 ...

我没处理,在正常系统下,explorer打开的窗口的同样有问题。感觉桌面存在,应该实现一个通知的服务,让其他shell窗口刷新。PE我使用打开文件对话框做文件管理器,同样有问题,但是不启动桌面就行,跟踪了下,如果GetShellWindow没有返回桌面的话,就会自己处理刷新,所以我是用了API hook,我启动打开对话框程序,会认为没有桌面程序,所以可以刷新。但是,如果你用记事本,打开文件,弹出的对话框就同样问题,复制,改名不会刷新。
回复

使用道具 举报

发表于 2017-8-31 04:30:17 | 显示全部楼层
slore 发表于 2017-8-30 20:12
我没处理,在正常系统下,explorer打开的窗口的同样有问题。感觉桌面存在,应该实现一个通知的服务,让其 ...

这太坑了,弄个置底,微软都肋里藏。
回复

使用道具 举报

发表于 2017-9-2 07:31:00 | 显示全部楼层
比较下这两款文件管理器
Q-Dir明显是比较直接的使用默认的explorer接口,而Explorer++应该是自己处理了不少功能,所以即使SetShellWindow,也不会影响其工作正常。
Q-Dir很难碰到有bug,而Explorer++偶尔发现有奔溃。
Q-Dir没有源码可参考,而Explorer++代码量巨大,不容易剥离。
我感觉这些文件管理器都过于复杂繁琐,功能太多,外观也特别丑陋,甚至还不如微软默认的(微软默认的我都感觉有点繁琐)。
回复

使用道具 举报

发表于 2017-9-14 06:29:32 | 显示全部楼层
关于桌面背景问题,PaintDesktop函数在XP没有问题,但是win7该函数总是返回失败,无法把桌面背景画到上面,不知到是什么原因?
回复

使用道具 举报

 楼主| 发表于 2017-9-14 09:25:05 | 显示全部楼层
四海皆狂龙 发表于 2017-9-14 06:29
关于桌面背景问题,PaintDesktop函数在XP没有问题,但是win7该函数总是返回失败,无法把桌面背景画到上面, ...

ros-explorer直接编译确实没有背景,这个是我第一个修改的问题。
没查为什么不能,自己直接刷的,纯色全屏还好,要是图像的话,
坐标计算我是胡蒙的,反正最后对了-。-

  1. /* 加载图像为内存Brush */
  2. hbmp = SHLoadDIBitmap(image);
  3. _hbrWallp = CreatePatternBrush(hbmp);

  4. /* 填充DC */
  5. FillRect(hDC, _hbrWallp);
复制代码


如果要处理,拉伸,平铺,居中的现实模式的话,自己要用
SetBrushOrgEx处理下绘制的Brush区域。


回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 08:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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