无忧启动论坛

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

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

    [复制链接]
31#
 楼主| 发表于 2016-5-6 23:38:26 | 显示全部楼层
RC2.0 更新,剩下开始菜单和文件管理器。。。
回复

使用道具 举报

32#
 楼主| 发表于 2016-5-7 23:10:29 | 显示全部楼层
xintiandi 发表于 2016-5-7 23:01
好东西测试了一下,wes7,默认精简了很多组件,结束explorer后,在运行pexlorer,有时会卡住,又是有正常, ...

目前主要完善,桌面,任务栏。

开始菜单,文件管理器还没开始着手改善,因为这部分可以用第3方程序代替。

你看下配置,可以改成explorer++,TC等。
回复

使用道具 举报

33#
 楼主| 发表于 2016-5-7 23:13:15 | 显示全部楼层
ljycslg 发表于 2016-5-7 20:01
PE里可以用leakdiag诊断,发现调用SHBindToFolderIDListParentEx函数泄漏比较多,这个有没有问题?

好的我试试。你看到的是再底层函数了,PExlorer的调用点没有,我看下DEBUG版。
很郁闷的是,在我的WIN10系统调试模式,内存一直不高。
回复

使用道具 举报

34#
 楼主| 发表于 2016-5-8 09:50:27 | 显示全部楼层
slore 发表于 2016-5-7 23:13
好的我试试。你看到的是再底层函数了,PExlorer的调用点没有,我看下DEBUG版。
很郁闷的是,在我的WIN10 ...

有可能,循环判断快速启动栏是否有文件变动,用了SHELL接口,如果真是这里问题,
打算用 ChangeNotfiy和桌面,有变动了,自动感应,不用自己算文件数了。

我晚上屏蔽掉QL,跑下试试。

现在打算把内置的 文件管理器删掉,太多无用功能,减少程序大小。
直接调用  文件打开对话框,系统的,右键,导航,复制黏贴啥都齐全,
主要是稳定。

这样做的话,还有几个地方要解决:
  • 修改窗口式样,使其可以最小化(默认无法最小化)
  • 文件夹变换的时候 标题 动态变更(默认一直是 "打开")
  • 打开窗口的位置中间(默认上次关闭的位置不在屏幕中间)
  • 删除下方无用 文件名文本框,OK,取消按钮
  • 修改右键菜单默认选项为"打开"(默认为“选中”)

回复

使用道具 举报

35#
 楼主| 发表于 2016-5-11 22:29:21 | 显示全部楼层
xintiandi 发表于 2016-5-9 16:08
桌面的话是可以加载出来,但是桌面的图标有时可以点击,有时点击不了,任务栏也是这样,不知道是不是虚拟 ...

试下RC2.2版本吧,用打开文件对话框代替 文件管理器 功能,稳定性应该强些。
可以复制下多文件看看。

控制面板依然无法打开,利用搜索功能可以显示全部控制面板对象,
结果字体文件也全部列出来了,
没有文件夹概念,结果内容特别多,所以就先禁掉了。
回复

使用道具 举报

36#
 楼主| 发表于 2016-5-11 22:31:54 | 显示全部楼层
ljycslg 发表于 2016-5-7 20:01
PE里可以用leakdiag诊断,发现调用SHBindToFolderIDListParentEx函数泄漏比较多,这个有没有问题?

leakdiag在PE下测试debug版一直没有log生成。
顺着beta版没问题,测试确实是快速启动栏刷新有泄漏,不是
自己申请的空间,所以VS2015调试器捕捉不到,是COM接口对象
没有自动释放。

RC2.2版本修复了。
回复

使用道具 举报

37#
 楼主| 发表于 2016-5-11 22:36:14 | 显示全部楼层
xintiandi 发表于 2016-5-9 16:08
桌面的话是可以加载出来,但是桌面的图标有时可以点击,有时点击不了,任务栏也是这样,不知道是不是虚拟 ...

控制面板暂时做些 control命令或者 cpl 文件的快捷方式试试。
回复

使用道具 举报

38#
 楼主| 发表于 2016-5-12 13:13:24 | 显示全部楼层
ljycslg 发表于 2016-5-12 12:16
能否把任务栏的资源管理器改成开始菜单那个能自动刷新的

可以,区别就是一个是新起进程,一个是同进程的窗口。
不过我打算直接函数钩子,让打开对话框的的获取桌面句柄一返回false.这样所有打开对话框都能刷新了。简单的方法是直接修改系统dll,但是版本不同更新麻烦,打算试试软件动态修改。
回复

使用道具 举报

39#
 楼主| 发表于 2016-5-12 13:13:35 | 显示全部楼层
ljycslg 发表于 2016-5-12 12:16
能否把任务栏的资源管理器改成开始菜单那个能自动刷新的

可以,区别就是一个是新起进程,一个是同进程的窗口。
不过我打算直接函数钩子,让打开对话框的的获取桌面句柄一返回false.这样所有打开对话框都能刷新了。简单的方法是直接修改系统dll,但是版本不同更新麻烦,打算试试软件动态修改。
回复

使用道具 举报

40#
 楼主| 发表于 2016-5-12 13:27:24 | 显示全部楼层
xintiandi 发表于 2016-5-12 11:21
测试发现几个问题
1、见截图,程序里面全是英文,不知道是否可以改成中文。
2、截图中,左下角的关闭按 ...

开始菜单准备自己重新做,或者修改第三方的程序让其可以工作。这个工具主要是给PE用的,正常系统只是测试用的。方便的话提供下所用的精简WSE7系统能否提供下,我测试下,英文和关机按钮以及登录问题。

问题2是系统限制,打开对话框本来不能最小化的,我强改窗口风格的。但是除了全部最小化按钮意外,任务栏上的对应任务窗口点击下可以最小化的。

关机问题,可以加-winpe参数启动,然后配置文件里面把,关机,重启命令改为shutdown -s -t 0和shutdown -r -t 0
回复

使用道具 举报

41#
 楼主| 发表于 2016-5-12 13:27:36 | 显示全部楼层
xintiandi 发表于 2016-5-12 11:21
测试发现几个问题
1、见截图,程序里面全是英文,不知道是否可以改成中文。
2、截图中,左下角的关闭按 ...

开始菜单准备自己重新做,或者修改第三方的程序让其可以工作。这个工具主要是给PE用的,正常系统只是测试用的。方便的话提供下所用的精简WSE7系统能否提供下,我测试下,英文和关机按钮以及登录问题。

问题2是系统限制,打开对话框本来不能最小化的,我强改窗口风格的。但是除了全部最小化按钮意外,任务栏上的对应任务窗口点击下可以最小化的。

关机问题,可以加-winpe参数启动,然后配置文件里面把,关机,重启命令改为shutdown -s -t 0和shutdown -r -t 0
回复

使用道具 举报

42#
 楼主| 发表于 2016-5-12 22:16:28 | 显示全部楼层
xintiandi 发表于 2016-5-12 19:42
测试一下开始菜单,
1、点击开始菜单中的资源管理器,发现和explorer打开不一样。看截图,explorer中有控 ...

开始菜单不用试,ROS Explorer版本遗留下来一直没有修改。

目前的文件管理器其实就是你打开notpead点打开,弹出的 打开对话框界面,
这里不能选择控制面板的。用这个代替的优点是“稳定”。当然也有很多缺点,我在首页有提到的。

WES7系统没怎么接触,你说的些东西不太懂,正在下载,看了下是英文+语言包形式的所以可能
工具菜单是英文的缘故。

你可以看到控制面板界面?那你直接运行“control”是否可以打开这个界面,如果可以的话,在
快速启动栏做一个control.exe的快捷方式好了。

登陆问题,下载了包里面有些代码,但是怎么用还不清楚。。。

至于你说的热键呼出维护,你可以试试在Windows目录下创建一个PExlorer.exe的快捷方式,
然后绑定热键。WES7下可以用否我得装了测试下,正常系统下是可以这么搞的。
回复

使用道具 举报

43#
 楼主| 发表于 2016-5-14 10:28:42 | 显示全部楼层
解决使用文件打开对话框作为文件管理器时,新建文件夹,复制删除等操作不会及时刷新问题
原理,方法如下:

comdlg32.dll!CFileOpenSave::Show(struct HWND__ *)
  shell32.dll!SHChangeNotifyRegisterThread()
    shell32.dll!_SCNGetWindow()
      shell32.dll!_SCNGetWindow()
        shell32.dll!_GetDesktop(void) <- 获取桌面窗口,存在就将变化通知事件发送到桌面窗口处理
        ..
        shell32.dll!SCNInitialize()   <- 桌面窗口如果不存在,程序自己进行变化通知ChangeNotify事件处理

所以处理方法,让_GetDesktop()获取桌面窗口后,让程序认为不存在桌面窗口。
把je跳转语句(74)改为jmp常跳转指令(EB)。

_SCNGetWindow
00007FFF7E053608
...
00007FFF7E053643  e8 xx xx xx xx call        _GetDesktop (07FFF7DFBD95Ch)
00007FFF7E053648  48 85 c0       test        rax,rax
00007FFF7E05364B  74             je         _SCNGetWindow+6Ch (07FFF7E053674h)
                  74->EB ---> je->jmp


修改方法:
1.用UE或者Hex打开shell32.dll,搜索定位码
2(x64).找到定位码之后,看后面大概是 3f e8 xx xx xx xx xx 48 85 c0 74 <- 这个74就是关键跳转
2(x86).找到定位码之后,看后面大概是 38 e8 xx xx 00 00 85 c0 74       <- 这个74就是关键跳转
★应该只匹配1处,有多处的话,请告诉我版本号。
3.修改74为EB后,替换内核shell32.dll,则打开对话框将自动更新。

PExlorer.exe(RC2.3)是内存修改,只对PExlorer.exe的进程有效,好处是不改内核,
通过配置文件修改指定关键跳转地址即可。启动的notpead.exe等程序的打开无效。
如果直接更新内核shell32.dll,所有打开对话框都会自动更新。


  1. "::文件管理器":
  2.   {
  3.     "注释":"默认为false,自己手动刷新影响也不大,需要的人自己确定关键地址后设置为true",
  4.     "shell32_hacker":false,
  5.     "shell32x64_hacker_addr":"0xC8017",
  6.     "shell32x86_hacker_addr":"0x19BA5F"
  7.   }
复制代码


0xC8017 为Win10版本(x64 shell32.dll 10.0.10586.0)的关键跳转地址
0x19BA5F 为Win10版本(x86 shell32.dll 10.0.10586.0)的关键跳转地址
shell32.dll的版本不一样的话,偏移值可能不同,请修改配置文件。

关键跳转地址搜索例:
_SCNGetWindow
shell32.dll(x64)
文件偏移地址
              48 8b 00 48 83 c4 20 5b c3 83 fb 01 74 <- x64 定位码
0xF2A40       01 74 3f e8 14 a3 f6 ff 48 85 c0 74 27 48 8d 15
                                                                         0xF2A4B

__SCNGetWindow@4:
shell32.dll(x86)
文件偏移地址
             8b 00 5e 8b e5 5d c3 83 fe 01 74 <- x86 定位码
0x19AB00     e5 5d c3 83 fe 01 74 38 e8 0a 02 00 00 85 c0 74
                                                                                             0x19AB0F
回复

使用道具 举报

44#
 楼主| 发表于 2016-5-14 10:40:20 | 显示全部楼层
xintiandi 发表于 2016-5-13 20:35
经过反复测试,登录只和wes7开启了custom shell有关,正常系统不会有这个问题。

网上找了下,WES7没有个没shell的做好的小点的系统来测试。这部分还不太清楚。
感觉是custom shell检测到别的Shell存在,自己就登出了,然后重新登陆使用新shell。

你附件custom shell里面很多,你用的是那种?我可以先看看代码。
回复

使用道具 举报

45#
 楼主| 发表于 2016-5-14 11:32:46 | 显示全部楼层
ljycslg 发表于 2016-5-14 11:12
文件刷新是可以了,驱动盘还没有自刷新,比如挂载一个光驱盘符

这个手动刷新下算了。要处理也不是不能,麻烦了点。这个操作相对于文件来说不常做。
先这样了,这个周末休息下哈。

下面的小问题先攒下吧。
气泡从Em拿来改,能出来是体力活。
网页视频全屏,启动个现成判断当前最上层窗口大小是否和屏幕一样,一样就隐藏就可以实现了。
回复

使用道具 举报

46#
 楼主| 发表于 2016-5-20 00:43:00 | 显示全部楼层
可以使用自定义开始菜单 ClassicShell
首页为最新版4.2.5的测试截图,有点大3MB的DLL+1MB多的皮肤,ClassicShell1.0版本看了下300KB,基本的程序目录,控制面板和关机按钮,不过没有搜索,对Win10还需要改下5,6行代码才可以用。
回复

使用道具 举报

47#
 楼主| 发表于 2016-7-1 09:43:23 | 显示全部楼层
本帖最后由 slore 于 2017-4-3 01:28 编辑
ljycslg 发表于 2016-6-30 23:13
pexlorer桌面打开的进程环境变量不全,少了一些,进程要是用到环境变量就蒙了
TLB开始菜单打开的进程就正 ...


你是改名叫wallpaperhost的,winpeshl.exe第一个启动的程序,你后面的*Desktop之类由PECMD创建的环境变量自然无法利用,要用PECMD的变量,改下名,放到TLB启动之前应该就可以了。

=========2016/12/17============
处理环境变量广播通知,并增加2个调用接口
  • 在桌面启动时触发onStartUp接口调用
  • 环境变量变更时触发onEnvChanged接口调用

showflags(0-隐藏调用,1-正常显示,默认值为:1)和parameters参数可省略。
  "JS_DESKTOP":
  {
    "bkcolor":[0,122,204],
    "onStartUp": {
         "command": "app.exe",
         "showflags":1,
         "parameters":""
    },
    "onEnvChanged": {
         "command": "app.exe",
         "showflags":1,
         "parameters":""
    }
  }


=========2016/12/19============
处理环境变量广播通知,PE下ClassicShell的开始菜单1分钟后才响应的问题修正
ClassicShell不设置替换开始按钮的话,无法响应鼠标左右键点击,所以请使用3态开始按钮图标,
PExlorer的开始图标可配置为空,可根据自己选择的开始按钮图标设置右侧余白大小(下例的图标是40x120像素的,所以不需要设置偏移量,ClassicShell的标准贝壳图标的话,设置8像素会好看些)

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






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

=========2017/04/03============
右键支持%v参数,cmd,powershell不需要hook菜单了
支持自制“新建”二级菜单(只处理 WinXShell 项目)

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=386879

以后不需要的话,设置一个空定义。
  1.   "JS_DESKTOP":
  2.   {
  3.      ...
  4.      "cascademenu":{
  5.          "WinXNew":""
  6.      },
  7.      ...
  8.   }
复制代码


PExlorer_x64.zip

576.04 KB, 下载次数: 2, 下载积分: 无忧币 -2

WinXNew

PExlorer_x86.zip

502.07 KB, 下载次数: 1, 下载积分: 无忧币 -2

WinXNew

回复

使用道具 举报

48#
 楼主| 发表于 2016-7-1 10:00:42 | 显示全部楼层
四海皆狂龙 发表于 2016-6-29 17:31
我最近也研究了下,发现w7下托盘的部分程序的弹窗定位偏差大,但是xp却是正常的,结果我又试了下楼主的桌面 ...

你的程序是不是老程序啊。托盘点击就是把消息回调给原程序,本身没做什么事情。可能WIN7之后,再消息的高位保存了什么信息,你的程序没有正确取出低位的信息啥的吧。

这个是程序的问题,你试试改变程序兼容性。
回复

使用道具 举报

49#
 楼主| 发表于 2016-7-31 23:42:04 | 显示全部楼层
本帖最后由 slore 于 2016-12-16 22:55 编辑
ljycslg 发表于 2016-7-31 23:15
PExlorer的文件资源管理器任务栏图标由未知程序改为PExlorer的图标

任务栏图标能不能改为资源里的首个图 ...


图标我倒是可以改,或者PExlorer.jcfg里面设置个参数。
你为什么要删除第一个图标?那我把第一个图标也用资源管理器的是不是也可以?

============2016/8/1==============================
默认图标使用“系统资源管理器”而非“我的电脑” 版本
*最新版已更新图标,请下载最新版

PExlorer_x64.zip

574.27 KB, 下载次数: 5, 下载积分: 无忧币 -2

ICON

PExlorer_x86.zip

500.8 KB, 下载次数: 4, 下载积分: 无忧币 -2

ICON

回复

使用道具 举报

50#
 楼主| 发表于 2016-8-9 08:20:30 来自手机 | 显示全部楼层
四海皆狂龙 发表于 2016-8-9 01:36
我想把ros explorer的文件管理器给单独弄出来,但是我发现它启动时间有点长,结果发现它枚举目录用了比较长 ...

控制面板打算参照ros explorer的直接shell对象枚举,但是文件管理器我没用。我是用系统的文件打开对话框模拟的,速度,稳定性没的说,还有便利的导航。小细节不足目前有3点,1:没有状态栏,目录信息,文件大小啥的要属性去看,2:右键默认第一个菜单是‘’选定‘’,3:多选文件按回车,我没循环打开,用的不多,我只处理第一个。
回复

使用道具 举报

51#
 楼主| 发表于 2016-8-9 08:36:24 来自手机 | 显示全部楼层
四海皆狂龙 发表于 2016-8-9 01:36
我想把ros explorer的文件管理器给单独弄出来,但是我发现它启动时间有点长,结果发现它枚举目录用了比较长 ...

漏了一个缺点,用新版文件打开对话框内核要补几个系统文件。不过补充了,任务管理器,运行的浏览按钮也能用,要个稳定的文件管理器还是值得的。文件管理器这块,没有exploer++做的好。

点评

我觉得explorer++不是太好,没有qdir好,。不过我目前只是要个简单的文件管理器,可能不需要非常强大的。  详情 回复 发表于 2016-8-9 08:50
回复

使用道具 举报

52#
 楼主| 发表于 2016-8-9 08:41:39 来自手机 | 显示全部楼层
Mouri_Naruto 发表于 2016-8-9 05:03
楼主的这个项目貌似就是基于ROS Explorer的

但上次用了新版,觉得还很流畅的

谢谢支持,个人也是用cmd的多。少用shell。2004年如果就有人开始这个项目就好了,有段无shell时期。现在各版本都能加出原生shell了,就是费点时间,还有些小限制罢了,3方shell的使用对象很少。本来就是当学习用,发帖做做记录。

点评

我倒是觉得原生shell是不适合pe使用的,因为原生shell的特性修改依赖系统内部存储,所以修改那些特性都要用很复杂的方法,比如修改注册表,给注册表拍照等等,登陆时候又恢复进去,或者再次固化到wim,是非常不合理  详情 回复 发表于 2016-8-9 09:01
回复

使用道具 举报

53#
 楼主| 发表于 2016-8-13 17:17:24 | 显示全部楼层
四海皆狂龙 发表于 2016-8-13 17:04
终于还是扣出来了,只有一个列表视图,不过发现zip右键上下文菜单弹不出来,原版就有这毛病。控制面板另 ...

我调用系统的菜单好着呢。ZIP的工具x64,x86版本不对?
ros的本身控制面板枚举出来了啊。command和属性都可以看到的。

点评

下载你最新的测试,原来你调用了系统的文件管理器打开,而不是另外做一个。  详情 回复 发表于 2016-8-13 18:15
文件视图右键上下文菜单,zip类型文件,弹不出来,后来我试了下原版,也试了下你较早改的,也弹不出来,感觉比较奇怪。  详情 回复 发表于 2016-8-13 17:38
回复

使用道具 举报

54#
 楼主| 发表于 2016-8-13 17:36:04 | 显示全部楼层
wimboot 发表于 2016-8-12 07:31
原生资源管理器 习惯是一方面 还有就是功能完善 虽然制作起来麻烦 别人研究难度也大 付出总会有回报的

对于有PE制作经验,自己一直积累了需要添加的文件,注册表时,自己花时间做原生explorer没问题,自己整理几个月或几年的制作经验,现在论坛又缺乏分享经验,其他人无法复制。做这个shell是让PE制作0基础的人可以快速有个shell来用,在这个shell的基础操作文件制作原生explorer也好,集中精力去处理自己添加应用,驱动或者别的方面,半天能做个自己想带软件的PE还比较容易的。如果要原生shell,没点时间估计不行。而且单纯堆文件补注册表,总是有限的,比如显示桌面,刷新任务栏,分辨率变化,开始菜单还要加个刷新shell的命令,添加了还是有些不完善不顺习惯的地方,
有些东西还是得靠能反汇编知道原理的人来,论坛我比较佩服yamingw。 win7的主题,win10的wow64等,如果没有像他这样的人推动下,1年或者更久PE都很难进展。

我不反对使用原生explorer,制作者只要能有投入时间精力和技术就行,此shell为了初学者或没有时间处理微软的注册表和个中依赖的PE制作者,快速制作自己PE时可以使用。至少这个shell没什么依赖从WIN7到WIN10最新版,只要微软发布版本,几分钟就可以使用最新内核版本相同的PE。(shell毕竟不算核心功能,有些人cmd下用着也很方便,体积也小不少。)

点评

我认为应该推广第三方shell,而不是微软的。弄个桌面,定义些东西,还要修改注册表,对照注册表,然后重新打包pe,开机又重新导入,即使是老手也会感觉这方法异常繁琐,不科学。而对于非老手,那就更无从下手了。微  详情 回复 发表于 2016-8-13 18:34
大神们付出了很多 我支持你上面说的  详情 回复 发表于 2016-8-13 17:47
回复

使用道具 举报

55#
 楼主| 发表于 2016-9-11 20:40:59 | 显示全部楼层
nbyhc 发表于 2016-9-11 10:01
楼主:
你这个可以直接用在boot的pe卷吗?需要补Explorer及其支持文件吗?
需要完整的software注册表吗?

pe卷可以使用,任务栏桌面及开始菜单什么文件注册表都不用补。
利用打开对话框当文件管理器需要补充个别文件。
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

58#
 楼主| 发表于 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无关。
回复

使用道具 举报

59#
 楼主| 发表于 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)
回复

使用道具 举报

60#
 楼主| 发表于 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处理热键。
        }
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-4 12:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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