无忧启动论坛

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

[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]

    [复制链接]
1291#
发表于 2008-2-12 22:22:55 | 只看该作者
回复

使用道具 举报

1292#
发表于 2008-2-13 11:40:38 | 只看该作者
又更新了!!!!!!!
回复

使用道具 举报

1293#
 楼主| 发表于 2008-2-13 12:40:36 | 只看该作者
V1.08.02.12F版更新:
1、WimTool.EXE 支持设置真彩色图标;
2、WimShExt.DLL 除支持个性化图标外,还支持注册表中默认图标;
  先个性化图标,若没有设置先个性化图标,再设置注册表中默认图标
3、去掉了 WimShExt.DLL 中的资源图标,WimShExt.DLL 由21K精简到18K;
4、附件中附有DLL的注册方法和两个带有图标的小工具(示例);
回复

使用道具 举报

1294#
发表于 2008-2-13 12:46:21 | 只看该作者
反馈一点问题

使用最新版WIMTOOL
点击这个浏览会被无故踢出来
就在直接退出程序
并不是每次都会
偶尔会偶尔不会

使用的是深度XP5.9

发个图更清楚一点

www.JPG (61.27 KB, 下载次数: 211)

www.JPG
回复

使用道具 举报

1295#
发表于 2008-2-13 12:46:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1296#
 楼主| 发表于 2008-2-13 12:49:58 | 只看该作者
原帖由 nn2nn 于 2008-2-13 12:46 PM 发表
3、去掉了 WimShExt.DLL 中的资源图标,WimShExt.DLL 由21K精简到18K;

这个好。


有空你做一个专门的工具,将ICON写入WIM的XMLINFO内,或者可以在你原来的工具中加多一个选项,选择不同的方式写入WIM的ICON。
一种是你原来的方式,写到WIM后面;二是写在XML内。
回复

使用道具 举报

1297#
发表于 2008-2-13 12:53:12 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1298#
发表于 2008-2-13 12:54:50 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1299#
 楼主| 发表于 2008-2-13 12:57:10 | 只看该作者
在XML内不能以RES方式写入,XML内只能是字符串数据,所以要将ICON数据转成BASE64编码,以BASE64编码形式写入,WimShExt.DLL内置了BASE64解码功能。BASE64编码的Delphi函数本人已发在论坛中。

[ 本帖最后由 lxl1638 于 2008-2-13 12:58 PM 编辑 ]
回复

使用道具 举报

1300#
发表于 2008-2-13 12:59:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

使用道具 举报

1302#
 楼主| 发表于 2008-2-13 13:03:16 | 只看该作者
原帖由 nn2nn 于 2008-2-13 12:59 PM 发表
这知道,你要将ICON数据转成BASE64编码,还是将RES数据转成BASE64编码?

ICON数据。

{var IconStream: TmemoryStream;}
IconStream := TmemoryStream.Create;
WriteIcon(IconStream, MyIcon{HICON}, false);
Nodes[RootID].WriteWideString('ICON', WideString(BinToBase64(IconStream.Memory, IconStream.Size)));
IconStream.Free;

红色是你提供的。
回复

使用道具 举报

1303#
发表于 2008-2-13 13:09:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1304#
 楼主| 发表于 2008-2-13 13:12:22 | 只看该作者

  1. const
  2. //BASE64码元表
  3. BaseTable: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

  4. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  5. //BASE64编码函数
  6. function BinToBase64(const PDat: PBYTE; const DatLen: DWORD): string;
  7. var s, s1: string;
  8.   i, p, len, n, Addnum: DWORD;
  9.   PBin: PBYTE;
  10. begin
  11.   result := '';
  12.   S := '';
  13.   addnum := 0;
  14.   PBin := PDat;
  15.   for i := 1 to DatLen do
  16.   begin
  17.     S := S + IntToHex(PBin^, 2);
  18.     PBin := PBYTE(DWORD(PDat) + i);
  19.   end;
  20.   case (length(s) mod 3) of
  21.     0: addnum := 0;
  22.     1: begin
  23.         s := s + '00';
  24.         addnum := 2;
  25.       end;
  26.     2: begin
  27.         s := s + '0';
  28.         addnum := 1;
  29.       end;
  30.   end;
  31.   len := length(s) div 3;
  32.   for i := 1 to len do
  33.   begin
  34.     s1 := midstr(S, i * 3 - 2, 3);
  35.     p := strtoint('$' + s1);
  36.     n := p div 64;
  37.     result := result + basetable[n + 1];
  38.     n := p mod 64;
  39.     result := result + basetable[n + 1];
  40.   end;
  41.   if addnum = 1 then result := result + '==';
  42.   if addnum = 2 then result[length(result)] := '=';
  43. end;
  44. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////


  45. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  46. //BASE64编码函数
  47. function StrtoBase64(const test: string): string;
  48. var s, s1: string;
  49.   i, p, len, n, Addnum: DWORD;
  50. begin
  51.   result := '';
  52.   S := '';
  53.   addnum := 0;
  54.   for i := 1 to length(test) do
  55.     S := S + IntToHex(Ord(test[i]), 2);
  56.   case (length(s) mod 3) of
  57.     0: addnum := 0;
  58.     1: begin
  59.         s := s + '00';
  60.         addnum := 2;
  61.       end;
  62.     2: begin
  63.         s := s + '0';
  64.         addnum := 1;
  65.       end;
  66.   end;
  67.   len := length(s) div 3;
  68.   for i := 1 to len do
  69.   begin
  70.     s1 := midstr(S, i * 3 - 2, 3);
  71.     p := strtoint('$' + s1);
  72.     n := p div 64;
  73.     result := result + basetable[n + 1];
  74.     n := p mod 64;
  75.     result := result + basetable[n + 1];
  76.   end;
  77.   if addnum = 1 then result := result + '==';
  78.   if addnum = 2 then result[length(result)] := '=';
  79. end;
  80. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////


  81. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  82. //BASE64解码函数
  83. function Base64toStr(const test: string): string;
  84. var s, s1, m: string;
  85.   i, len, t: DWORD;
  86. begin
  87.   Result := '';
  88.   if length(test) = 0 then exit;
  89.   s := test;
  90.   for i := 0 to 1 do
  91.     if s[length(s)] = '=' then setlength(s, length(s) - 1);
  92.   len := length(s) div 2;
  93.   for i := 1 to len do
  94.   begin
  95.     s1 := midstr(s, i * 2 - 1, 2);
  96.     t := (Pos(s1[1], BaseTable) - 1) * 64 + (Pos(s1[2], BaseTable) - 1);
  97.     m := m + inttohex(t, 3)
  98.   end;
  99.   if length(s) mod 2 = 1 then
  100.   begin
  101.     t := (Pos(s[length(s)], BaseTable) - 1) * 64;
  102.     m := m + inttohex(t, 3);
  103.     setlength(m, length(m) - 2);
  104.   end;
  105.   len := length(m) div 2;
  106.   for i := 1 to len do
  107.   begin
  108.     s := midstr(m, i * 2 - 1, 2);
  109.     result := result + chr(strtoint('$' + s));
  110.   end;
  111. end;
  112. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
复制代码

[ 本帖最后由 lxl1638 于 2008-2-13 01:17 PM 编辑 ]
回复

使用道具 举报

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

使用道具 举报

1306#
发表于 2008-2-13 13:23:35 | 只看该作者
老九你太牛X了,顶死你
回复

使用道具 举报

1307#
 楼主| 发表于 2008-2-13 13:25:54 | 只看该作者
原帖由 nn2nn 于 2008-2-13 01:21 PM 发表
Base64ToBin我要的是这个。

是BinToBase64
回复

使用道具 举报

1308#
发表于 2008-2-13 13:29:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1309#
发表于 2008-2-13 13:32:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1310#
 楼主| 发表于 2008-2-13 13:32:56 | 只看该作者
原帖由 nn2nn 于 2008-2-13 01:21 PM 发表
Base64ToBin我要的是这个。

因为SETICO有查看结果的功能,看看是否写入正确。
所以要解码。

可以用本人做的一个小工具LookWimIcon看看写入的图标。
附上LookWimIcon源码(VC++),去掉RAR改扩展名,因为是WIM
解码函数本人没有写出Delphi的,只写出VC++的(在LookWimIcon.CPP内),你可以看明白。

[ 本帖最后由 lxl1638 于 2008-2-13 01:34 PM 编辑 ]

LookWimIcon.WIM.RAR

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

回复

使用道具 举报

1311#
 楼主| 发表于 2008-2-13 13:37:09 | 只看该作者
啊,function Base64toStr(const test: string): string稍改一下就可以是Base64toBin了。
回复

使用道具 举报

1312#
发表于 2008-2-13 13:49:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1313#
发表于 2008-2-13 14:44:05 | 只看该作者
V1.08.02.12版更新:
1、制作了一个用于WIM个性化图标的DLL,内含一个默认图标共21K;
2、增加了设置WIM个性化图标的功能,本人这个DLL是解释XML内BASE64编码的图标;
3、这仅仅是个试验,还有不少要完善的地方,如WimTool还需完成真彩色图标的提取功能;
4、内附有两个带有图标的WIM、两个小工具及DLL的使用方法;

++++++++++++似乎并不十分期待的功能呆
回复

使用道具 举报

1314#
发表于 2008-2-13 14:55:09 | 只看该作者
下载了,谢谢!这里的高手真多,我们用户有福了.
回复

使用道具 举报

1315#
发表于 2008-2-13 16:27:49 | 只看该作者
什么时候更新成6001就好了
回复

使用道具 举报

1316#
发表于 2008-2-13 17:23:01 | 只看该作者
原帖由 stwcb2007 于 2008-2-13 12:46 PM 发表
反馈一点问题

使用最新版WIMTOOL
点击这个浏览会被无故踢出来
就在直接退出程序
并不是每次都会
偶尔会偶尔不会

使用的是深度XP5.9

发个图更清楚一点

我试用最新版时也发生这种情况,有时在[新制和追加]中点击[浏览]也会被踢出来。希望老九老师有空再看看问题出在哪?
回复

使用道具 举报

1317#
发表于 2008-2-13 20:01:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1318#
发表于 2008-2-13 20:33:34 | 只看该作者
。。。。看不懂~~~要学的东西太多了我。。哎
回复

使用道具 举报

1319#
发表于 2008-2-13 20:58:52 | 只看该作者
又有更新了,下载测试下先
回复

使用道具 举报

1320#
发表于 2008-2-13 21:19:14 | 只看该作者
哇哈哈哈哈哈哈哈,更新了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-22 07:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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