无忧启动论坛

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

WIM文件也可有个性图标 (2008.2.24更新)

[复制链接]
1#
发表于 2008-1-29 18:31:06 | 显示全部楼层
从哪读取图标?不会解压WIM中的一个图标文件。
回复

使用道具 举报

2#
发表于 2008-1-29 19:54:56 | 显示全部楼层
原帖由 nn2nn 于 2008-1-29 18:40 发表
#15.

从WIM文件的尾部。

这么说还得用专用程序写入?
回复

使用道具 举报

3#
发表于 2008-1-30 12:03:25 | 显示全部楼层
原帖由 nn2nn 于 2008-1-30 11:12 发表
*phiconLarge = (HICON) LoadImage ( _Module.GetResourceInstance(),
                                       MAKEINTRESOURCE(uIconID), IMAGE_ICON,
                                       32, 32, LR ...

exe,dll里的资源最容易得到HICON,不过最好还是把ICO文件加载到内存再转换成HICON
找到一个,不过要解压到临时文件夹。
m_hIcon = (HICON)LoadImage( NULL, "f:\\pictures\\8339.ico",
     IMAGE_ICON, 0, 0, LR_LOADFROMFILE );

[ 本帖最后由 123 于 2008-1-30 12:04 PM 编辑 ]
回复

使用道具 举报

4#
发表于 2008-1-30 15:43:21 | 显示全部楼层
从WIM后面读取图标可以用,但注册表不会弄,老是TXT文件在用这个DLL。

TxtFileIcons.rar

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

回复

使用道具 举报

5#
发表于 2008-1-30 16:18:56 | 显示全部楼层
原帖由 lxl1638 于 2008-1-30 15:59 发表
之前你使用了别人的工具,注册了相同的CLSID {DF4F5AE4-E795-4C12-BC26-7726C27F71AE}
系统中注册CLSID要小心,不能与别人使用的相同,要用CoCreateGuid创建。

没有CoCreateGuid

1.JPG (8.4 KB, 下载次数: 117)

1.JPG
回复

使用道具 举报

6#
发表于 2008-1-30 20:43:25 | 显示全部楼层
原帖由 nn2nn 于 2008-1-30 20:07 发表
typedef struct _WIMICO
{
        ULARGE_INTEGER OffsetToEnd;
        DWORD Length;
        DWORD Check;
}WIMICO,*PWIMICO;
#define ...

那是ico文件的长度
回复

使用道具 举报

7#
发表于 2008-1-31 11:55:13 | 显示全部楼层
原帖由 nn2nn 于 2008-1-30 20:50 发表
DWORD  Length;是ico文件的长度.

向前偏移 Length就是ico文件的开始地址(即文件长度-WIMICO长度-Length=ULARGE_INTEGER OffsetToEnd;)

ico文件未必一定在文件结尾,而且主要是为了以后扩展。
不过好像没有人会在WIM文件结尾加入大于4GB的东西,可以把ULARGE_INTEGER改成DWORD节省4字节。

[ 本帖最后由 123 于 2008-1-31 11:58 AM 编辑 ]
回复

使用道具 举报

8#
发表于 2008-1-31 13:22:46 | 显示全部楼层
原帖由 nn2nn 于 2008-1-31 12:36 发表

ico文件必需在文件结尾,否则,没办法找到WIMICO结构。
(可以在WIM头定位WIMICO结构的位置,但这个位置未找到,即使找到MS没用(备用)的空间,那就是对WIM的兼容性的挑战了。查找标记定位也不好,那要花时。)

我的意思是在文件尾加了ICO后还可以加其它东西,这样ICO就不是刚好在文件尾。像我以前搞的一个程序,在EXE文件尾加了另一个EXE,然后在这个EXE尾部还加了IP,密码等信息。
回复

使用道具 举报

9#
发表于 2008-1-31 16:34:45 | 显示全部楼层
原帖由 nn2nn 于 2008-1-31 16:13 发表
做好了DLL吗?(我还没装VC,不能编译)

放出来试试!

注册问题是小事,可手工注册。

TxtFileIcons.rar (11.98 KB, 下载次数: 151)
原帖由 nn2nn 于 2008-1-31 16:21 发表
DWORD OffsetToEnd;
从字面上看,是文件尾的偏移。
读完了WIMICO,文件指针是文件尾还是WIMICO的头?

应该是WIMICO后面,每次读前都设置一下就行了。
回复

使用道具 举报

10#
发表于 2008-1-31 21:56:03 | 显示全部楼层
原帖由 nn2nn 于 2008-1-31 21:53 发表
TO123:
我刚装了创天中文VC++,(很老的)。
为什么编译你发的源码不通过?
以下提示:是什么意思?
--------------------Configuration: TxtFileIcons - Win32 Unicode Release MinDependency----------- ...

把出错的地方删掉,可能我没注意
回复

使用道具 举报

11#
发表于 2008-2-10 13:37:40 | 显示全部楼层
原帖由 chenall 于 2008-2-10 11:50 发表
lstrcpyn会自动补\0
但是
TCHAR IconFile[MAX_PATH];
::ReadFile(hFile,IconFile,wimico.Length-1,&re,0);
读出来的数据没有\0.(用WINHEX中看到的是
读到的内容+(十六进制的CC CC CC ....)
若刚开始IconF ...

C里字符串都是以0结尾,如果不以0结尾会把字符串后的内存也读也来(显示为乱码)
回复

使用道具 举报

12#
发表于 2008-2-24 23:54:40 | 显示全部楼层
程序界面那个主题是怎么做的?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-15 01:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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