无忧启动论坛

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

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

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

点评

我没处理,在正常系统下,explorer打开的窗口的同样有问题。感觉桌面存在,应该实现一个通知的服务,让其他shell窗口刷新。PE我使用打开文件对话框做文件管理器,同样有问题,但是不启动桌面就行,跟踪了下,如果Get  详情 回复 发表于 2017-8-30 20:12
回复

使用道具 举报

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

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

使用道具 举报

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

点评

winfile我看过下,编译不过,可能要比较高版本的vs。感觉这个代码是很老的东西,怀疑和nt5有差别,所以懒得弄了。你有没有试过编译来玩玩,里面代码有什么可以取的。  详情 回复 发表于 2018-9-19 19:59
微软开源了NT4的文件管理器,https://github.com/Microsoft/winfile  发表于 2018-4-11 20:02
回复

使用道具 举报

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

点评

ros-explorer直接编译确实没有背景,这个是我第一个修改的问题。 没查为什么不能,自己直接刷的,纯色全屏还好,要是图像的话, 坐标计算我是胡蒙的,反正最后对了-。- 如果要处理,拉伸,平铺,居中的现实  详情 回复 发表于 2017-9-14 09:25
回复

使用道具 举报

35#
发表于 2017-9-14 17:50:23 | 显示全部楼层
slore 发表于 2017-9-14 09:25
ros-explorer直接编译确实没有背景,这个是我第一个修改的问题。
没查为什么不能,自己直接刷的,纯色全 ...

我从外国网站查,其回答是,xp会处理这个函数,但是win7并上并没有处理,需要自己画。看来你这样做是正确的。
回复

使用道具 举报

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

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

使用道具 举报

37#
发表于 2018-9-19 21:36:20 | 显示全部楼层
slore 发表于 2018-8-7 21:21
1.不要explorer,访问控制面板

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

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

使用道具 举报

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

使用道具 举报

39#
发表于 2018-9-19 23:34:43 | 显示全部楼层
slore 发表于 2018-9-19 22:18
默认是VS2017的工程。

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

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

使用道具 举报

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

也就是说还是不完美?
回复

使用道具 举报

41#
发表于 2018-9-20 14:51:35 | 显示全部楼层
pe直接shell启动是否可以,也就是跳过pecmd一类的工具,因为感觉透过那些工具启动太过啰嗦了,不如直接启动。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

44#
发表于 2018-9-21 01:16:39 | 显示全部楼层
slore 发表于 2018-9-21 00:14
NOTIFYICONDATA结构体中:
    union {
        UINT  uTimeout;

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

使用道具 举报

45#
发表于 2018-9-21 02:24:09 | 显示全部楼层
四海皆狂龙 发表于 2018-9-21 01:16
就一个超时参数而已,都搞那么复杂,真是太佩服微软。

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 07:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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