Leaderboard
Popular Content
Showing content with the highest reputation on 03/25/2014 in all areas
-
JohnOne, This is how I have done it in the past: #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> $hGUI = GUICreate("", 400, 400, Default, Default, $WS_POPUP, BitOr($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)) $cExit = GUICtrlCreateButton(" Exit ", 10, 10, 80, 30) ; Must be within GUI window $cLabel = GUICtrlCreateLabel("", 100, 100, 200, 200) GUICtrlSetBkColor($cLabel, 0) GUISetControlsVisible($hGUI) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $cExit Exit EndSwitch WEnd Func GUISetControlsVisible($hWnd) Local $aM_Mask, $aCtrlPos, $aMask $aM_Mask = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0) $aLastID = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", GUICtrlGetHandle(-1)) For $i = 3 To $aLastID[0] $aCtrlPos = ControlGetPos($hWnd, '', $i) If Not IsArray($aCtrlPos) Then ContinueLoop $aMask = DllCall("gdi32.dll", "long", "CreateRectRgn", _ "long", $aCtrlPos[0], _ "long", $aCtrlPos[1], _ "long", $aCtrlPos[0] + $aCtrlPos[2], _ "long", $aCtrlPos[1] + $aCtrlPos[3]) DllCall("gdi32.dll", "long", "CombineRgn", "long", $aM_Mask[0], "long", $aMask[0], "long", $aM_Mask[0], "int", 2) Next DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hWnd, "long", $aM_Mask[0], "int", 1) EndFunc No doubt you can now replace the DllCalls with new WinAPI* functions. M232 points
-
ImageSplitter v1.0.0.7 ImageSplitter split an image into pieces that can be used - for collage art. - for website optimisation (speed up the preview of images) - for printing purposes (big poster) - for create a puzzle. Load an image by menu or by drag&drop (jpg, gif, png and bmp are supported) Choose a format and select Columns and Rows numbers you want. Once Split Image processing is finished a folder with all splitted image parts will be opened. Parts of image are from left to right and from top to bottom. Button was made online with chimply.com the easy and free buttons generator ! ChangeLog version 1.0.0.7 : DPI Resolution can be preserved as original or changed. Multi files Split is now possible ( Only by Menu - Open - Multi files Split) previous downloads : 189 ImageSplitter v1.0.0.7.au3 is available in the Download Section Hope you like it !1 point
-
"How to make a loop without loop" Crazy... and wonderful1 point
-
Yeah.. It's the same code as last time, but the while loop is replaced by an this : Local $tab[] = [ _ ",01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49", _ StringMid($tab[0], Random(0, 48, 1) * 3 + 2, 2), _ StringReplace($tab[0], "," & $tab[1], ""), _ StringMid($tab[2], Random(0, 47, 1) * 3 + 2, 2), _ StringReplace($tab[2], "," & $tab[3], ""), _ StringMid($tab[4], Random(0, 46, 1) * 3 + 2, 2), _ StringReplace($tab[4], "," & $tab[5], ""), _ StringMid($tab[6], Random(0, 45, 1) * 3 + 2, 2), _ StringReplace($tab[6], "," & $tab[7], ""), _ StringMid($tab[8], Random(0, 44, 1) * 3 + 2, 2), _ StringReplace($tab[8], "," & $tab[9], ""), _ StringMid($tab[10], Random(0, 43, 1) * 3 + 2, 2), _ StringReplace($tab[10], "," & $tab[11], ""), _ StringMid($tab[12], Random(0, 42, 1) * 3 + 2, 2), _ Number($tab[1]) & "," & Number($tab[3]) & "," & Number($tab[5]) & "," & Number($tab[7]) & "," & Number($tab[9]) & "," & Number($tab[11]) & "," & Number($tab[13]) ] Now, I'm tired... If someone as few time to optimize the rows 17 and 18 ...1 point
-
Hey hey ! Just one line ! RegExp not already optimized.. Local $tab[] = [ ",01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49", StringMid($tab[0], Random(0, 48, 1) * 3 + 2, 2), StringReplace($tab[0], "," & $tab[1], ""), StringMid($tab[2], Random(0, 47, 1) * 3 + 2, 2), StringReplace($tab[2], "," & $tab[3], ""), StringMid($tab[4], Random(0, 46, 1) * 3 + 2, 2), StringReplace($tab[4], "," & $tab[5], ""), StringMid($tab[6], Random(0, 45, 1) * 3 + 2, 2), StringReplace($tab[6], "," & $tab[7], ""), StringMid($tab[8], Random(0, 44, 1) * 3 + 2, 2), StringReplace($tab[8], "," & $tab[9], ""), StringMid($tab[10], Random(0, 43, 1) * 3 + 2, 2), StringReplace($tab[10], "," & $tab[11], ""), StringMid($tab[12], Random(0, 42, 1) * 3 + 2, 2), Number($tab[1]) & "," & Number($tab[3]) & "," & Number($tab[5]) & "," & Number($tab[7]) & "," & Number($tab[9]) & "," & Number($tab[11]) & "," & Number($tab[13]), InputBox("Lottery", "Enter your numbers from 1 to 49, separates by a comma (ex : 1,5,10,37,15,43,2)", "1,2,3,4,5,6,7", "", 500, 150) , ( StringRegExp($tab[15], "^(([1-9]|([1-4]\d)),){6}([1-9]|([1-4]\d))$") ) ? 1 : (0 * MsgBox(16, "Lottery", "You must enter 7 numbers, separate by a comma")) , (($tab[16] = 0) ? 0 : (((UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){0}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){1}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){2}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){3}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){4}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){5}([^,]+).*", ",$1,"), 3 ) ) + UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){6}([^,]+).*", ",$1,"), 3 ) ) ) = 7 ) ? 1 : 0 * MsgBox(16, "Lottery", "You cannot choose a same number more than one time") ) ) , StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){0}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){1}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){2}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){3}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){4}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){5}([^,]+).*", ",$1,") ) + StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){6}([^,]+).*", ",$1,") ) , (( $tab[17] = 0 )? 0 : MsgBox(0, "", "You " & (( $tab[18] = 7 ) ? "win" : "loose" ) & @CRLF & @CRLF & "Computer choice : " & $tab[14] & @CRLF & "Your choice : " & $tab[15] & @CRLF & @CRLF & "You found " & $tab[18] & " good numbers" ) ) ] Here is a readable code : Local $tab[] = [ _ ",01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49", _ StringMid($tab[0], Random(0, 48, 1) * 3 + 2, 2), _ StringReplace($tab[0], "," & $tab[1], ""), _ StringMid($tab[2], Random(0, 47, 1) * 3 + 2, 2), _ StringReplace($tab[2], "," & $tab[3], ""), _ StringMid($tab[4], Random(0, 46, 1) * 3 + 2, 2), _ StringReplace($tab[4], "," & $tab[5], ""), _ StringMid($tab[6], Random(0, 45, 1) * 3 + 2, 2), _ StringReplace($tab[6], "," & $tab[7], ""), _ StringMid($tab[8], Random(0, 44, 1) * 3 + 2, 2), _ StringReplace($tab[8], "," & $tab[9], ""), _ StringMid($tab[10], Random(0, 43, 1) * 3 + 2, 2), _ StringReplace($tab[10], "," & $tab[11], ""), _ StringMid($tab[12], Random(0, 42, 1) * 3 + 2, 2), _ Number($tab[1]) & "," & Number($tab[3]) & "," & Number($tab[5]) & "," & Number($tab[7]) & "," & Number($tab[9]) & "," & Number($tab[11]) & "," & Number($tab[13]), _ InputBox("Lottery", "Enter your numbers from 1 to 49, separates by a comma (ex : 1,5,10,37,15,43,2)", "1,2,3,4,5,6,7", "", 500, 150) , _ ( StringRegExp($tab[15], "^(([1-9]|([1-4]\d)),){6}([1-9]|([1-4]\d))$") ) ? 1 : (0 * MsgBox(16, "Lottery", "You must enter 7 numbers, separate by a comma")) , _ (($tab[16] = 0) ? 0 : _ (((UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){0}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){1}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){2}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){3}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){4}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){5}([^,]+).*", ",$1,"), 3 ) ) + _ UBound( StringRegExp( "," & StringReplace($tab[15], ",", ",,") & "," , StringRegExpReplace($tab[15] , "(?:[^,]+,){6}([^,]+).*", ",$1,"), 3 ) ) ) = 7 ) ? 1 : 0 * MsgBox(16, "Lottery", "You cannot choose a same number more than one time") ) ) , _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){0}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){1}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){2}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){3}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){4}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){5}([^,]+).*", ",$1,") ) + _ StringRegExp("," & $tab[14] & ",", StringRegExpReplace($tab[15] , "(?:[^,]+,){6}([^,]+).*", ",$1,") ) , _ (( $tab[17] = 0 )? 0 : _ MsgBox(0, "", "You " & (( $tab[18] = 7 ) ? "win" : "loose" ) & @CRLF & @CRLF & "Computer choice : " & $tab[14] & @CRLF & "Your choice : " & $tab[15] & @CRLF & @CRLF & "You found " & $tab[18] & " good numbers" ) _ ) ]1 point
-
Checking software version numbers
ModemJunki reacted to Melba23 for a topic
OK, I am convinced! Let us leave the function as it is. M231 point -
Using _IECREATE for firefox or chrome?
Palestinian reacted to Danp2 for a topic
The forum does have a search feature... suggest that you give it a try. Hint: They are both located in the Example Scripts forum.1 point -
Did you find who is hidden ? Here is another version adapted to most picture dimension : #Region ;************ Includes ************ #Include <File.au3> #include <WindowsConstants.au3> #Include <GUIConstantsEx.au3> #Include <GDIPlus.au3> #EndRegion ;************ Includes ************ HotKeySet ( '{ESC}', '_Exit' ) Opt ( 'GUIOnEventMode', 1 ) Opt ( 'MustDeclareVars', 1 ) _GDIPlus_Startup () Global $iPicNumber = 15^2 Global $sPicturePath = @TempDir & '\person7.jpg' Global $iPicCtrlWidth, $iPicCtrlHeight Global $hGui, $iMargin = 0, $aSplit Global $sCurrentPicPath, $iPicCtrlExStyle = $WS_EX_STATICEDGE Global $idPicCtrl[$iPicNumber], $aPicPath[$iPicNumber] ; used for save pic paths set to Pic If Not FileExists ( $sPicturePath ) Then _Person7Jpg ( 'person7.jpg', @TempDir ) Global $aPicDim = _ImageGetDimension ( $sPicturePath ) #Region ------ Split Management ------------------------------ If $aPicDim[0] >= $aPicDim[1] Then $iPicCtrlWidth = 50 $iPicCtrlHeight = Int ( $iPicCtrlWidth*( $aPicDim[1]/$aPicDim[0] ) ) Else $iPicCtrlHeight = 50 $iPicCtrlWidth = Int ( $iPicCtrlHeight*( $aPicDim[0]/$aPicDim[1] ) ) EndIf $aSplit = _ImageSplitter ( $sPicturePath, Sqrt ( $iPicNumber ), Sqrt ( $iPicNumber ), 'jpg' ) #EndRegion --- Split Management ------------------------------ _Gui () While 1 Sleep ( 250 ) WEnd Func _Base64Decode ( $input_string ) ; by trancexx 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 _Exit () _GDIPlus_Shutdown () Exit EndFunc ;==> _Exit () Func _FileGetNameWithoutExtByFullPath ( $sFullPath ) Local $aPathSplit = StringSplit ( $sFullPath, '\' ) If Not @error Then Return StringLeft ( $aPathSplit[UBound($aPathSplit)-1], _ StringInStr ( $aPathSplit[UBound($aPathSplit)-1], '.', 0, -1 ) - 1 ) EndFunc ;==> _FileGetNameWithoutExtByFullPath () Func _GdipSetInterpolationMode ( $hGraphics, $iInterpolationMode ) ; for compatibility with AutoIt 3.3.8.1 Local $aResult = DllCall ( $ghGDIPDll, 'int', 'GdipSetInterpolationMode', 'handle', $hGraphics, 'int', $iInterpolationMode ) If @error Then Return SetError ( @error, @extended, False ) If $aResult[0] Then Return SetError ( 10, $aResult[0], False ) Return True EndFunc ;==> _GdipSetInterpolationMode () Func _Gui () Local $iGuiWidth = Sqrt ( $iPicNumber ) *( $iPicCtrlWidth + $iMargin ) + $iMargin Local $iGuiHeight = Sqrt ( $iPicNumber ) *( $iPicCtrlHeight + $iMargin ) + $iMargin $hGui = GUICreate ( 'Guess the person in the picture', $iGuiWidth, $iGuiHeight, -1, -1, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST ) GUISetOnEvent ( $GUI_EVENT_CLOSE, '_GuiEvents', $hGui ) GUISetOnEvent ( $GUI_EVENT_PRIMARYDOWN, '_GuiEvents', $hGui ) Local $x = 0, $y = 0 Local $aList = _FileListToArray ( $aSplit[3], '*.jpg', 1 ) ; based 1 For $i = 0 To UBound ( $idPicCtrl ) -1 GUICtrlCreateLabel ( StringFormat ( '%03i', $i+1 ), $iMargin+$x, $iMargin+$y, $iPicCtrlWidth, $iPicCtrlHeight, BitOR ( 0x01, 0x0200 ) ) ; $SS_CENTER, $SS_CENTERIMAGE GUICtrlSetBkColor ( -1, 0x000000 ) GUICtrlSetFont ( -1, 11, 600 ) GUICtrlSetState ( -1, $GUI_DISABLE ) $idPicCtrl[$i] = GUICtrlCreatePic ( '', $iMargin+$x, $iMargin+$y, $iPicCtrlWidth, $iPicCtrlHeight, -1, BitOR ( 0x0100, $iPicCtrlExStyle ) ) ; $GUI_SS_DEFAULT_PIC $aPicPath[$i] = $aSplit[3] & '\' & $aList[$i+1] $x += $iPicCtrlWidth + $iMargin If $x + $iPicCtrlWidth + $iMargin > $iGuiWidth Then $y += $iPicCtrlHeight + $iMargin $x = 0 EndIf Next GUISetState () EndFunc ;==> _Gui () Func _GUICtrlSetImageEx ( $icontrolID, $sImagePath ) Local $aCtrlPos = ControlGetPos ( $hGui, '', $icontrolID ) If @error Then Return SetError ( 3, 0, 0 ) GUICtrlSetImage ( $icontrolID, $sImagePath ) ControlMove ( $hGui, '', $icontrolID, $aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3] ) ; reset control pos. EndFunc ;==> _GUICtrlSetImageEx () Func _GuiEvents () Switch @GUI_CtrlId ; @GUI_CtrlId : Last click GUI Control identifier Case $GUI_EVENT_CLOSE _Exit () Case $GUI_EVENT_PRIMARYDOWN Local $idCtrl = _GuiGetCtrlId () If $idCtrl Then $sCurrentPicPath = $aPicPath[( $idCtrl - $idPicCtrl[0] )/2] If Not $sCurrentPicPath Then Return _GUICtrlSetImageEx ( $idCtrl, $sCurrentPicPath ) Local $iExStyle = _WinAPI_GetWindowLong ( GUICtrlGetHandle ( $idCtrl ), 0xFFFFFFEC ) ; $GWL_EXSTYLE GUICtrlSetStyle ( $idCtrl, -1, BitXOR ( $iExStyle, $iPicCtrlExStyle ) ) ; remove $WS_EX_STATICEDGE exstyle for remove ctrl frame. $aPicPath[( $idCtrl - $idPicCtrl[0] )/2] = '' EndIf EndSwitch EndFunc ;==> _GuiEvents () Func _GuiGetCtrlId () Local $aInfos = GUIGetCursorInfo ( $hGui ) If Not @error Then Return $aInfos[4] EndFunc ;==> _GuiGetCtrlId () Func _ImageGeneratePathByCoordinates ( $sBaseDir, $sPrefix, $x, $y, $sExt='jpg' ) If Not FileExists ( $sBaseDir ) Then DirCreate ( $sBaseDir ) Return $sBaseDir & '\' & $sPrefix & '-X' & StringFormat ( '%03i', $x ) & '-Y' & StringFormat ( '%03i', $y ) & '.' & $sExt EndFunc ;==> _ImageGeneratePathByCoordinates () Func _ImageGetDimension ( $sPicPath ) If Not FileExists ( $sPicPath ) Then Return SetError ( -1 ) Local $hImage = _GDIPlus_ImageLoadFromFile ( $sPicPath ) Local $aRet[2] $aRet[0] = _GDIPlus_ImageGetWidth ( $hImage ) $aRet[1] = _GDIPlus_ImageGetHeight ( $hImage ) _GDIPlus_ImageDispose ( $hImage ) If $aRet[0] And $aRet[1] Then Return $aRet EndFunc ;==> _ImageGetDimension () Func _ImageSplitter ( $sPicPath, $iColumns, $iRows, $sType='jpg' ) If Not FileExists ( $sPicPath ) Then Return SetError ( -1 ) Local $aDim = _ImageGetDimension ( $sPicPath ) Local $hImage2 = _GDIPlus_ImageLoadFromFile ( $sPicPath ) Local $CLSID = _GDIPlus_EncodersGetCLSID ( $sType ) Local $w = Int ( $aDim[0] / $iColumns ) Local $h = Int ( $aDim[1] / $iRows ) Local $hBitmap = _WinAPI_CreateBitmap ( $w, $h, 1, 32 ) Local $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP ( $hBitmap ) Local $hGraphic = _GDIPlus_ImageGetGraphicsContext ( $hImage1 ) _GdipSetInterpolationMode ( $hGraphic, 7 ) _GDIPlus_GraphicsSetSmoothingMode ( $hGraphic, 2 ) Local $sPrefix = _FileGetNameWithoutExtByFullPath ( $sPicPath ) Local $sOutputDir, $iSuffix Do ; create a directory based on image name and with infos on settings. $sOutputDir = @TempDir & '\SplittedImages\' & $sPrefix & '-' & $sType & '-Row' & $iRows & '-Col' & $iColumns & '-' & StringFormat ( '%02i', $iSuffix ) $iSuffix += 1 Until Not FileExists ( $sOutputDir ) Local $sTmpFile, $k For $i = 1 To $iRows ; split from left to right and from top to bottom. For $j = 1 To $iColumns $k+=1 $sTmpFile = _ImageGeneratePathByCoordinates ( $sOutputDir, $sPrefix, $i, $j, StringLower ( $sType ) ) _GDIPlus_GraphicsDrawImageRectRect ( $hGraphic, $hImage2, $w*( $j -1 ), $h*( $i -1 ), $w, $h, 0, 0, $w, $h ) _GDIPlus_ImageSaveToFileEx ( $hImage1, $sTmpFile, $CLSID ) Next Next _WinAPI_DeleteObject ( $hBitmap ) _GDIPlus_ImageDispose ( $hImage1 ) _GDIPlus_GraphicsDispose ( $hGraphic ) _GDIPlus_ImageDispose ( $hImage2 ) Local $aRet[4] $aRet[0] = $iRows*$iColumns ; pics number $aRet[1] = $w ; pics width $aRet[2] = $h ; pics height $aRet[3] = $sOutputDir ; directory Sleep ( 500 ) Return $aRet EndFunc ;==> _ImageSplitter () Func _Person7Jpg ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) Local $sFileBin = "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" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "NJVh6YY9cfeCjocI7Jlg9jB9Y9i7+2dw/Fku/ptHS8cHZpdHp7l+sjYtjwzz7aPkQvbMjhm+9npJrwWzINh7H0ukk+TOEI+XvgeWvZH5LwZP2QeEA9lnkt7tcu6wxcH6YTGLU9LdplfZ2+3C9cXLq3uydJb9rXuw+LHllaJN0Jd8IeDpEPwtlbceyTyde8MBL1e7q8CBk+3raJiF9uhCQZebuxx3zgwx3ZvlqyXPOMg7sgBwGIX4Yd8DtqFnUh3Jd58WpCnEePN2QzyXbPzgPJMu0+pm3chSSyO8D2H20g64e+o2QT2nj6l3DzBZxF1akuhdCEsL2Ow66gg+M8ZFje4DMvEyMsm2LiJdX6hyXca6Z8u4JQhvB4TSwWCIOp8HS2aWZF0dx7PIkeCXV2nqIat6j+y5LtkBJx7GfIQ9nNjAvWDI5bTkT3Ht0mXV74J3ngbpbbfIh6iLtovePjbyFCes9eR0jLSXgXi5sS7vEfsZDscLDbDH94XI/c93ifiWeWsvyey8Pbqc+Ayvwh+cBnL2wyzuz8jZRKYO2JEsssyzJ/btAE3c+pd8FvXEWxmQWF09ulkeQP5f8z+7C3WfwTn3hT7klOp/I64gnyXLqng4c4S3PIeMyN3gbxopP0s3ZdOZIfCVJsr5Hb3fKOi23ruVs8j3w8bokXsOFt84OyHOmxHsD5KPsfpD2wO7Q8l2zO7YNby9tJ4T15IhvlZQ3sH5JFs9x3bkInbdrbZmd7feABevCzcwl3kiL3/kvHL7/leJvvLPkR94Pt78/wD/xAAfEQEBAQADAQEBAQEBAAAAAAABABEQITFBUWEgcYH/2gAIAQIBAT8QAOJO223c8C3SCxMvvEbaccvBS0sk7kxj9iJkPDfJcE1szu2Ytyccw82NXSP1xb18jfH+3XpMP1erJZbWz1mc4ITMHsvyQ25Lk/zgMt2H7OoF8L8QxiK436Ysg6njHnFs2zJkhBZBz7IL3dLy7QT1fYXEbDftgLFmORHXG8F13e77N7OoF0+S3QiPZMZ33x99hJJHUJwvOrEXy2H0v52DCz/AiQ3u3JHsJbAe2R7vshvLowu97ny3q6zuRgTa9w8GZl8usJBL6S67s5AO47je9XZ8mS87sHEuwl+rd05my+NuN4jHTdg0kfCD84d+iH2N4DHyXfZb1IbdxI8bK1mxauCRBtpD3ebeXSZdM0jakMdtqw/YcltiN6uuIcBPC3LeuHfsrt4vxl0xfyDu38hZItoYyJDyQdJHwb/2JosP7HWHViwcf4ki/wC2F2QhPsGcXds76vMtI9z+XrjOrLIyQ+WbJA3q88LvjkklhGFsEzLqWGx0WQJ7l3eLrLyEkdXvHu8W5A4PDO7OD1exw4kbezjvjpZZ2TYA9kZbPks6/wAHXDcXA4e4cM+WxWsO/Ywl27MgJHksl3P7K+8PTgZe4jmQTke/8DbbLe8BjqI7S9uxaRL1JncOeX6vM65DgeuBweoPskknfc/yxYM4ZrdF3a5a5YrKxgrYckRvH8XiyY7/AJhB3NlnczqBMz3j7vEtjyO/ZHjIIIL1eYmGkeEnhl18mCThQjZwfdkfrYbB8Z6h+RHBjhEkeocbPZ82xtwlfbYd942MT0l27DL1Hkq93XMsxtYRDuEEzHuSSRm8Zb5DDJfYtfsj42Fg+Xditt84T+mPw7du7ZwX3gHEIJngEGZ942TqzuAlC2eR8WT93/V/3L/Y7v6nq+zLuMhnkIdcAkktjiEycORPTZ1pCjEBmkZfjOvsOM/bcmWZwHJkyQvpHYTw8OG8t7vZx0FmcgtvWW9R3dvAb3xB9ujDhmbzPvJ4j2/Zjy/eV/wDgj/D+XxwL//EACYQAQADAQEBAQACAwADAQEBAAEAESExQVFhcYGRobEQwdHw4fH/2gAIAQEAAT8QsQPlFf5nW9xfrFTrmb9PImCm9an+YUvHCsl08LBVTvIWxWnyPwu/9Qgpi5ZBeDavyXFVzI9qAhksW/4Sl0emBAF5dxApoPkBQD/MvbN1y5qhpFVAcyhtymgDAquxe0RjC0fAM8jUC/3Gn9dlKBpAC0Tj2JTovksNSxIoKuDFtvrEr0Q2OhxOvyWSGYfsVVnOwTSqfYGpZuN1oIODGOylb8hfwwplwLfguaRlt3ycy38CNwwWVUdKesijYpu1k9zTDOwsGlQLvhmENq0Kb/6ZY4UApUeKSFVz6mk8GvpArSspfYPBZWHNlpNQ/wC9hKC6NfyUiaWlZLBa+VL10v2A063fsohpO/Ig2DrntToQdRV318ivpOQVxAKV9msn5Lk4rD5KO6PbJde1X5GLs5kUNRfzGLw3UMHD7LDN9PsLIW7cCb2rlLG/Vw1Ef75AULD19gtWPxlBbx8hvHNv8mCZ1t5LRKoJq2V4wUI3l5Eu2gvkuoP8RKt/ZdRb7Bsoi6xtVy5Q1wfZgsH2Ola2Y1M19fZuroZ+RNCA6/ZSEceMA2u77LRA0/xHreK2kYlaflQdB8XGZdHtfYBAHA7cRNgA/SIZj9HpZz/Mr4X6/mU022tXz9iP4A+ESk0wTYPN4FfPyWCza9lYFiVRAAHCUNECr1cYGU7VXDxENd2D0RTagEKOeEF2XbvwqOVZgLdh+xuAU+bAa2qesZQFRrYfNS1iztpE09rLitNKefZbhy4XaoJ/mBRGr5UAEVrsra7bELR3yC8g9iGlLfvSCmtJeekxtQDh7MA/ktqPaOOPyWjTDjeTW2K3tygL9+RBYsJXegD/AHA+hbZcJaC/qBuBfqF14/HYONh7cW1VewUWUiDlvwYtVWSuEF++Q2b0NI12ce32P1tRh8gr0/vsdXLwiqhseSjEPgjP+4XTBC4toCifI3v8RxpCAMd8Y/AXucg0st5GsbmsU42nhL7N29lBkvT8hSpqL5RF2tHQa2C6Ko7E5v6CC6qNuxLA/wB5PYH7FG6gbX/ItVA1tf8A2AIt207FW11vjccLr9P+MI3Ue9CBIhPa/wCxK0F+zRuct2WBFElAG5WprsVpBev5CS2Mg5va5sXxAcqUtWjdj4g4EuKW/rsVI0Gy7RB2oWhVfYIrovC4XReHX+JctB4P/cNGa9q3/UKbU9CRXo1zlRxKiv7QAFjxhqptcS9oF9lEqHvEomwHzFEstdPfZc9A4OQaSaXtw2AWlkB2ETCPbIAkC+PYQUgbV1g8UQdPLhLII5fagCoh8fkEN52EqNx13l/ZU6otbLW6L/tA0hP5l7Bqv8pTdYPKYNxtvnLg9C1GHkUoBy2XbfgrCKr1r1VwDUW7ewEq/RSXAN/ELtK+NpGO04dTyKpHh7UwIOK15ERWnjf5FbuTaYELetQBrev2L6KP+THaj19lhRvhEZ16GUwYcQwDY4TBGP8Acua0xLhRNuF3U/Q9mFDbz6yvF9Md4+f/AJ7KRe3V6wTdg3QuaYAsmv8AQx+cq6CmOAx8sh8Zuek2YRMHZgAThyLgc2zSoboMu6uJN0F2/Zgl9HiMpUCsuLBH6I4aSwc9nyILBQee+TIcjqUNLYxWtbKOkDeFVRLUw7cpRXe/ktFCzx5DTgPyCRhrlkNcblI04Szaz8iA7glrasdipLf1Ncr+nI8Nzw8lLavb6v8AIGxUuQKxb1XZRkHVVWGxIvxiSETxB1DfyWnCZohbe+xHVBjY2IWPPsC2FCt5UQEh7qIRKa4jVyvifW5XAPIDKC8W4bWhX9wwfX32AAsA5cQudePktzF7Z2JFx+ZEmrX/APG4rBo1Knf8LUkE3B+pcpwab69h3Eg+9mGgPkOjobR7AFBD21f4l6AOdEYcUN8gtpm6si00DpbT+4hQ2pwpWIgreA3+JQF+ytMMhVfXY+hbF/8AkQMWqyuxWGnwZiEgIQprW4aQpHIysOL+MoLu8xgFAtbDC1pey7b3FwW7qoDVU/j2Ok2jCpYsT9dmFCnFlqAFdNgmrr6aH/7ADQmNmQgsektce6XvIAOj47AqEPKZRUpHGLug88igoeDcrKvDcjhsP+YEBPdg" $sFileBin &= "ABiDAqnNZWeENm1h6A8heKvrAJTLrAYewFNRsYS8S57A/jIaAKr0uOUw9ZUBP98iLdqcEe0PhyBU1flTsFt9i6WRiJvfyUhYBlqiqGPb7CdDisqDGxJhFvUt+xQlgv8A3Ct2vBEQh4Wn4n9cYIABwvn8QbGBl/kFYHwioUxfFmAUBZUvBdJf7ECZnk+Qo7O7YV5HcqnbiQ10DId8v2cLc90Iqc2JKWo+zoE+5DsXSObKrO143z+ogigDkx/3PLjV0HK3KECEVUU1xY5Z0LqD8HVuUzgj9mDupRN1/wBuE/Ay7YwP47CY9/cgit+DYzQmvZSl4/kUVPf9wgVr8InBRd+yyBdFrctf6kI9sH9ljHro9lAAvwOH+5gH6GRlrLbSbBFd/wAyteftsxl36VGFpP08hFS/UJVDj40/3E1AfAYvaqvKBlgqWvBMJQFpZyLRFnt+Sxi60MLfL08hoJKXmrCgGnF5NgUPvZagtIYKaf8AMYCW+qPY0/I2RsCu9ne0dohH+x2HkqIVHpEYnb/UqDrtSjdiyPVfhAuABheMQtsMagJzR2oqQVQ2ydePxqIJumbS0Ml9l7UHdD+EZjI1ZB4R9Rr/AFAt6PBuKlXmuQgKL5RULWnim4dsAv8AzG3B9EPAHaPIAQAfYD1Rm9la3jpC9mwyzj4LKOYJ8giJC+fYqSnnJYDXhfCAJ/1S4kgsNr/Mdegitl5QC6yVVS9/mBhUd/IK1voYlC870iPAF0z+HhZ7KpoL8j6QOFwVMpwCWO6Hhusvw4+ID007yBoA/VihTa6u4gEg85A0sp5yIFFvyfPTX+oCULn3GtSgBg9izxPSUoAC2KC3rIYBrhKbIPlmMd+LxHkC+6LxlFjldD2CWq3X2LBKQloNA4eykrR4stcJ8ZTAv2tVLfmU22OlGxa/zEWs7jf9xRwVXeQIT+t2Mop4JyPibcRlhwcNDBjC9VMGfUC7CJpzBtL5GsKIw1DWwoj2ghF3qfJn7DiR4Cn+aqcQHHOy50H9QSA159gVvVZEwp/cQ024YK07CVglbsRMnztxcqy7JhT+MqPgZfjEWjvLDDvW0FLHIxZY3A3fPHISMKs2GVrCVcv0a+bFDK9KiEsF3hAXjaZEbWXNIdaIR0Xy4iuH1Ri0E7+eRD0WnGXVFjp/iE2Wlv5K0eStMD9iaueS6nT2UFgdQI6/jEFAvTtQ76XBG6/YVciYK7NAj2VVrdUxbUfMOqauLyYSGkyv/KbUDqEUyaNrkvqB9r1jwBoWwuKzyy4SxifWn+oEl9Mlp3mniI5PIsoK+wvcbPtQpofz5LTYp7UpvBcIL26+S5P0sIHD61cQCLe87KWMvNm5B57Ev2CloHCX7ESymCjY7CkULCgphCnxyMsPBaJWS3H2oNrHRd/xGWwjnIdT4bi1LS+zs1rb2iAoqTJYx3/CoSusao9Zo/iGgFPb9mBGBe5HdIkfykGrW3yUui54EN3Bx9cZZUiqqrFlszbnyG9J9OSo2j1CZCC9EOlX0bssCg4rZuQOPUzq4aqZSoGUuO8M19P2YILq0YCEhgB/lhKg5FCkRFDl0RAWLrt0xTKNwWTHAfqiXDBYDe3yA6n1a3+IoFHx3/MzqJf7KivI5DwIAdyHW0uV7HQt935LhaKzJQCVXLuh9CNVX4ItARx9S8ax8Nv+paVTLXyIbjw5AbRQGxkETqeo5MV6EYlEDM7H1RtadYYBQgHcNxyH8lkLa5aU6xS+CD2ORI3VynobcHAj5dbwJYe3j2VIzNYNzOASzUF/YB06H+JWFgIFyBvUUFs+sqN6OZE0X/KXIWyXlwGX4wqXk4uR8x7hi9yOnSOQ+ZqiMDj1fkoT1LTwhrpPHamZS732YbleGMZ8HgZCNxfHyJUaUtFxzVniV/pi+AB03VRetQrWguL0ARtKvstYouDlwgjfhcA2AxictPR5FtUpUQH/AFZrb7+StavfstFUV5DFPP1ln46ikBtTGjArrLlB6U5EgCl1WxrXh48gEBmg/h1gQATeoktooCPEBzYagxwGLPJtowjAOqhTKVWKZNtt/YKa3tj35GVbV0Ss0OPqHAENJfT967HH8CsWv0y0fBh1vkDPF/IFdAcKlfWfkrJAtagDWi9ouhje/sFCvDBvsLLFr9YWCX124FoDxcbgX52Bopa7Hmw+35OZfMP/AGzYCPvZ8ghuZmAuUwK0fnJp1yp7BeK1pxUrzxVna/mJiq9WZhOADkpFsu3bf/IshDCLP8RRpWLHsOOqVvyGwBqz+knaANnBBF6tCxCl3XkfSU32LZ0THcXkA255DOlo7C4U/kvAaF25ZHqZ2iNYn4yH6pWhhBsCuh7HhfQwPYHw9iUzTdndLlXcShVlr6jgsghLarLNA7FitgFSB8EKAvv9y3aKXMAoCP7GhUBd12DG7/EEdj3OwfbHbSkrD9jYY/tQ5ui8uIgFfXyMV3o31gVSUKf7ltaiiW3Td8uZuk9GHSC7kwlQ4VtxD0aK8insvtoKbRXCQrCz37ECgcLeS8Ymj6i6a1dqh3H1f/cFDK8QX/mLxPiLLTNfUf4g8AsG6SbK6YtKl7K9W6YWtBVCl/8AIUuEnlKYA+tH+YrW+6+Q8XnJYejuRtpsO17NBpHEAXUFB1Rkopu02oIoO99IRBrivZcs0/WLGhXvkOwVd/IFFBWi1/hjpkzb6f5lllx3lALH8VCCwF2OuRzo8fEEpKVV4wpoNvA7GQwuFMatvqBVX7bkK0Ny39J0V/agZRdf1AjfDqXadnxZ/UBBPrOkAlIl2w3Ya1Vw0FyeRg9DtxnBBgWywiByDWItLEXEQXjtfkRsWfZjtX1LYNGEEABw6ynG5MBL9jdb5L1an/8AqV0rWtwrqbbuRRqptxL6ByFN+SkK3gyOQU+yiD9p1jtBB68hr0KNqYUWhWIQwVa+S8UVble2ObKd1bfYQAr+bjkwK2AHKHyEXz2FIhdPsZ+nx+Q06L3+Zouj/wBwbKW0URq6pNHyIwD+6PKHw7ULNaYU1BK7/iGFA2fkr4tH6EtD45RhE6ezQpNxOYD0nhEJjMpZpIdP/UpTlKnrFagUIdje2MQ8YO6Fqx5AtSteQVvF8LGA+74ktFD7R2V0h2I5Q4j5MwGjrAqFLodfzYRHpqCmm5/M0twoI7KgfjKcL1XCWXG7oQS4vaCI/rU9hxWMRYFFi8QP+Q3dP4WDKR1TyPpittZ01U6hKIKPcjgUbvdgguXwmLb9PIVA3VS1BK8PY4MfmuQAmUnIzrq/+yt6qiEKLQuiJUC2ZGFTGFVWdD/h5AoSecjAMHjHWCjYeQ3NCt5MQpHh9jgSngkELCkMT1mmqR8uGQtKaIb0abrrCRqnjyPsD1g1a/6lTp/IlJjS6OmDgKnVuotJRlvIBaJ8dlGO3VH/ACWkRDGPhEMDZcSBhx4qDQ1PPamosnj5DfS9uBbUs635PLYStvrAQN8TwIsalWtt8CC7Bi1EEpCUsHlR6Dq9+TGiz1gIgi9ryNlNcCbGgD/wkVRX52AQenBsGuBuFtxaZ/DZeAXfKh2KToN/nkLK8ffJoQMu+19hCtVtWx72Us/YRdliyOB+8lWfvIA/kyooRaZb/MogJrDtNhqExedhGlKQ0hBW01kuE67AUrRq/wAfkoF2A2GiEGqYLAuvzsNLD1BYLZplFCr5U4IXKIMH9UmPI4ZyIgIfyFA44JVwRdwwzLrWol/glSxIP+aXGhvoTrOBHkIVUPfSBVVe2PsKFJ7E4A/3KjyPn35OVHBacgZjmm5bQbcbVV5RMl6/Ypf41kKwUEFKjfh8ILED1+Shd9tOypsR+Q3QM8YdhV/ghYe4Pyb6sgILF1SBF6V2rgCxu+KIDI+I/wCIdBOWxRZddexdGql5EwZWkUqQ0XAFtnRzIRo8dPyL1B7BHYfaIgSuR6XzMmitKlFHnofIVb5/YhEa0u3yMs05axb72ppDVvIdBV1yoymxvnyEig0xsbQ1MoMeZEt3Tkc5c5fszYp8PsZtLDpA" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "JjjFkss+xhT5Fv8AU6P/ABen8Tlj/wBpw/iLQFFod/8AE0NMTdt4i3+E5fLjz+yP+9hr+qdP9RvSJb35P+cEuEBbnkz/ABQ6/BqYoy4IEjfjH/66dnt9htux0qzWM3LCAQ3IBZNtDn8Gav7bDRrP/DeH8/8AgOH8mCnTA1+0QisNY6EwmCt/tAsQWnpACo8Z2/hib7Cbd5EoX8Jx/gj2FJS6CI1Cr/M9z/2/8f8A/9k=" $sFileBin = Binary ( _Base64Decode ( $sFileBin ) ) If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath ) If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\' Local $sFilePath = $sOutputDirPath & $sFileName If FileExists ( $sFilePath ) Then If $iOverWrite = 1 Then If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin ) Else Return SetError ( 0, 0, $sFileBin ) EndIf EndIf Local $hFile = FileOpen ( $sFilePath, 16+2 ) If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin ) FileWrite ( $hFile, $sFileBin ) FileClose ( $hFile ) Return SetError ( 0, 0, $sFileBin ) EndFunc ;==> _Person7Jpg () Another person to find !1 point
-
Transparent GUI with solid label controls
JohnOne reacted to mesale0077 for a topic
#include <Constants.au3> #include <GUIConstantsEx.au3> #include <Misc.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global Const $SC_DRAGMOVE = 0xF012 HotKeySet('{ESC}', '_Exit') Example() Func Example() Local $hGUI = GUICreate('', 100, 100, Default, Default, $WS_POPUP) _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF) Local $iButton = GUICtrlCreateButton('Drag me', 0, 0, 100, 100) GUISetState(@SW_SHOW, $hGUI) Local $aCtrlCursor = 0, $aMousePos = 0, _ $fMove = False, _ $iBefore = 0 While 1 Switch GUIGetMsg() Case $iButton MsgBox($MB_SYSTEMMODAL, '', 'Button click') ; ExitLoop Case $GUI_EVENT_PRIMARYDOWN $aCtrlCursor = GUIGetCursorInfo($hGUI) $aMousePos = MouseGetPos() $fMove = False $iBefore = $aMousePos[0] + $aCtrlCursor[0] + $aMousePos[1] + $aCtrlCursor[1] ; Detect the co-ordinates before. While _IsPressed(01) WinMove($hGUI, '', $aMousePos[0] - $aCtrlCursor[0], $aMousePos[1] - $aCtrlCursor[1]) ; _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, False) ; If the co-ordinates are different then it moved. $fMove = Not ($aMousePos[0] + $aCtrlCursor[0] + $aMousePos[1] + $aCtrlCursor[1] = $iBefore) $aMousePos = MouseGetPos() If @error Then ExitLoop WEnd ; If it moved clear the button message. If $fMove Then Do ; Clear the button message. Until GUIGetMsg() = 0 EndIf EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>Example Func _Exit() Exit EndFunc ;==>_Exit or #include <Constants.au3> #include <GUIConstantsEx.au3> #include <Misc.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> Global Const $SC_DRAGMOVE = 0xF012 HotKeySet('{ESC}', '_Exit') Example() Func Example() Local $hGUI = GUICreate('', 400, 400, -1,-1, $WS_POPUP, $WS_EX_LAYERED+$WS_EX_TOOLWINDOW) GUISetBkColor(0xabcdef) ; Must be within GUI window Local $cLabel = GUICtrlCreateLabel("", 100, 100, 200, 200) GUICtrlSetBkColor($cLabel, 0) Local $iButton = GUICtrlCreateButton(" Exit ", 10, 10, 80, 30) _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF) GUISetState(@SW_SHOW, $hGUI) Local $aCtrlCursor = 0, $aMousePos = 0, _ $fMove = False, _ $iBefore = 0 While 1 Switch GUIGetMsg() Case $iButton MsgBox($MB_SYSTEMMODAL, '', 'Button click') exit ; ExitLoop Case $GUI_EVENT_PRIMARYDOWN $aCtrlCursor = GUIGetCursorInfo($hGUI) $aMousePos = MouseGetPos() $fMove = False $iBefore = $aMousePos[0] + $aCtrlCursor[0] + $aMousePos[1] + $aCtrlCursor[1] ; Detect the co-ordinates before. While _IsPressed(01) WinMove($hGUI, '', $aMousePos[0] - $aCtrlCursor[0], $aMousePos[1] - $aCtrlCursor[1]) ; _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, False) ; If the co-ordinates are different then it moved. $fMove = Not ($aMousePos[0] + $aCtrlCursor[0] + $aMousePos[1] + $aCtrlCursor[1] = $iBefore) $aMousePos = MouseGetPos() If @error Then ExitLoop WEnd ; If it moved clear the button message. If $fMove Then Do ; Clear the button message. Until GUIGetMsg() = 0 EndIf EndSwitch WEnd GUIDelete($hGUI) EndFunc ;==>Example Func _Exit() Exit EndFunc ;==>_Exit1 point -
For version 10.5.2295 to be < 10.5.23 it needs to be 10.5.22.95 else nothing makes sense. Moral: version "strings" need to strictly adhere to a fixed set of rules.1 point
-
Something like that ? #Region ;************ Includes ************ #Include <File.au3> #include <WindowsConstants.au3> #Include <GUIConstantsEx.au3> #Include <GDIPlus.au3> #EndRegion ;************ Includes ************ HotKeySet ( '{ESC}', '_Exit' ) Opt ( 'GUIOnEventMode', 1 ) Opt ( 'MustDeclareVars', 1 ) _GDIPlus_Startup () Global $iPicNumber = 10^2 Global $sPicturePath = @TempDir & '\person2.jpg' Global $iPicCtrlWidth = 60, $iPicCtrlHeight = 60 Global $hGui, $iMargin = 0, $aSplit Global $sCurrentPicPath, $iPicCtrlExStyle = $WS_EX_STATICEDGE Global $idPicCtrl[$iPicNumber], $aPicPath[$iPicNumber] ; used for save pic paths set to Pic If Not FileExists ( $sPicturePath ) Then _Person2Jpg ( "person2.jpg", @TempDir ) $aSplit = _ImageSplitter ( $sPicturePath, Sqrt ( $iPicNumber ), Sqrt ( $iPicNumber ), 'jpg' ) _Gui () While 1 Sleep ( 50 ) WEnd Func _Base64Decode ( $input_string ) ; by trancexx 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 _Exit () _GDIPlus_Shutdown () Exit EndFunc ;==> _Exit () Func _FileGetNameWithoutExtByFullPath ( $sFullPath ) Local $aPathSplit = StringSplit ( $sFullPath, '\' ) If Not @error Then Return StringLeft ( $aPathSplit[UBound($aPathSplit)-1], _ StringInStr ( $aPathSplit[UBound($aPathSplit)-1], '.', 0, -1 ) - 1 ) EndFunc ;==> _FileGetNameWithoutExtByFullPath () Func _GdipSetInterpolationMode ( $hGraphics, $iInterpolationMode ) ; for compatibility with AutoIt 3.3.8.1 Local $aResult = DllCall ( $ghGDIPDll, 'int', 'GdipSetInterpolationMode', 'handle', $hGraphics, 'int', $iInterpolationMode ) If @error Then Return SetError ( @error, @extended, False ) If $aResult[0] Then Return SetError ( 10, $aResult[0], False ) Return True EndFunc ;==> _GdipSetInterpolationMode () Func _Gui () Local $iGuiWidth = Sqrt ( $iPicNumber ) *( $iPicCtrlWidth + $iMargin ) + $iMargin Local $iGuiHeight = Sqrt ( $iPicNumber ) *( $iPicCtrlHeight + $iMargin ) + $iMargin $hGui = GUICreate ( 'Guess the person in the picture', $iGuiWidth, $iGuiHeight, -1, -1, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST ) GUISetOnEvent ( $GUI_EVENT_CLOSE, '_GuiEvents', $hGui ) GUISetOnEvent ( $GUI_EVENT_PRIMARYDOWN, '_GuiEvents', $hGui ) Local $x = 0, $y = 0 Local $aList = _FileListToArray ( $aSplit[3], '*.jpg', 1 ) ; based 1 For $i = 0 To UBound ( $idPicCtrl ) -1 $idPicCtrl[$i] = GUICtrlCreatePic ( '', $iMargin+$x, $iMargin+$y, $iPicCtrlWidth, $iPicCtrlHeight, -1, $iPicCtrlExStyle ) $aPicPath[$i] = $aSplit[3] & '\' & $aList[$i+1] $x += $iPicCtrlWidth + $iMargin If $x + $iPicCtrlWidth + $iMargin > $iGuiWidth Then $y += $iPicCtrlHeight + $iMargin $x = 0 EndIf Next GUISetState () EndFunc ;==> _Gui () Func _GUICtrlSetImageEx ( $icontrolID, $sImagePath ) Local $aCtrlPos = ControlGetPos ( $hGui, '', $icontrolID ) If @error Then Return SetError ( 3, 0, 0 ) GUICtrlSetImage ( $icontrolID, $sImagePath ) ControlMove ( $hGui, '', $icontrolID, $aCtrlPos[0], $aCtrlPos[1], $aCtrlPos[2], $aCtrlPos[3] ) ; reset control pos. EndFunc ;==> _GUICtrlSetImageEx () Func _GuiEvents () Switch @GUI_CtrlId ; @GUI_CtrlId : Last click GUI Control identifier Case $GUI_EVENT_CLOSE _Exit () Case $GUI_EVENT_PRIMARYDOWN Local $idCtrl = _GuiGetCtrlId () If $idCtrl Then $sCurrentPicPath = $aPicPath[$idCtrl - $idPicCtrl[0]] _GUICtrlSetImageEx ( $idCtrl, $sCurrentPicPath ) EndIf EndSwitch EndFunc ;==> _GuiEvents () Func _GuiGetCtrlId () Local $aInfos = GUIGetCursorInfo ( $hGui ) If Not @error Then Return $aInfos[4] EndFunc ;==> _GuiGetCtrlId () Func _ImageGeneratePathByCoordinates ( $sBaseDir, $sPrefix, $x, $y, $sExt='jpg' ) If Not FileExists ( $sBaseDir ) Then DirCreate ( $sBaseDir ) Return $sBaseDir & '\' & $sPrefix & '-X' & StringFormat ( '%03i', $x ) & '-Y' & StringFormat ( '%03i', $y ) & '.' & $sExt EndFunc ;==> _ImageGeneratePathByCoordinates () Func _ImageGetDimension ( $sPicPath ) If Not FileExists ( $sPicPath ) Then Return SetError ( -1 ) Local $hImage = _GDIPlus_ImageLoadFromFile ( $sPicPath ) Local $aRet[2] $aRet[0] = _GDIPlus_ImageGetWidth ( $hImage ) $aRet[1] = _GDIPlus_ImageGetHeight ( $hImage ) _GDIPlus_ImageDispose ( $hImage ) If $aRet[0] And $aRet[1] Then Return $aRet EndFunc ;==> _ImageGetDimension () Func _ImageSplitter ( $sPicPath, $iColumns, $iRows, $sType='jpg' ) If Not FileExists ( $sPicPath ) Then Return SetError ( -1 ) Local $aDim = _ImageGetDimension ( $sPicPath ) Local $hImage2 = _GDIPlus_ImageLoadFromFile ( $sPicPath ) Local $CLSID = _GDIPlus_EncodersGetCLSID ( $sType ) Local $w = Int ( $aDim[0] / $iColumns ) Local $h = Int ( $aDim[1] / $iRows ) Local $hBitmap = _WinAPI_CreateBitmap ( $w, $h, 1, 32 ) Local $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP ( $hBitmap ) Local $hGraphic = _GDIPlus_ImageGetGraphicsContext ( $hImage1 ) _GdipSetInterpolationMode ( $hGraphic, 7 ) _GDIPlus_GraphicsSetSmoothingMode ( $hGraphic, 2 ) Local $sPrefix = _FileGetNameWithoutExtByFullPath ( $sPicPath ) Local $sOutputDir, $iSuffix Do ; create a directory based on image name and with infos on settings. $sOutputDir = @TempDir & '\SplittedImages\' & $sPrefix & '-' & $sType & '-Row' & $iRows & '-Col' & $iColumns & '-' & StringFormat ( '%02i', $iSuffix ) $iSuffix += 1 Until Not FileExists ( $sOutputDir ) Local $sTmpFile, $k For $i = 1 To $iRows ; split from left to right and from top to bottom. For $j = 1 To $iColumns $k+=1 $sTmpFile = _ImageGeneratePathByCoordinates ( $sOutputDir, $sPrefix, $i, $j, StringLower ( $sType ) ) _GDIPlus_GraphicsDrawImageRectRect ( $hGraphic, $hImage2, $w*( $j -1 ), $h*( $i -1 ), $w, $h, 0, 0, $w, $h ) _GDIPlus_ImageSaveToFileEx ( $hImage1, $sTmpFile, $CLSID ) Next Next _WinAPI_DeleteObject ( $hBitmap ) _GDIPlus_ImageDispose ( $hImage1 ) _GDIPlus_GraphicsDispose ( $hGraphic ) _GDIPlus_ImageDispose ( $hImage2 ) Local $aRet[4] $aRet[0] = $iRows*$iColumns ; pics number $aRet[1] = $w ; pics width $aRet[2] = $h ; pics height $aRet[3] = $sOutputDir ; directory Sleep ( 500 ) Return $aRet EndFunc ;==> _ImageSplitter () Func _Person2Jpg ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) Local $sFileBin = "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAGQAZADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDmZic4POBWZOp3AnjBq9K3zGqco3N716FPYxmXbG8kt2DIxBrv9K8QGS3QOMsB2NeYoTk5PStPT9RNqDnoaucU0R1PVJNdto4C/mDAXJ9q8j8W+ITreosUYpbRDAHc0a1rRaIiJyEIwB6+9cddXeWI7kcmuKpo7I2iuoy6uC57elVQ2X56U1jimhsEZ9axLHBTnJPU06QYIANN5AA7dakIyiMB04NADOBwDyKmBC89SO9QDAbpk1KfvDPXsKbYE4Ytz09aeils7SPcnpUAkO36dqAzMQFGTSAuLhTgnJ/Snj1421AgXIQ5aQ9farAUDDPg+1IYudybiAq/qaEQvtByqZ6A8kU151YjKhiOgHQUu+R85OwH86LgSlY1bqEUdKDMGQqqYX1NRKpHoPV2/pTyAcZ3MD3p7iGPnYSDu9TnpSWyfvA7OcegFOaHHJJUdh6/WkUJHkAFz+lSx3LiTpHja20+rcirKz20soIzuI5+Xg1iT3RjOCoJHrTor9yVKdO4x0pWGmLfSCS6baMDPSo2IVwfyFOnnLSBnAA9MVG5AdifTrTuDGhi0oH4mnGTcW5xxjFVxMASe/rUZl3MfTpTJLSFVQZ5PrUhlKrwcE9ao+d830pWl+XOfmbtRYC9G8S5duW7CrCzxqAc4UDpnvWJ5gyOelShw2F5x71WwWLU8+8nBAB5wvNQMhZN6gkZxg0+JlUnONvoO9OaUueDtA7CncCARyEgnEa+/WhpDGAUAGeOep96UjjcTzTCyrlyMAevU0rgaFvq09m6CLKkc7h1rafX47u3hDTTb4+gZ8YPtXLMrTbAoKjqTUiWmHALE96bkKyPYvBXilVKQy3AKkfLu4wf616Zb3cdygYHCnoc8GvlqO5a3kDoxwgwOa62w8VasqQrZXLfuxlQOhPoc1DjFlKTPfyOM9qSuI8HeM21tTDdbYrtB88ZOM+4rs0lVxwc1kWP701+lO681HJwK0gSyncEDOKxr04Qmta4YYPp61iXzHaea9GitUc9RnN6g33vU1zVwMsefrXQalJ1wa56U8mvXjojje5Jaj06VrxAEDpWXann2rVi7evancDAkJY4A/Kp7awllUtsq3Y2gllQbc5PNdRDYrtCqvAryIuyOyW5xL6ZOoJ2HJ9BVG43RL5ZGHPHNennTgqjivJvFd4IdTngg6r8pPvUzq2QRjdmPqF0Hl2q2QvFZzsCcbvwphBLDJppwDXE3d3Nh+5Scd6aSucikA6n0oC7V56mkMlLkg/KBgc8UgchQOx600nDAk9adtB+bdgemKYDiq4BX8aAAANxpQo5wT9KlMSkDPWkIiUF+vA9al3bcqg/GnqpIC8Y+tORMMRk/gOtADU3KwwPqakIdjkDI9+1SIAoyQRn1prPnAHI9OlSMRVPQYz3NWMxxpncXf8AlUKiQ8RoBnqTzUzRbVxJcHI/gUUAIknmYDL+dWDGCFAZ1x2IqCMnJMSAHHJPU1F57RZZpBn35qhF5Iodp3ZY9txwKhmRlB2siqR25qhJqLFdo2ED1qm1y7N94jPp0oAdO2ZD8wP0NEDENkcc9aZuD8nhvp1qSMlf4d2fShjRblBdIjnJ3YJ60yRGLuQMgdKuQQCWIFQwz17jNWWtjJH8owSMGs7l8pzrA9MUzpmtKW2KTMjDB6VXmgIGQOnWrUkS0VB+tHfJ5NSeXipFh3LnvTuKxWz9KUMQD3qVoCAePxphXFF7hYPNGMDgU+OTGetRYANKGIGKGIsbd/Oef0FHlgc5B+tRh8gDjFSIwUgt09KAJY1O4Fm49PWrRuI41xjj9TVUzDb0GewqJmDckjI9KAB3UvyNxPapba6kgfcJGVh0A6VUJxnaeT370wrtGWPPoKdgOmsNTnj1CDUIlwUIDkHt617homrvdQLLICWwCSvRl9a+crS7aDJ3FR3GetegeFfGDiFbLbh0OY3z29DUTjpdFRfQ9yRww45FNkJqno99Hf6VFcIVORhsHoasyNkU6YSKNyetYN8/BrZun4PrWDeuDkDNenQRzVDm9QbqKw5ck1r379enWsh+uDzXqLY5SzaDuea1ohkcZrMtBjoPpWtEMADv3obBDtHg3zKe1drZ2y7cbcVy3h+MbQx43dK7i0KPB05WvFmzrRVvFS2hllk+WONCzE/Svm7Vbv7Zql3cA58yQkfSvdviHqX9neGJsMVluPkXHpXz+yANk1zTl0NYohySeaUjHNBIOQOlN6/561IxQflzS4DL81BAH0pMgDmgZIQpOM9KArGmbgecU4Mx6CgRPGCTgtj0p4AByWHvVYMwGeKUEDG4gfrSAtiSNTkyZ+gp/wBoGPlRiex6VUEu0EBQT/OnGSSTlm2ChICwZ5GPAAP+1SrtzmQ59hVTzFTIz+NI07N04x0pWGXjdICRkBfSjzAykkFV9e5qCGAH53GT1AzS3EuOByx9KBDJ71gAsY2D681U/wBYeSxNOEeWyxzmrKW+QO31obSGkVhA3pT0tGbvitGG0LYAfn1xWnb2IfAA3Vm6ppGFzCSyZWwwJz0q7FprkAjg10VvpTSELjA9CK6TTPD5JBeMFemCODWMq9jaNBs5Ww02UKGaNih/u9a0J7EbFMSdPvcda9AttGjiVVCAelWX0a32ZMYzWXt29Tb2KPKbzRi6rcAHng/41mz6XKpK7Cykc8V6td6HbnJVWV/UHise406TDIWxjuRmj24fV7nmq6a5PzJj3xVuHRyYwwwMjvXZ/wBlxbfnOT2pjWSJhfLPNV7cX1Y4qXSpFRhtPFUJNObaWxivS49PG1nkTBbotU73TI22jZjjoB0ojibMHhtDzN4CDg8Go/KI612d3oC4JUYNZEulSA42/lW8ayZyyoyRhbSPxoOa0ZrFo85HSqUqFD04rZSTM3FoiBJOSaNx6YpQVJppC9s1RI3OO9Hvj8aXb+VDLxkdaYDP51asrl7a5SWJsMp/Oqv1pwyrAjrQwPbvh9r6ecICCsVxzt7K/tXpEo618/eE76SKbIcF0ZXjH8695hn+0WcUwP3lBNKC1GyndDAPvXP34K9Me1bt6+Ac1z1627I6V6uHRy1Wc3fNy3c1lsecVoXrZkIGTWe3EmMcV6PQ5i/aY4wcGtePnHHNZVouCBj61rRe3SokNDdFv41jRSwGK7K3v41hyGwSOT7V5TbTGMA5" $sFileBin &= "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" $sFileBin &= "KOKspB0bAGPSuRyOyMLDYo2Kj5Rmt3T4BgZHvxVO3j3kZ6itiACMKByaycTVGjAioB8tXo1GOlYNz4g03T1bz7hA46qOSKxLr4hWynFvG+OxPetYxZnKSR3JTcSMAD1qGSJR/H9BXnlx49mcqVwqgdN3NQr4/Kg7lz7mrVNvoR7WK6noDOFOA3fpmnC7YZGM/wBK86PjxTxtAJ96j/4TqM4U5A9RV+zkhe1gz0V71ATk5PtURuc+oNcLF4wgK5yCT3BqdPEqM5XOVboaTjIanE7F7gnA6+9VpJmJIzn6Vi2usRyA7D2ycVcju1kUEMOahp9TRNGhJIBGAMk98VF5jebjHAFV2nwOvFN83c3Uge1QykXZZMEEdMZzVeSXKnBBB70x5wYhiqE0+xSTwKaQrkrufMHahXGTzx61iz6nGjnc/A5Jqr/bsQXcXGB2NWoGcqiNbU2EsRRR2615v4ph8u4jfbyRg1vah4nGcRbWFcvq2oPfsSRwK3owakmctaaktDJJ49aB0zmkxQOldpyikdaKCaTvQBLFkHpmrkcrFApPyg5FVkBQD3/WpDx079ahjR0mnOkrhc5DIVNSaPP5Eklq38LGsnS7kJcqCeT0x2q7dj7NqYkHHmDn0ropT5bSXQiUb6G/sEmcdau20XIA59apREssbA5BGa3LKDzMHAIzzXqOelzlsaVhBjB28Vtwx4A71BaxfKPQdq0I1wPrXDVqm0InzZMMtjoO9Qk54XgVJKdz+g7UgXHQCuJGwbTjn9KlQbRjoPSombHQ5OKaXJxz+ApgWZJgxHJIHbsKcqZUOx69M1XjPzc8+gqyFLjfI34+lJgNLk8D0qI5JxTmfJ+QcfzpMHB7UkwGsuOuTn9KbtXvmlMg9yaaSzAelUwFJA7YPpSAY5HHvScDinoMnrxSGiWGIyOAAT/Wuh02wAILYPtWPbnDAKfx9K6PTuNoGcn171z1ZM1px1NiCNRgACtCGPIOMVBbx7sbhya0YoQp+UYP864ZM74IWNNv8jVhEy2KkSDOMjirCQlGJxUNmthpl+yw+YFLH0ArDvW12+YpGfs9uey/eautRF2hsdu9QSFY85wD2PrVxepMldHJ2/hKSUmS4mYk9R1qaTwZayHmeTpW6brAAB79KSW7VMkkD3zW6kYuCOQn8GJET5dySO+4c1Rn8MuqEG5T2JFdBqGuW8KsBJvfuBWHc6xI8e4iNQemW5q1KRjJQMabQZoxkyhj7VTNhcRdUyKvy6qWJPnAHpwKjS6kc5WYMM55FaXklqRyx6FFYTuIZWGemKvQySKgQtkDpV+CQOQJI1ye9WzZxSDIwOOmKl1NLFKBHZ3DJKASckYNblpdySzbF4jUYrGjtyjjA4FbNgBGnGdx61m2rGsbmyuSucgqO9IGIK7qdBCzjI4x19KjnBAwrZx69qxZuhZZtqZA6VhapqPlxgZ+YnnNWb67W3iLM2AB0rjb6We9kLtlYuwzWsImFSdlZFa81EtKQG3HPJqgyTzvlQ7Griyw25+Xyzju3WrEeuRqcNGuPVa6VdbI5dHuypDol9cMPkCKe7VPe+HzZ2TzPLllHT1rSj1qByojPJ657UzXL1TpLgHk8VPPLmSK5Y8rZxh5HWjtik7D8qUD8q6jnE70oHNIR1pw+7SGTA54Bp5B79RUIJDDipnO1duc96TAWFisgwehzW9cH7ZYxS/xL1Nc6p7Vt6Y/mQPGTgEcGnCSWjCx0mkjzLGI59q63T4NsaH05rlvC0YmjZcn5W5HpXbWsZTAPSup1fcRny6mpar05GKuqowOeaqwLmriKQOelebUram0YnzAxwaTP4+lIAXYntQeOnetyAJ605E6k0gQk1Ifl+v8qYD0Ow7iOewpx3Sn5jgCoQ4X5mP0FNMpJHpSsMnyBkD86jbBPOaYZGPQ4o5PU5NKwhxKgYAzTDknpTgCAcCncbc7TmmMjxjtz71IrEcDFN25JyeDUsagHgfnSYFu0BDZxium09ACvHXvWBZxFj3JPTFddpdqMLuyTj8q5azsdNGNzatIOFY/lWgI2Udj60lrEoUH0q55WTnvXA5HoxjZBbEMwU5wOtWyAGAXkVWiRt+VHXrVoGYAEREn1FZt6jsPkIMOYyMjqPWsW6uHJ6H6VpzRn74SSM9+Kx9RciIszYbHUCtYtGbM691OK0i/eP8AMOdtctfeIJZSVyQufuKf51Ne6bfX8p8lG292brVBNFuLSTcY94z0NddJR3ZyVJSeiK5a7ubWaYL5dugyzep9KpR2/n2NzcvexxvDgrCwJaXJ/h+ldZdX6XWlSWD2wjcD5TGOPxrkrmwmTaTHg44rrTiczTIbaISzIrEkMwDY61tan4fn0WdS5MkLgFTnpUelWQE8JmPlx7gzufQdq67UdYstTuo12MYl4+YcVnOp2NadO+5zMTfuxtztPQ1p6fI7P5cmcds054bRZwkRcxsfmXH3fcVo2diBLlcso6E+lc0nZnSokyWrOucfjV+yt8t0ORV+0tt2fl49Kuw2exwO3pUvuUkT21oSvbOOKqXdqV3cDI/WujtoBxjtUN5Zby/HUVLWlx36Hk9+k15fmCFdxU8eg+tZeu6VcadZ+bIxLMcAdq6Ga9GkajcxvCzNuySo6j0rM1vVxrFoIDbujBshjzxXVTcbHJUTucfeCyLRfYzMRsHmiU87++Palt7QTSOAMALuFWptLeNi4YMo7nrTrdJVLLEpJfgtjitudNaGKg+pmJI2/wDukGrd3cebAse4FevNaMejOp3Oo3H9aytYtzBcgFCq44pJqTG4tIzT8rEDpSg03p1pR9K2RkGKcvTpxSD0pehA6UDJByPcGgknNNU4bingbiVpANH1rW0mXaSp9ayCOT7VZs5dk6ls7ehpNDR3nhs+RrMkK/dkXcPevQrdNwBxXn2luI57O8RgRE2xvoa9KgIOCO4rCrVsilHUsxKVHAxmpy3GO1RqQBignnivKq19TeMT5kLYBAoVQeScUh6+/rTiQor3jkFJAOM01nx0pmc+tGDn60gE68U5E3fwn60+OIsTgdK2ItKf7MsmM5FKUki4xbMjy2HQd6Xy2BwfzrVW0ZRnbuPpUEsTdduBUc9x8hTyxGM05VJ9KuW1o85OE3YParDacy8+Uykd6TqIfIzKePA571LBFuKirRtlBxnn+VWYLcZG0cdzSlUGoF7ToMsoAwP5111hDgAbcAVgaeg8wZ74ArrLNAE57jgVw1pNnfQgXoIxgfKeOlWgdp5B5qKHgAjvU+QRgevJrlOslhVWbqR7VehtQSP3jA+lV7fhsAfnWlCCxx696CWItmCDmWQ+2arz6bbONzoXx61ortU5LZz3p5w/AAA9TVmZz1xZ2qKf3YUDugrImSBQxUgk9AwrrbiBVzk5/Csu4tkyQsAOfX+dEZtaD5Uzl7vTrK5QKEEbH7zL3rKvPD8bzKySk8YyT2rsW05ZCcdBUR0nDkFccV0xquxi6SOSh0JI2IZtwPQHmr9vpiIqxoox645ro4dMjjGACSOfrVj7KGGCgUetDm3uLkS2Mqz062UANEC1aMVpGX2pGFA9KuRWYzwtX4LRU+bj6VHM2wtYqW1gEUtjk1OINj5xVwKpOOlNcDFDY4omgIGD+dXJEQwb+KzMkR4HWrEMheIoc5xkU0ynE4fxXpgF2J41AD8N9a5V7CNCdyHjtXomrRmS3JYZKnpXPvYrL29xSU7Eyhqcy1vGG5iBFSw26ISViA+lbhskHGz600Wir90UOqCpmSLUvJx27dqxfE2mebZs4HzpyK7ZLbgkDFUNStfMgdT0IPXvRCo+ZMVSknE8fI/Gk7VYvYfs95LH02tUGOtesnoeY9GAIpTzzmkABOKXvj0oAUDBBqSM8Fs8DrUWaeB8px06mgAyST7VIq7cN2705Y8pGoxknJqwkQdnU9hUtjR0nhyUOJbQn5J1+X2NepaM0jafEJf9Yo2mvHtALQ3qFgdgOQa9jsZQ1srDrjrXm4p20NoG" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "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" $sFileBin &= "qRIEVBImfwqfPPtUb5yeRVIR4ZHaoO2atJCo4A6VKFzg5wKeB1GeDXOjcYoxxjnFSIhHXvShcjgc08YHToO1NagN2ntjFIUOO1SAALk8nNBG7oTjNAEG0A8jj2qJ1BYKMep+lWZGCrkcsegqBlI5PU9cUIZBJGGJwKqSQ5GDitHlhg9KhkiB49aTVwMeWEjPGQPSqjBozuUfUVtSxEKcDiqU0HPHFAipkOmQf/rUmTg0jo6NuTnPUetLuEgyvbqKQC5yPWkJ9qD09Dnigkjr1qgEyVIYHDDkGuw0q/F7aB2++OGHvXHHmrukXps70Bj+7k4NYVoc0fM0pT5ZHWOgExk5Bxj2qN2zkZ4p7HKDnNV3OFPPPpXGkdjZDKSO9RByGHcUkjcY7ZpF/nVpGbY5m/u5JqrPJjPNPZipOBiqspLZ7VdiJMydSmJfbk1mjk1PduXuHPvioAcY967YK0TlerAdelPxgZIpBxTjk8ntTEM7U4c/lScjNOUZU02AqnBzTpBhvYimgUrHgCkAE8YFNPBHvS5wTRIANopAOI+UDHIpBwead35oIG0GhAPR+3pTj8x6ciolPOe1KThvehoB5O4DHFSR5AzUKnJ4qWHLblzUtaDOtit0fS0mXO1xn6MKwdR+abIxzzXQ6OHk0Xn7gNc/fLuaQjoDWa0Lex3/AIDmJhCnoO/pXeygvEccH+ded/D7LocnABFejMcjAHFaRREiGPO3BPQVMhwKgPMoAPBqwOvHWt4mbHE7eR0NP35GajycH0pAw654q0iSYNnGTzSMfypoP5U4sCOOgoA8e3c9eKMc+wpmeOtOLADmudI3Jgcc55xSGYL1OT/Kqkk2R1xVdp8nGTTSsBea49aYbj361nGfPOelRGc54NAGobj5s8Z7U7zgRz0rKE9PE4HSkBpFkPNNIz7iqgmyOtTJMCDjrTQXHMucjvVSSPA5/M1bLg0yRdwBxmlYZlywY4A5NUpYmj+dBz3962JF9arSRg84pMRnq4kXcvHqKXPHNLNAyv5kY+YdR601W80ZAww6igQE96a3PSndfrSEfN0o3A6jS7wXdipb/WJ8rVNJ3xxXO6Vc/ZbsbidknB+tb8hOMflXHOHLI64S5olWR+SOtAOKilYmSlzkUkArfXpVa4ISFmx2q0kZJxiqGrt5dqy9CaqOrsTLa5zrHcxPqaSgc8U4rtPSu45B0aFm2gZJqQqEOM02J9nI4apPvDe33jSAhbqRSxnjHahh70xBg5NMZMenFNbqp9aUEk0SDnAqQEIxSZ3MM+vWpCMpUYHzD2oAc/DcdqQn5j706QZGexpkqbSB2pgIxOPoacp3YpmafGAWH1oAlUfOAacmd5APNLINrqelIOHyakZ3PhZ0k0m5gkAIHINcvevieVB03cGtzw3MI7S4VwQzLkGsC55ndvVqzW7L6HfeAg0MLFlwrng16EzALyeCK5fwhaKnh6NWHztzXSpHkgsOAMVUCJCxLnk1IeuB0pVFShcAYrdGbGAZHpURBU4FWMfL9KjYc9PzrRMljM4B560obHuDTDzxS5xTEf/Z" $sFileBin = Binary ( _Base64Decode ( $sFileBin ) ) If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath ) If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\' Local $sFilePath = $sOutputDirPath & $sFileName If FileExists ( $sFilePath ) Then If $iOverWrite = 1 Then If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin ) Else Return SetError ( 0, 0, $sFileBin ) EndIf EndIf Local $hFile = FileOpen ( $sFilePath, 16+2 ) If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin ) FileWrite ( $hFile, $sFileBin ) FileClose ( $hFile ) Return SetError ( 0, 0, $sFileBin ) EndFunc ;==> _Person2Jpg () Edit : photo included.1 point
-
This is another approach: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> $hGUI = GUICreate("", 100, 100, -1,-1, $WS_POPUP, $WS_EX_LAYERED+$WS_EX_TOOLWINDOW) GUISetBkColor(0xabcdef) GUICtrlCreateLabel("Label1", 5, 5, 50, 50, -1, $GUI_WS_EX_PARENTDRAG) GUICtrlSetBkColor(-1, 0xFF0000) _WinAPI_SetLayeredWindowAttributes($hGUI,0xabcdef) GUISetState(@SW_SHOW) While 1 Sleep(10) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd1 point
-
Maybe example of _WinAPI_CreateRectRgn() gives you an idea.1 point
-
Wow so many posts, so thanks to sahsanu,czardas, nitekram (again! super awesome), jguinch (very nice), Melba23. By the way I ran you code and got Variable used without being declared.: for $iMax. To all, So far jguinch is top of the leader board, but I will let this competition run for another day or so before closing. czardas, I think these are good because it makes a change from all the support questions we get around here. I was also hoping the coders who stay in Chat might give it a go too, but one can only hope!1 point
-
Just read this and remembered a PM exchange I had a while ago with Champak: The reason seems that the POPM call is not implemented in the UDF. _AudioGenie.zip Download the documentation for the dll here: http://sourceforge.net/projects/audiogenie/files/V2.0.4.0/doc/ #include <AudioGenie3_v1.au3> $sFile_Org = @ScriptDir & "\218_deichkind_-_remmidemmi_(yippie_yippie_yeah).mp3" $sFile = StringReplace($sFile_Org, ".mp3", "_copy.mp3") FileCopy($sFile_Org, $sFile, 1) _AudioGenie3_Start() ConsoleWrite("! Read #1 " & @crlf & "==========" & @crlf) $rc = DllCall($_AudioGenie3DLLHandle, "int", "AUDIOAnalyzeFileW", "wstr", $sFile) ; open the file and ensure its a mp3 (returns 1) $icounter = 0 While 1 $icounter += 1 $rc = DllCall($_AudioGenie3DLLHandle, "int", "ID3V2GetPopularimeterCounterW", "short", $icounter) If $rc[0] = -1 Then ExitLoop ConsoleWrite(@crlf & "-Enum #" & $icounter & @CRLF) ConsoleWrite("Count" & @tab & $rc[0] & @CRLF) $rc = DllCall($_AudioGenie3DLLHandle, "wstr", "ID3V2GetPopularimeterEmailW", "short", $icounter) ConsoleWrite("Email" & @tab & $rc[0] & @CRLF) $rc = DllCall($_AudioGenie3DLLHandle, "short", "ID3V2GetPopularimeterRatingW", "short", $icounter) ConsoleWrite("Rating (1-255)" & @tab & $rc[0] & @CRLF) WEnd ConsoleWrite("----------" & @crlf & @crlf) ConsoleWrite("+ Write #1" & @crlf & "==========" & @crlf) $rc = DllCall($_AudioGenie3DLLHandle, "int", "AUDIOAnalyzeFileW", "wstr", $sFile) ; open the file and ensure its a mp3 (returns 1) ConsoleWrite($rc[0] & @CRLF) DllCall($_AudioGenie3DLLHandle, "short", "ID3V2AddPopularimeterW", "wstr", "kafu@amt.cc", "short", 255, "int", 999) $rc = DllCall($_AudioGenie3DLLHandle, "int", "ID3V2SaveChangesW") ConsoleWrite($rc[0] & @CRLF & @crlf) ConsoleWrite("+ Write #2" & @crlf & "==========" & @crlf) $rc = DllCall($_AudioGenie3DLLHandle, "int", "AUDIOAnalyzeFileW", "wstr", $sFile) ; open the file and ensure its a mp3 (returns 1) ConsoleWrite($rc[0] & @CRLF) DllCall($_AudioGenie3DLLHandle, "short", "ID3V2AddPopularimeterW", "wstr", "kafu2@amt.cc", "short", 155, "int", 333) $rc = DllCall($_AudioGenie3DLLHandle, "int", "ID3V2SaveChangesW") ConsoleWrite($rc[0] & @CRLF & @crlf) ConsoleWrite("! Read #2 " & @crlf & "==========" & @crlf) $rc = DllCall($_AudioGenie3DLLHandle, "int", "AUDIOAnalyzeFileW", "wstr", $sFile) ; open the file and ensure its a mp3 (returns 1) $icounter = 0 While 1 $icounter += 1 $rc = DllCall($_AudioGenie3DLLHandle, "int", "ID3V2GetPopularimeterCounterW", "short", $icounter) If $rc[0] = -1 Then ExitLoop ConsoleWrite(@crlf & "-Enum #" & $icounter & @CRLF) ConsoleWrite("Count" & @tab & $rc[0] & @CRLF) $rc = DllCall($_AudioGenie3DLLHandle, "wstr", "ID3V2GetPopularimeterEmailW", "short", $icounter) ConsoleWrite("Email" & @tab & $rc[0] & @CRLF) $rc = DllCall($_AudioGenie3DLLHandle, "short", "ID3V2GetPopularimeterRatingW", "short", $icounter) ConsoleWrite("Rating (1-255)" & @tab & $rc[0] & @CRLF) WEnd ConsoleWrite("----------" & @crlf & @crlf) Re: Value of ID3v2 POPM field and MM's Rating by MrSinatra ยป Fri Dec 14, 2012 9:31 pm i do not use MM, but here is what windows explorer uses: >> 224-255 = 5 stars when READ with windows explorer, writes 255 160-223 = 4 stars when READ with windows explorer, writes 196 096-159 = 3 stars when READ with windows explorer, writes 128 032-095 = 2 stars when READ with windows explorer, writes 64 001-031 = 1 stars when READ with windows explorer, writes 1 windows explorer uses this syntax: Windows Media Player 9 Series | 255 | 0 (the 0 is playcounts as per POPM id3 spec. note the ID string isn't even an email address)1 point