Leaderboard
Popular Content
Showing content with the highest reputation on 01/18/2013 in all areas
-
GuiCtrlPicButton Simulate Reaction A simple example for simulate reaction of buttons created with GUICtrlCreatePic who by default don't react when are pressed or when mouse is over ( and also for avoid the use of big multi dimensional arrays as i already done by the past ) If you want to create your own buttons as those i have used in script try chimply.com website, it's free ! example 1 GuiCtrlPicButton_SimulateReaction+Files.au3 example 2 Digicode 1.0.0.1.au3 Buttons are included in script. Hope it can help !2 points
-
Hello, I just added a few scripts together to get a function for creating a resource dll. You can add icons und pictures to the library for now. I hope you like it. #include <WinAPIEx.au3> #include <Array.au3> #include <APIConstants.au3> #include <GDIPlus.au3> #include <Memory.au3> #include <StaticConstants.au3> Global $sDLL = @ScriptDir & "Resourcen.dll" Global $sTempFile, $aFiles[1] Global Const $tagICONDIRENTRY = "BYTE bWidth;BYTE bHeight;BYTE bColorCount;BYTE bReserved;WORD wPlanes;WORD wBitCount;DWORD dwBytesInRes;DWORD dwImageOffset" Global Const $tagGRPICONDIRENTRY = "BYTE bWidth;BYTE bHeight;BYTE bColorCount;BYTE bReserved;WORD wPlanes;WORD wBitCount;DWORD dwBytesInRes;WORD nID" Global Const $SS_REALSIZECONTROL = 0x40 While 1 $sTempFile = FileOpenDialog("Select resource files", @ScriptDir, "All files (*.*)|Icons (*.ico)|Bitmaps (*.bmp)", 3) If @error Then ExitLoop If $aFiles[0] = "" Then $aFiles[0] = $sTempFile Else _ArrayAdd($aFiles, $sTempFile) EndIf WEnd _CreateResourceDLL($sDLL, $aFiles) Global $aIcon = _ArrayFindAll($aFiles, ".ico", 0, 0, 0, 1, 0) Global $aBitmap = _ArrayFindAll($aFiles, ".bmp", 0, 0, 0, 1, 0) Global $aJpg = _ArrayFindAll($aFiles, ".jpg", 0, 0, 0, 1, 0) GUICreate("Resource DLL", 800, 800) If IsArray($aIcon) Then For $i = 0 To UBound($aIcon) - 1 GUICtrlCreateIcon($sDLL, $aFiles[$aIcon[$i]], 10, 10 + 40 * $i, 32, 32, $SS_SUNKEN) GUICtrlCreateLabel($aFiles[$aIcon[$i]], 50, 10 + 40 * $i, 120, 32, $SS_CENTERIMAGE) Next EndIf If IsArray($aBitmap) Then For $i = 0 To UBound($aBitmap) - 1 GUICtrlCreatePic("", 200, 30 + 120 * $i, 100, 100, BitOR($SS_REALSIZECONTROL, $SS_SUNKEN)) _SetImagefromResource(-1, $aFiles[$aBitmap[$i]], $sDLL, $RT_BITMAP) GUICtrlCreatePic("", 310, 30 + 120 * $i, 100, 100, BitOR($SS_CENTERIMAGE, $SS_SUNKEN)) _SetImagefromResource(-1, $aFiles[$aBitmap[$i]], $sDLL, $RT_BITMAP) GUICtrlCreateLabel($aFiles[$aBitmap[$i]], 200, 10 + 120 * $i, 120, 20, 0x200) Next EndIf If IsArray($aJpg) Then For $i = 0 To UBound($aJpg) - 1 GUICtrlCreatePic("", 440, 30 + 120 * $i, 100, 100, BitOR($SS_REALSIZECONTROL, $SS_SUNKEN)) _SetImagefromResource(-1, $aFiles[$aJpg[$i]], $sDLL, $RT_RCDATA) GUICtrlCreatePic("", 550, 30 + 120 * $i, 100, 100, BitOR($SS_CENTERIMAGE, $SS_SUNKEN)) _SetImagefromResource(-1, $aFiles[$aJpg[$i]], $sDLL, $RT_RCDATA) GUICtrlCreateLabel($aFiles[$aJpg[$i]], 440, 10 + 120 * $i, 120, 20, 0x200) Next EndIf GUISetState() Do Until GUIGetMsg() = -3 Func _CreateResourceDLL($sDLL, ByRef $aFiles) If Not IsArray($aFiles) Or $aFiles[0] = "" Then Return SetError(1, 0, 0) _CreateEmptyDLL($sDLL) Local $hUpdate = _WinAPI_BeginUpdateResource($sDLL, 0) If @error Then Return SetError(2, 0, 0) Local $hFile, $bFile, $lFile, $tFile, $pFile, $sName, $sExt, $RT_TYPE, $Resource_ID = 0 Local $tICONDIR, $tICONDIRENTRY, $tGRPICONDIR, $pGRPICONDIR Local $Temp Local $nSize For $i = 0 To UBound($aFiles) - 1 If Not FileExists($aFiles[$i]) Then SetError(3, 0, 0) $hFile = FileOpen($aFiles[$i], 0) $bFile = FileRead($hFile) FileClose($hFile) $lFile = FileGetSize($aFiles[$i]) $tFile = DllStructCreate("char[" & $lFile & "]") DllStructSetData($tFile, 1, $bFile) $pFile = DllStructGetPtr($tFile) $sName = StringUpper(StringTrimLeft($aFiles[$i], StringInStr($aFiles[$i], "", 0, -1))) $sExt = StringTrimLeft($aFiles[$i], StringInStr($aFiles[$i], ".", 0, -1)) $aFiles[$i] = $sName Switch $sExt Case "bmp" $RT_TYPE = $RT_BITMAP $lFile = $lFile - 14 $pFile = Ptr($pFile + 14) Case "ico" $RT_TYPE = $RT_ICON Local $tB_Input_Header = DllStructCreate("short res;short type;short ImageCount;char rest[" & $lFile - 5 & "]", $pFile) Local $pB_Input_Header = DllStructGetPtr($tB_Input_Header) Local $IconType = DllStructGetData($tB_Input_Header, "Type") Local $IconCount = DllStructGetData($tB_Input_Header, "ImageCount") Local $tB_IconGroupHeader = DllStructCreate("short Res;short Type;short ImageCount;char Rest[" & $IconCount * 14 & "]") Local $pB_IconGroupHeader = DllStructGetPtr($tB_IconGroupHeader) DllStructSetData($tB_IconGroupHeader, "Res", 0) DllStructSetData($tB_IconGroupHeader, "Type", $IconType) DllStructSetData($tB_IconGroupHeader, "ImageCount", $IconCount) For $X = 1 To $IconCount Local $pB_Input_IconHeader = DllStructGetPtr($tB_Input_Header, 4) + ($X - 1) * 16 Local $tB_Input_IconHeader = DllStructCreate($tagICONDIRENTRY, $pB_Input_IconHeader) Local $IconWidth = DllStructGetData($tB_Input_IconHeader, "bWidth") Local $IconHeigth = DllStructGetData($tB_Input_IconHeader, "bHeight") Local $IconColors = DllStructGetData($tB_Input_IconHeader, "bColorCount") Local $IconPlanes = DllStructGetData($tB_Input_IconHeader, "wPlanes") Local $IconBitPerPixel = DllStructGetData($tB_Input_IconHeader, "wBitCount") Local $IconImageSize = DllStructGetData($tB_Input_IconHeader, "dwBytesInRes") Local $IconImageOffset = DllStructGetData($tB_Input_IconHeader, "dwImageOffset") $pB_IconGroupHeader = DllStructGetPtr($tB_IconGroupHeader, 4) + ($X - 1) * 14 Local $tB_GroupIcon = DllStructCreate($tagGRPICONDIRENTRY, $pB_IconGroupHeader) DllStructSetData($tB_GroupIcon, "bWidth", $IconWidth) DllStructSetData($tB_GroupIcon, "bHeigth", $IconHeigth) DllStructSetData($tB_GroupIcon, "bColorCount", $IconColors) DllStructSetData($tB_GroupIcon, "bReserved", 0) DllStructSetData($tB_GroupIcon, "wPlanes", $IconPlanes) DllStructSetData($tB_GroupIcon, "wBitCount", $IconBitPerPixel) DllStructSetData($tB_GroupIcon, "dwBytesInRes", $IconImageSize) $Resource_ID += 1 DllStructSetData($tB_GroupIcon, "nID", $Resource_ID) Local $PB_IconData = DllStructGetPtr($tB_Input_Header) + $IconImageOffset _WinAPI_UpdateResource($hUpdate, $RT_TYPE, $Resource_ID, Int("0x" & @OSLang), $PB_IconData, $IconImageSize) Next $pB_IconGroupHeader = DllStructGetPtr($tB_IconGroupHeader) Case "jpg", "jpeg", "gif" $RT_TYPE = $RT_RCDATA ;~ Case "cur" ;~ $RT_TYPE = $RT_CURSOR ;~ Case "txt", "au3", "ini", "c", "cpp", "h" ;~ $RT_TYPE = $RT_STRING Case Else ContinueLoop EndSwitch If $RT_TYPE = $RT_ICON Then _WinAPI_UpdateResource($hUpdate, $RT_GROUP_ICON, $sName, Int("0x" & @OSLang), $pB_IconGroupHeader, DllStructGetSize($tB_IconGroupHeader)) Else $Resource_ID += 1 _WinAPI_UpdateResource($hUpdate, $RT_TYPE, $sName, Int("0x" & @OSLang), $pFile, $lFile) EndIf ;~ If @error Then SetError(4, $i, 0) $tFile = 0 Next _WinAPI_EndUpdateResource($hUpdate) If @error Then Return SetError(5, @extended) Return 1 EndFunc ;==>_CreateResourceDLL Func _CreateEmptyDLL($sFilePath) Local $bEmptyDll = _Empty_DLL() Local $hFile = FileOpen($sFilePath, 18) ;Binary mode + Write mode (Erase old content!) FileWrite($hFile, $bEmptyDll) FileClose($hFile) EndFunc ;==>_CreateEmptyDLL Func _Empty_DLL() Local $Empty_DLL $Empty_DLL &= 'TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEFAP6WNU0AAAAAAAAAAOAADiELAQIyAAQAAAAGAAAAAAAAABAAAAAQAAAAMAAAAAAAEAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAABgAAAABAAAAAAAAAMAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAAAwAAA8AAAAAFAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAC' $Empty_DLL &= 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUMAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5jb2RlAAAAYwAAAAAQAAAAAgAAAAQAAAAAAAAAAAAAAAAAACAAAGAudGV4dAAAABgAAAAAIAAAAAIAAAAGAAAAAAAAAAAAAAAAAAAgAABgLmRhdGEAAADMAAAAADAAAAACAAAACAAAAAAAAAAAAAAAAAAAQAAAwC5yZWxvYwAAIAAAAABAAAAAAgAAAAoAAAAAAAAAAAAAAAAAAEAAAEIucnNyYwAAABAAAAAAUAAAAAIAAAAMAAAAAAAAAAAAAAAAAABAAAB' $Empty_DLL &= StringRepeat("A", 598) & 'IN8JAgBdQ6LRCQEo8QwABDoIgAAAIN8JAgCdQCDfCQIAHUF6CkAAACDfCQIA3UAuAEAAADCDABoAAAAAGgAEAAAaAAAAADouw8AAKPAMAAQw+gMAAAA/zXAMAAQ6KsPAADDww' $Empty_DLL &= StringRepeat("A", 550) & '/yVUMAAQ/yVcMAAQ/yVgMAAQ/yVkMAAQ' $Empty_DLL &= StringRepeat("A", 651) $Empty_DLL &= '8MAAAAAAAAAAAAAB2MAAAVDAAAEQwAAAAAAAAAAAAALIwAABcMAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsMAAAAAAAAIIwAACQMAAAnjAAAAAAAABsMAAAAAAAAIIwAACQMAAAnjAAAAAAAACZAm1lbXNldAAATVNWQ1JULmRsbAAApAJIZWFwQ3JlYXRlAAClAkhlYXBEZXN0cm95APoBR2V0TW9kdWxlSGFuZGxlVwAAS0VSTkVMMzIuZGxs' $Empty_DLL &= StringRepeat("A", 431) & 'QAAAQAAAADDBMMFgwAAAAIAAAEAAAAAIwCDAOMBQw' $Empty_DLL &= StringRepeat("A", 645) & 'BSXNk0DAAc' $Empty_DLL &= StringRepeat("A", 668) & '=' Return Binary(_Base64Decode($Empty_DLL)) EndFunc ;==>_Empty_DLL Func _Base64Decode($input_string) Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode Func StringRepeat($sChar, $nCount) $tBuffer = DllStructCreate("char[" & $nCount + 1 & "]") DllCall("msvcrt.dll", "ptr:cdecl", "memset", "ptr", DllStructGetPtr($tBuffer), "int", Asc($sChar), "int", $nCount) Return DllStructGetData($tBuffer, 1) EndFunc ;==>StringRepeat Func _SetImagefromResource($CtrlID, $Resname, $Resfile = -1, $ResType = 10) ;Raupi ;Diese Funktion basiert auf der UDF von Zedna@Autitscript.com und Code von Progandy@AutoIt.de Local Const $IMAGE_BITMAP = 0 Local Const $STM_SETIMAGE = 0x0172 Local $hmod, $hwnd, $InfoBlock, $ResSize, $Mem, $pMem, $dll, $dll2, $hData, $pData, $pStream, $ret, $hBitmap, $pBitmap If $Resfile = -1 Then $hmod = _WinAPI_GetModuleHandle("") Else $hmod = _WinAPI_LoadLibrary($Resfile) EndIf If $ResType = $RT_BITMAP Then $hBitmap = _WinAPI_LoadImage($hmod, $Resname, $IMAGE_BITMAP, 0, 0, 0) If @error Then Return SetError(1, 0, 0) $hwnd = GUICtrlGetHandle($CtrlID) If $hwnd = 0 Then Return SetError(2, 0, 0) DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap) If @error Then Return SetError(3, 0, 0) Else $InfoBlock = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hmod, "str", $Resname, "long", $ResType) If @error Then Return SetError(4, 0, 0) $InfoBlock = $InfoBlock[0] If $InfoBlock = 0 Then Return SetError(5, 0, 0) $ResSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hmod, "int", $InfoBlock) If @error Then Return SetError(6, 0, 0) $ResSize = $ResSize[0] If $ResSize = 0 Then Return SetError(7, 0, 0) $Mem = DllCall("kernel32.dll", "int", "LoadResource", "int", $hmod, "int", $InfoBlock) If @error Then Return SetError(8, 0, 0) $Mem = $Mem[0] If $Mem = 0 Then Return SetError(9, 0, 0) $pMem = DllCall("kernel32.dll", "int", "LockResource", "int", $Mem) If @error Then Return SetError(8, 0, 0) $pMem = $pMem[0] If $pMem = 0 Then Return SetError(10, 0, 0) If $Resfile <> -1 Then DllCall("Kernel32.dll", "int", "FreeLibrary", "str", $hmod) $hData = _MemGlobalAlloc($ResSize, 2) $pData = _MemGlobalLock($hData) _MemMoveMemory($pMem, $pData, $ResSize) _MemGlobalUnlock($hData) $ret = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "int", $hData, "long", 1, "Int*", 0) $pStream = $ret[3] _GDIPlus_Startup() $pBitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromStream", "ptr", $pStream, "int*", 0) $pBitmap = $pBitmap[2] $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($pBitmap) $hwnd = GUICtrlGetHandle($CtrlID) If $hwnd = 0 Then Return SetError(11, 0, 0) DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap) If @error Then Return SetError(12, 0, 0) _GDIPlus_BitmapDispose($pBitmap) _GDIPlus_Shutdown() $dll = DllStructCreate("Uint", $pStream) $dll2 = DllStructCreate("uInt", DllStructGetData($dll, 1) + 8) DllCall("", "UInt", DllStructGetData($dll2, 1), "UInt", $pStream) _WinAPI_DeleteObject($pStream) $pStream = 0 _MemGlobalFree($hData) If $Resfile <> -1 Then _WinAPI_FreeLibrary($hmod) EndIf EndFunc ;==>_SetImagefromResource Download au3 Download au3 with function for icons, pictures(bmp, jpg, gif), fonts(only ttf tested) Download new au3 without temp file creating in example part1 point
-
A simple method that I use to save a copy of the exe and au3 files, with the version number as part of the file name. If you are using SciTE4AutoIt3, just add these lines to the AutoIt3Wrapper directives. #AutoIt3Wrapper_Run_Before=MKDIR "%scriptdir%\Archive" #AutoIt3Wrapper_Run_After=copy "%out%" "%scriptdir%\Archive\%scriptfile%.%fileversion%.exe" #AutoIt3Wrapper_Run_After=copy "%in%" "%scriptdir%\Archive\%scriptfile%.%fileversion%.au3"1 point
-
DriveMapAdd & DriveMapDel Bug
jyacoe reacted to JLogan3o13 for a topic
You're not giving it long enough of a sleep. I reproduced your code, and moving from Sleep(100) to Sleep(1000) resolved the issue. I would suggest start at 1000 and then move down until you find a happy medium. Edit: Even at 250 it is working just fine for me.1 point -
Got new problem..Continue the yesterday's topic~
Underdogger reacted to guinness for a topic
Great. Now you have plenty of new things to learn. Good luck.1 point -
Got new problem..Continue the yesterday's topic~
Underdogger reacted to guinness for a topic
OK. But did my modification work above?1 point -
Got new problem..Continue the yesterday's topic~
Underdogger reacted to guinness for a topic
OK the advice I gave you via your PM (explained to him about the rules) was wrong. As I mentioned yesterday _ArrayDisplay is just to display the array, you're now going beyond what _ArrayDisplay was meant for into creating a GUI/ListView yourself. I would highly advise not to jump in right away creating what I like to call a "Frankenstein script", where you take bits and pieces here and there not understanding the basic principles. Look at GUI management in the help file as well as ListViews. I could edit the function malkey posted yesterday but you don't learn anything that way.1 point -
1 point
-
What do you mean by every version? If you mean you want to use a versioning system then you should look as cvsWrapper that supports both CVS and SVN. It also explains what to install and configure to either use AutoIt3Wrapper directives of simply F12 to commit your changes. Jos1 point
-
Possible to create an empty array?
Bluesmaster reacted to andybiochem for a topic
I don't think you can create a totally empy array in AutoIt. Your simple example: Dim $foo[0] For $i=1 to 10 _ArrayAdd($foo,$i) Next ...doesn't work because you are trying to create an array with no elements: Dim $foo[0] use this instead: Dim $foo[1] For $i=1 to 10 _ArrayAdd($foo,$i) Next ...this way you don't have to commit to an array size before hand, and the _ArrayAdd UDF will ReDim the array each time automatically. If you are doing this on a mass-scale array with several thousand elements you will see a performance drop using _ArrayAdd, when compared to other methods. I'm not sure why there is a problem with arrays being zero-based along with everything else in autoit, I find them really easy to use.1 point