Jump to content

Embed icon in compiled EXE


Recommended Posts

I've seen a few posts about embedding EXE and BMP files into AutoIT scripts but I want to embed the icon file I am using for command buttons into the EXE so that I do not need to have the ICO files on the machine.

My script, once compiled, will contain everything it needs so if I move it to a different folder where the ICO files aren't located, they still show up in my GUI screen.

Any suggestions/help?

Link to comment
Share on other sites

Take a look http://www.autoitscript.com/forum/index.ph...%20hex&st=0

Quote:

Glad you liked it, i convert the picture data to binary code using a hex editor and than i call this line

CODEFileWrite(@TempDir & "\chip.jpg", Binary($pic))

to create the picture. Take a look in the beginning of the script at local $pic. I'm declaring the binary code there, it may look a little complicated but it's simillair to FileInstall. Check the help file for more info.

as for the first problem i have spended only 10 minutes to convert and create the script since i'm not a Dll guru so errors might occur.

Convert picture:

$file = FileOpenDialog('Open the image file', @ScriptDir, 'image (*.jpg;*.bmp;*gif;*.png)', 1)
$file2 = FileSaveDialog('Save the file', @ScriptDir, 'script (*.au3)')
_CheckExt($file2, 'au3')
$var = InputBox('Name variable', 'Prompt the name variable used', '$pic')
_CheckCapital($var, '$')
$hfile = FileOpen($file, 16)
$hfile2 = FileOpen($file2, 2)
FileWrite($hfile2, $var&'="0x"' & @CRLF)
While 1
    
    $data = FileRead($hfile, 30)
    If @error Then ExitLoop
    FileWrite($hfile2, $var&'&="' & StringTrimLeft($data,2) & '"' & @CRLF)
WEnd
MsgBox(0, 'Done!!', 'Done by Fabry!!!')
Func _CheckExt(ByRef $s_file, $s_ext)
    If StringRight($s_file, StringLen($s_ext)) <> $s_ext Then $s_file &= '.' & $s_ext
EndFunc   ;==>_CheckExt
Func _CheckCapital(ByRef $s_file, $s_cap)
    If StringLeft($s_file, StringLen($s_cap)) <> $s_cap Then $s_file = $s_cap & $s_file
EndFunc   ;==>_CheckExt
Link to comment
Share on other sites

I don't want to create a picture, I simply want to embed the icon within my compiled exe.

Currently, I'm just using

$play = GUICtrlCreateButton( "Play", 1, 1, 48, 48, $BS_BITMAP)

GUICtrlSetImage($play, "play.bmp", 0)

but if "play.bmp" doesn't exist, the icon on the button is empty. I want to be able to reference that image no matter where I am, and I do not want to have extra files that are associated with the application. I can have only the EXE and nothing else.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...