xianhou 发表于 2010-10-11 20:30:57

如何把Icon集成到Exe里面?[已解决]

本帖最后由 xianhou 于 2010-10-11 22:33 编辑

GUICtrlCreateIcon("test.ico", -1, 5, 130)

如果 au3 文件中使用了 test.ico 图标文件,如何把 icon 集成到编译出来的 exe 文件里,使得 test.exe 可以脱离 test.ico 文件,在没有 test.ico 的情况下也能正常显示 icon 控件?

guland 发表于 2010-10-11 20:44:18

回复 1# xianhou


    FileInstall ( "源文件", "目标路径" [, 标志] )

xianhou 发表于 2010-10-11 20:59:11

回复 2# guland

如果
FileInstall("test.ico", ".")
那么
运行 exe 文件后,会在当前目录下自动生成 test.ico 文件,这个不希望的。

#AutoIt3Wrapper_Icon=application.ico
$main_icon = "application.ico"
$main_gui = GUICreate("test", 350, 165, -1, -1)
GUISetIcon($main_icon)

这个写法可以让编译出来的 exe 文件脱离 application.ico 文件,正常显示 exe 图标和 gui icon 控件。

guland 发表于 2010-10-11 21:03:56

回复 3# xianhou #AutoIt3Wrapper_Icon=application.ico
$main_gui = GUICreate("test", 350, 165, -1, -1)
FileInstall("application.ico",@TempDir&"\application.ico")
GUISetIcon("application.ico")
FileDelete(@TempDir&"\application.ico")

xianhou 发表于 2010-10-11 21:09:51

回复 4# guland

如果
#AutoIt3Wrapper_Res_Icon_Add=application.ico

那么,用 ResHacker 可以看到
在编译出来的 exe 文件里包含有 application.ico 这个图标,但是
GUICtrlCreateIcon("application.ico", -1, 5, 130)
不能正常显示。

why?

afan 发表于 2010-10-11 21:15:22

Res 了肯定不是原文件名了… 你可以试试 GUICtrlCreateIcon(@AutoItExe, ...)

guland 发表于 2010-10-11 21:18:53

回复 5# xianhou


    GUICtrlCreateIcon("application.ico", -1, 5, 130)

你得加个路径,而且AU3这方面支持一直不怎么好,
"res://" & @AutoItExe &
或者你可以用UDF,"resources.au3"

afan 发表于 2010-10-11 21:42:29

If Not @compiled Then Msgbox(48, '', '确定图标路径,编译后再看')
#AutoIt3Wrapper_Res_Icon_Add=application.ico
GUICreate('窗口')
GUICtrlCreateIcon(@AutoItExe, -5, 180, 150)
GUISetState()
While GUIGetMsg() <> -3
WEnd

xianhou 发表于 2010-10-11 22:25:31

回复 8# afan

Good.
It's OK.

原来是         GUICtrlCreateIcon(@AutoItExe, -5, 5, 130)

一直写成         GUICtrlCreateIcon(@AutoItExe, 5, 5, 130)所以显示不出来

liufenglg 发表于 2010-10-12 10:19:04

GUICreate('窗口')
GUICtrlCreateIcon('logo.ico', -5, 180, 150)
GUISetState()
While GUIGetMsg() <> -3
WEnd

lxz 发表于 2010-10-12 11:30:24

FileInstall
页: [1]
查看完整版本: 如何把Icon集成到Exe里面?[已解决]