无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: lxl1638
打印 上一主题 下一主题

[2024年11月10日更新]WimTool -- Wim文件的图形视窗处理工具[无忧首发]

    [复制链接]
1561#
发表于 2008-3-9 21:57:12 | 只看该作者
原帖由 nn2nn 于 2008-3-8 11:41 PM 发表

用XP,LZ可能又要辛苦了。

你可以试下WIMNT,关联WIM文件后,打开个性图标并注通用个性图标。
你再为一个WIM文件定制个性图标。

通用个性图标与WIMTOOL的不是同一套的。
如果两套个性图标都有问题,大 ...

谢谢!我试试看看。
回复

使用道具 举报

1562#
 楼主| 发表于 2008-3-9 23:56:00 | 只看该作者
原帖由 nn2nn 于 2008-3-9 07:19 PM 发表
有进步,但回车也是按键。
更喜欢在WIMTOOL(GUI界面)注册。

GUI界面注册直观,有可选项。
命令行注册方便,方便的PE中注册,把命令行注册加入到PE的INI文件,让PE在启动过程中自动注册;
WimHook.DLL集成两样外壳扩展(图标扩展和执行扩展),可用PECMD或WinCMD分别注册:
STDAPI RegisterDll(BOOL bIcon, BOOL bHook); //注册函数
STDAPI UnRegisterDll(BOOL bIcon, BOOL bHook); //反注册函数

注册
//注册图标扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#1,#0
//注册执行扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#0,#1
//注册图标扩展和执行扩展
WinCMD.EXE CALL $WimHook.DLL,RegisterDll,#1,#1

卸载
//卸载图标扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#1,#0
//卸载执行扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#0,#1
//卸载图标扩展和执行扩展
WinCMD.EXE CALL $WimHook.DLL,UnRegisterDll,#1,#1
回复

使用道具 举报

1563#
发表于 2008-3-12 13:48:19 | 只看该作者
请教:菜单可不可以分成多列,单列太长了

Snap1.jpg (80.53 KB, 下载次数: 236)

Snap1.jpg
回复

使用道具 举报

1564#
发表于 2008-3-12 19:15:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1565#
发表于 2008-3-12 19:58:55 | 只看该作者
几天不见,发现又强大了许多....
有点跟不上了,呵呵.
回复

使用道具 举报

1566#
发表于 2008-3-12 20:00:45 | 只看该作者

回复 #1571 chenall 的帖子

现在年纪大了,跑不动咯~~@.@~~
回复

使用道具 举报

1567#
发表于 2008-3-12 22:47:14 | 只看该作者
楼主能否共享一下WIMHOOK的代码,让我等VC菜鸟也学习学习,
回复

使用道具 举报

1568#
 楼主| 发表于 2008-3-12 23:11:28 | 只看该作者
原帖由 chenall 于 2008-3-12 10:47 PM 发表
楼主能否共享一下WIMHOOK的代码,让我等VC菜鸟也学习学习,


本人的 WimHook.DLL 是 VS2005 写的,你的 VC6 无法用(COM和类的定义都不同)。
这样吧,给你一份 VC6 能用的源码,是微软某某技术员写的 IShellExecuteHook 示例源码。
你就拿这个改,世界就是改来的。^_^

KBLaunch_demo.zip

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

回复

使用道具 举报

1569#
发表于 2008-3-12 23:28:11 | 只看该作者
原帖由 lxl1638 于 2008-3-12 23:11 发表


本人的 WimHook.DLL 是 VS2005 写的,你的 VC6 无法用(COM和类的定义都不同)。
这样吧,给你一份 VC6 能用的源码,是微软某某技术员写的 IShellExecuteHook 示例源码。
你就拿这个改,世界就是改来的。^_^


VC6和VS2005的COM和类的定义不同,之前我就想改成用VS2005来编译那个ICONSHEX,
上网查了N多资料都没有找到解决办法,好像VS2003的可以。

VS2003的2003系统下又不让我装,所以就装了个VC6和VS2005。

呵呵,想把你的那个WIMHOOK代码搞来,修改下,看能不能按照我的想法实现一些功能。

先看下IShellExecuteHook代码,从头开始弄我不会,只懂得改一下,嘿嘿

世界就是改来的。正点.....
回复

使用道具 举报

1570#
 楼主| 发表于 2008-3-13 20:30:06 | 只看该作者
原帖由 chenall 于 2008-3-12 11:28 PM 发表


VC6和VS2005的COM和类的定义不同,之前我就想改成用VS2005来编译那个ICONSHEX,
上网查了N多资料都没有找到解决办法,好像VS2003的可以。

VS2003的2003系统下又不让我装,所以就装了个VC6和VS2005。

...


老弟,有些东西搞起来不容易啊,你准备好没?

1、要加入 IShellExecuteHook ,必须 nn2nn 配合,通过 WIMNT 向 WIM 写入信息,
    你和 nn2nn 必须制定一套标准,WIMNT 向 WIM 的 XMLINFO 内写信息,你的 DLL
    读取这些信息,而在没有 XML 组件或类支持下,用 VC++ 读取WIM 的 XMLIFNO
    代码量很大。一旦加入微软的 XML 组件(另需 DLL 支持),DLL的体积和所占的内存
    也相当可怕。
2、这个 IShellExecuteHook COM 的 DLL 做起来不容易,虽然有微软的示例,但要在
    IShellExecuteHook 中开线程相当难处理,网上也有这方面的讨论,没有很好的解决
    方法,或者可以说几乎没有解决,正因如此,WimHook 也存在BUG。

或者你有什么建议,提出来,本人在 WimHook 里加入或完善。

[ 本帖最后由 lxl1638 于 2008-3-13 08:37 PM 编辑 ]
回复

使用道具 举报

1571#
发表于 2008-3-13 21:54:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1572#
发表于 2008-3-13 22:10:02 | 只看该作者
那我就提些意见,希望可以考虑下。

1.同时可以支持另外一种方案的图标显示。(原因各有所好...)

2 .处理WIM文件时,如果发现这个WIM文件不是WIMTOOL制作的(应该很好确定),
   就交给系统默认的程序来处理。

3.注册扩展时,不要直接使用固定的WIMTOOL的注册表键,可以从注册表中读取相应的键值。
从注册表读取以下键的默认值。然后根据这个值的指向来注册扩展
HKEY_CLASSES_ROOT\.wim
像装了WIMTOOL后。
这个值是Microsoft Windows Image
那注册扩展的位置就是
HKEY_CLASSES_ROOT\Microsoft Windows Image\
这样可以保证兼容。
  
如果以上都搞定了,就可以同时使用WIMTOOL(有右键扩展可以用直接调用)和WIMNT默认程序。

不知我的想法会不会太异想天开。呵呵。

忘了一点,不知目前的WIMHOOK支不支持参数传递。如果不支持还要加上参数传递。

[ 本帖最后由 chenall 于 2008-3-13 10:12 PM 编辑 ]
回复

使用道具 举报

1573#
 楼主| 发表于 2008-3-13 22:51:37 | 只看该作者
原帖由 nn2nn 于 2008-3-13 09:54 PM 发表
不一定要用IShellExecuteHook!
1、IShellExecuteHook的作用是感知WIM文件的打开,这个通过WIM文件关联就可以解决了。
2、IShellExecuteHook是DLL,有一个实例的特点,如遇到要“等待”启动文件执行结束,再卸 ...


第一次(不是测试的)放出的 WimHook 是与 WinCMD 合并的,你当时说有点不值,所以后来就分开了。
另有两方面原因不合并了:
1、WinCMD.EXE 可以扩充作为一个工具,相当于 DOS 下的 WBAT,如果合并就不能作为一个工具使用了,
      也打算在 WinCMD 中加入文本标签、文本编辑框(即你所说的 INPUT)。
2、现在已将"菜单扩展"、"图标扩展"、"执行扩展"三合为一,用回以前的文件名 "WimShExt.DLL",如果再
      与 WinCMD 合并,这个 DLL 的体积和所占内存就不理想了。现在三合一是23K左右。

另,EXE只要一个实例可以做到,但难度大(共享内存或消息投递可以完成),占内存也大(一个有消息循环的窗口耗内存有3M以上,如果用Delphi做,6M以上的内存是常有的事)

[ 本帖最后由 lxl1638 于 2008-3-13 10:54 PM 编辑 ]
回复

使用道具 举报

1574#
 楼主| 发表于 2008-3-13 23:45:38 | 只看该作者
原帖由 chenall 于 2008-3-13 10:10 PM 发表
那我就提些意见,希望可以考虑下。
1.同时可以支持另外一种方案的图标显示。(原因各有所好...)
2 .处理WIM文件时,如果发现这个WIM文件不是WIMTOOL制作的(应该很好确定),
   就交给系统默认的程序来处理。
3.注册扩展时,不要直接使用固定的WIMTOOL的注册表键,可以从注册表中读取相应的键值。
从注册表读取以下键的默认值。然后根据这个值的指向来注册扩展
HKEY_CLASSES_ROOT\.wim
像装了WIMTOOL后。
这个值是Microsoft Windows Image
那注册扩展的位置就是
HKEY_CLASSES_ROOT\Microsoft Windows Image\
这样可以保证兼容。
如果以上都搞定了,就可以同时使用WIMTOOL(有右键扩展可以用直接调用)和WIMNT默认程序。
不知我的想法会不会太异想天开。呵呵。
忘了一点,不知目前的WIMHOOK支不支持参数传递。如果不支持还要加上参数传递。

你看本人的 DLL 注册,只有默认的图标和右键菜单才关联到WimTool
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.WIM]
@="Microsoft Windows Imaging Format (WIM)"

[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)]

[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\DefaultIcon]
@="E:\\解压工具\\WimTool\\WimTool.EXE, 0"

;以下是菜单扩展
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\ShellEx\ContextMenuHandlers\WimTool]
@="{E54C78A6-CD12-4F6C-92DE-E31A38B328D5}"

;以下是图标扩展
[HKEY_CLASSES_ROOT\Microsoft Windows Imaging Format (WIM)\ShellEx\IconHandler]
@="{E28F71B4-F8DA-4D5C-88A3-1D8A131EB4CD}"


;以下是执行扩展
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks]
"{E28F71B4-F8DA-4D5C-88A3-1D8A131EB4CD}"="WimTool ShellExecuteHooks"


1、默认的图标是 WimTool.EXE,0 ,不管是如何注册总要有一个默认的图标;
2、右键菜单实际上是调用 WimTool 工作,所以注册到 WimTool;
3、图标扩展和执行扩展并没有注册到 WimTool,执行扩展 GUID 后的 "WimTool ShellExecuteHooks"
      是说明(描述),可以是任意字符,也可以是空。
与 WimTool 一同发放的 DLL 三种功能可以选择注册,如果不使用 WimTool 就不要注册
菜单扩展,因为菜单扩展是调用 WimTool 的,其余两种功能都可以离开 WimTool 使用,
执行扩展某些时候(调用 WinCMD 的 INI 配置文件)需 WinCMD.EXE 支持。

另,WimHook 支持传递参数,但由于是外壳扩展,须借壳运行,即不能在 CMD.EXE 窗口中直接
执行 WIM 文件,这是最大的不足。但也有很大的用途 ----- 同一个 WIM 文件,可以创建多个快捷
方式,可以做到每个快捷方式以不同的方式挂载、启动不同的程序、可设置是否自动卸载、可设置
卸载是否保存、可设置卸载后是否清除挂载目录等。

格式如下:
目标WIM  路径\命令,传给命令的参数  /WIM:1,1,0,1

"/WIM:"后面的 "1,1,0,1" 分别表示挂载方式(是否可写)、是否自动卸载、卸载是否保存、卸载后是否清除挂载目录
以下是实例:
D:\WIM应用示例\WimTool应用示例\WIM工具包.WIM "Autoruns-v9.01\AutoRuns.exe",afaae /WIM:1,1,0,1

这个实例将以设定的方式启动WIM内的Autoruns-v9.01\AutoRuns.exe,这个WIM内有多个工具,见图(这里的参数"afaae"无用的,
但如果是 CMD 批处理,这里的参数就有用了):

[ 本帖最后由 lxl1638 于 2008-3-14 12:20 AM 编辑 ]

未命名.PNG (23.09 KB, 下载次数: 190)

未命名.PNG
回复

使用道具 举报

1575#
发表于 2008-3-13 23:54:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1576#
 楼主| 发表于 2008-3-14 00:07:53 | 只看该作者
原帖由 nn2nn 于 2008-3-13 11:54 PM 发表
现在说的合并是并为EXE文件,不要IShellExecuteHook。
通过WinCMD.EXE来完成"执行扩展"。

如果要花3M以上的内存,就不必了,(没意义了)。
如果用COM+ 的服务形式,也可以传递参数,但已和DLL没有多大区别 ...


现在稳定性应无问题了 ----- 本人正在测试,所有的功能都正常,周未再给大家测试。

以前的确有问题,原因是在 IShellExecuteHook 内开线程非常困难,现在总算找到方法了。
回复

使用道具 举报

1577#
发表于 2008-3-15 11:42:36 | 只看该作者
歇口气,呵呵,0308F下载!!!
回复

使用道具 举报

1578#
 楼主| 发表于 2008-3-15 20:05:40 | 只看该作者
又到周未更新了,这个版本真正让WIM文件走向实用,还有一个功能强大的 WinCMD.EXE。
回复

使用道具 举报

1579#
发表于 2008-3-15 21:59:35 | 只看该作者
请教:背景可否用图片或指定颜色?谢谢!现在全是白板,太刺眼了,如图

Snap1.jpg (64.6 KB, 下载次数: 220)

Snap1.jpg
回复

使用道具 举报

1580#
发表于 2008-3-15 23:34:06 | 只看该作者
全部填进去了,感觉还好。谢谢了

Snap1.jpg (194.76 KB, 下载次数: 202)

Snap1.jpg
回复

使用道具 举报

1581#
发表于 2008-3-15 23:38:07 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1582#
发表于 2008-3-15 23:45:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1583#
发表于 2008-3-16 00:01:19 | 只看该作者
这次更新不错,文件少了,更简洁
回复

使用道具 举报

1584#
 楼主| 发表于 2008-3-16 00:05:21 | 只看该作者
原帖由 nn2nn 于 2008-3-15 11:45 PM 发表
看WinCMD功能演示,觉得WinCMD的“WIN”才有点贴题。

WinCMD现在功能更强大了,能解决很多CMD的老大难问题。
WinCMD再加上几个常用的组件。如选择框。
WinCMD的组件够自由了,就是排位比较难,希望很快就能 ...


会死人的,太难了,有空再算。
回复

使用道具 举报

1585#
发表于 2008-3-16 00:05:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1586#
发表于 2008-3-16 00:09:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1587#
发表于 2008-3-16 00:21:55 | 只看该作者
就是有这些强人在,我们菜乌有福了,
回复

使用道具 举报

1588#
发表于 2008-3-16 02:40:51 | 只看该作者
难道新的 Wincmd 不再支持运行参数了?
新版的怎么也注册不上鼠标右键,正常系统和PE里都注册不上(重启了N次系统了),另外,注册时重建图标缓存真的很糟,会搞乱桌面图标顺序的

[ 本帖最后由 玄天 于 2008-3-16 03:03 AM 编辑 ]
回复

使用道具 举报

1589#
发表于 2008-3-16 03:39:05 | 只看该作者
都是高手,新手看不懂的说。
回复

使用道具 举报

1590#
发表于 2008-3-16 07:45:47 | 只看该作者
支持更新,谢谢分享,辛苦了!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 14:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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