itljl 发表于 2010-6-8 18:34:11

请教图标是如何用AU3写入这个dat文件的

我能确认的是,这个文件保存的是图标,是用AU3将exe的图标提取并写入其中的。并且,还可以用AU3将这个文件内的图标提取出来显示在listview中。

但至今还没有高手公开这种方法,希望有朋友能提供一下思路,谢谢。


图标.dat

online041 发表于 2010-6-8 21:11:57

看你没人 帮你踩一下

online041 发表于 2010-6-8 21:12:27

提问都是10金币的真好赚

lynfr8 发表于 2010-6-8 22:58:11




FileOpen ( "文件名" [, 模式 ] )
16 = 强制使用二进制(字节)模式(参考注意)

itljl 发表于 2010-6-9 00:01:03

本帖最后由 itljl 于 2010-6-9 00:03 编辑

回复 4# lynfr8

谢谢兄弟你的回复,但我提供的文件里保存了多个ICO,并且可以读取多个ICO显示到LISTVIEW哦。你这个只能读写一个ICO文件啊。

有写入三个ICO文件到一个DAT文件,并可以读取到listview的例子吗?

lynfr8 发表于 2010-6-9 00:13:11

给个思路:
将ABC三个图标分别转成二进制用特定符号(比如“|”)连在一起写入dat
读的时候再用StringSplit 输出数组
将数组元素生成对应的A、B、C.ico
再读入listview

cheng4ever 发表于 2010-6-9 02:58:44

{:face (197):}这个好。。。

rikthhpgf2005 发表于 2010-6-9 09:01:45

{:face (382):}改了后缀!!!!!!!!!!

itljl 发表于 2010-6-9 10:17:37

回复 8# rikthhpgf2005


    是啊,这个方法相当于改了后缀。
而且关键是,将多个硬用二进制的方法写入dat,没有办法读出来显示在listview中。

panjh66 发表于 2010-6-9 10:39:16

谢谢兄弟你的回复,但我提供的文件里保存了

C.L 发表于 2010-6-9 12:19:33

看到楼主的这个应用,感觉有点意思,有个思路可以实现这个目的:
1、写入:读取要加入的图标文件的大小,生成dat文件的头部,头部信息可由图标文件数量、每个文件开始偏移量、文件字节数组成,然后用二进制方式逐个读取图标文件与文件头部合并写入dat中,生成dat文件。
2、提取:先读取dat文件头部,从头部得到图标文件数量、每个文件开始偏移量、文件字节数等数据,根据这些数据按偏移量和字符数提取图标并加入listview中显示。

注:所有的文件操作都要用二进制方式读写。

C.L 发表于 2010-6-9 12:45:13

上面说的好象有点抽象,不过我看了1楼的dat文件,估计也是用文件头部的方法来定义图标的位置,只是不是太看得清他的算法,没法得到偏移量,所以不知道怎么从这个文件里提取图标。

我正在按12#的思路在写,等会写好了,再贴出来,应该可以实现。

FBWOLF 发表于 2010-6-9 13:16:43

很好,继续讨论!

itljl 发表于 2010-6-9 13:58:30

回复 13# C.L


还有个问题就是 ,兄台这样的设想用函数 GUICtrlSetImage 是否能调用。
如果需要从dat将图标先生成为ico文件的话,就失去这贴讨论的意义了。

C.L 发表于 2010-6-9 14:04:12

完成!

运行结果如下图,分两部份,点击左边按钮会在同目录下自动用三个图标文件生成ico.dat文件,点击右边按钮会从ico.dat中提取这三个图标文件并显示在listview中

注:ico.dat的文件头部为64个字节,支持注入7个图标文件列表,每8个字节为一组,第一组为保存图标数量.



附件:(三个图标文件和一个AU3源码,无ico.dat,ico.dat由脚本生成,运行时要先生成dat文件,才能显示)

页: [1] 2 3
查看完整版本: 请教图标是如何用AU3写入这个dat文件的