Jump to content

MsgBox Indirect whit direct .ico file? And, best way to compile.


Recommended Posts

First, sorry for my ~terrible~ English.

The question.. It's possible write me an example to make one msgbox indirect (_WinAPI_MessageBoxIndirect, WinAPIEx) but not extrart the "personalized" icon on a file like .dll, but in direct file .ico.

I mean, it's possible utilize this fuction to make a msgbox whit "my" icon "extracted" direcly on a .ico file?

Second rapid question.. "FileInstall" it's the best way to put resoures in my script\software? Or is better put then a .dll file or write directly the file whit like binary language?

More one.. :) (Sorry). How make a image or anhoter "software" it binary language? I se that on 2 examples of WinAPIEx... On making a software simple whit a msgbox, and anoter "write" one image directly binary in the file... Examples please?

And sorry again for the... "language"... :S

Thank's in advance!

Link to comment
Share on other sites

Set "hInstance" member in $tagMSGBOXPARAMS structure to 0 and "Icon" member to the handle to the custom icon (HICON). HICON can be retrieve by using _WinAPI_ShellExtractIcon() function.

If the icon is placed to the resources of your programm, use the following (compile this script before running by pressing F7 in SciTE):

#AutoIt3Wrapper_Res_Icon_Add=MyIcon.ico ; ID of the icon resource starts with 201 (AutoIt 3.3.6.1)

#Include <Constants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global Const $MB_USERICON = 0x80

Global Const $sTitle = 'Message'
Global Const $sText = 'This is a simple message box with a custom icon.'

Global $tMBP = DllStructCreate($tagMSGBOXPARAMS)
Global $tTitle = DllStructCreate('wchar[' & (StringLen($sTitle) + 1) & ']')
Global $tText = DllStructCreate('wchar[' & (StringLen($sText) + 1) & ']')
Global $Result

DllStructSetData($tTitle, 1, $sTitle)
DllStructSetData($tText, 1, $sText)
DllStructSetData($tMBP, 'Size', DllStructGetSize($tMBP))
DllStructSetData($tMBP, 'hOwner', 0)
DllStructSetData($tMBP, 'hInstance', _WinAPI_GetModuleHandle(0))
DllStructSetData($tMBP, 'Text', DllStructGetPtr($tText))
DllStructSetData($tMBP, 'Caption', DllStructGetPtr($tTitle))
DllStructSetData($tMBP, 'Style', BitOR($MB_OKCANCEL, $MB_USERICON))
DllStructSetData($tMBP, 'Icon', 201)
DllStructSetData($tMBP, 'ContextHelpId', 0)
DllStructSetData($tMBP, 'MsgBoxCallback', 0)
DllStructSetData($tMBP, 'LanguageId', 0)

$Result = _WinAPI_MessageBoxIndirect($tMBP)

MsgBox(0, 'Result', 'Return: ' & $Result & @CR)
Edited by Yashied
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...