Jump to content
Sign in to follow this  
wakillon

ImageSplitter v1.0.0.7 Update of 26 March 2014 (Multi Images Split allowed)

Recommended Posts

ImageSplitter v1.0.0.7

20140326182230.jpg

 

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 !  ;)

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Might be a good idea to name the files like <filename>_yyxx.jpg whereas yy is the row and xx the column because it it easier to assemble later the image together.

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Might be a good idea to name the files like <filename>_yyxx.jpg whereas yy is the row and xx the column because it it easier to assemble later the image together.

Br,

UEZ

Hi UEZ !

Did you see the name of the directories created for stored the splitted images ?  :)


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Yes, but it would be much easier to parse the file names only:

from (4x4)

C:\Tmp\SplittedImages\100_dollar_bill-JPG-Row4-Col4-00
100_dollar_bill_0001.jpg
100_dollar_bill_0002.jpg
100_dollar_bill_0003.jpg
100_dollar_bill_0004.jpg
100_dollar_bill_0005.jpg
100_dollar_bill_0006.jpg
100_dollar_bill_0007.jpg
100_dollar_bill_0008.jpg
100_dollar_bill_0009.jpg
100_dollar_bill_0010.jpg
100_dollar_bill_0011.jpg
100_dollar_bill_0012.jpg
100_dollar_bill_0013.jpg
100_dollar_bill_0014.jpg
100_dollar_bill_0015.jpg
100_dollar_bill_0016.jpg

to (4x4):

100_dollar_bill_0000.jpg
100_dollar_bill_0001.jpg
100_dollar_bill_0002.jpg
100_dollar_bill_0003.jpg
100_dollar_bill_0100.jpg
100_dollar_bill_0101.jpg
100_dollar_bill_0102.jpg
100_dollar_bill_0103.jpg
100_dollar_bill_0200.jpg
100_dollar_bill_0201.jpg
100_dollar_bill_0202.jpg
100_dollar_bill_0203.jpg
100_dollar_bill_0300.jpg
100_dollar_bill_0301.jpg
100_dollar_bill_0302.jpg
100_dollar_bill_0303.jpg

but you decide. ;)

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Yes, like a 2d array.

You can do something like

For y = 0 to YY
      For x = 0 to XX
        Copy image to main gfx handle at position x, y, w/XX, h/YY
     Next
Next

more easily.

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Ok, i will add this feature.

In fact i have done a Gui - Puzzle where you can drag&drop from external to gui controls and from controls to controls !

So, i did not want to give them a name too "easy" for replace them !  :D

But i will find another way for this puzzle game to be a bit hard to do !  ;)

Thanks.


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Really Usefull I think UEZ's idea is good.  really Fast 551 parts  about 10 seconds. Thanks nice share.

Saludos

Share this post


Link to post
Share on other sites

Great Idea, and script, thanks for sharing.

I have a suggestion if I may.

Ability to remove/replace sections one by one, and create new image from that.

 

Hum...can you precise your idea ? 

Are you talking about a kind of puzzle bkground ?  :huh2:


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

There used to be a TV game show in UK, part of it was to guess the person in a picture.

The picture started off with one segment, and one was added each time, the contender chose the square to be added.

Something like that.


AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

There used to be a TV game show in UK, part of it was to guess the person in a picture.

The picture started off with one segment, and one was added each time, the contender chose the square to be added.

Something like that.

 

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 = "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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 &= "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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.

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Yes.

Sorry for late reply, I was busy making my own, which is a very simple version of your's above.

Your ImageSplitter came in very handy for getting needed gui and label sizes. :).

I think there are many puzzles you could create with your code, even just mixing the split images up would be a good one.


AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Share this post


Link to post
Share on other sites

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 &= "K5jEcxdxEuIx0Qu0ROKrhUdiK13Fl87izcWWN6WXxuFyXo9bLsss30N3o4nCOCqKZtGPSZNEo2V+EGbvykndcw7ihCQiPao4E1ati4L4Tt2WiWRVvN6Nwp8XxfEXpej/AKbjcWWWXxuHI9iRu1tjPpbRtxN7pj0lyTXEltdJiVS2qQ0hckIi6QtOtOtLIuzg3cW227JOiy2biEuUxSE/xUrLFIuyyxMdDdF2jcT5JNIbLo3xFIU2b0yxnKL0lVduUTrSatyVF1KPfcMdkOon2pWbqN24jKhaWKSQsjLLH2hosss3ifMZlliFKlavTcN2PIe0lljUsvHsN9EZaUJG5prKzemewuI5I9n5Wby9w4jJokJusZjXKQtEUq6HLn2G4V0oiiLFZ6j+MfxpEscovaUxujcbhMUxMWnRbpuiUh5T2jkOZuE3ahZHEyMRY2PGbKKKOBscjcRel8vomrMsTCzGQYnx9IjV7uGzdZZHuNsjAhjIqjgckjc5Eo87EySJRTUo0WWKVEOSCVVwNjJOm2NjkbiMbMfjkcSNkSMDbQ+RrSSKHRJcPtMUiy+EiRkRij+UCCFpFFkxliIohZGhMb5sUknLLGnngh54jzRZwTtklwIxdwRtJQNjHAnigZntJSEQq4qjfS91EclkZMWS9GOmn1LgbskTRZERRYyRCNmNXJd/UWRLRIkiyNEZqoyjSzbB+bBEvlKU/k8zJednkPy8rS8jIRz2bp1DyJxIZoTNtp8EDE6lDooZIycR8nL+TyOTx9RZ7miXkpH8icj3ZEv50okfk8iIfKzQvlLUfNgxZ4NyywG0hSMis+4MihutOxmPvE2xH2QZNCW5ThJFWbET2ollYmyUrMWMzR25NEjFi3Tlgo6Hjsxzo3QkmpRMCkY3cY6Oxnkp7Mn7KNNDlR+TNlEYORmg1kl3pFvdTRu59+WJi8hsg7KuKxNuGNRJ5EhNybOhuiJ4/JWm0/VrlSjPGRyqQ1tM3skPA0ehn8dsXiGLxpGTwpZiPxE2R+DsXxG0x/Gxxk/GRk8LeR8WcXHHIh4cJj8TavXsx47qHZIqjyf0nge+PgSmn4ccUNvMsWSoeJkZi8acTyvCm2/j8kiXi5McvQYPH/KaMkWW0WYfLp4/IR7SeSRHE2lWNbrd2dqWVY4eH+7EIkkyM6IZIsnhxyH7YE8smsf5P+PEWDcQxq/UmQxiVD9m5SdvMke0eTjHOFVFm5RJXNP9cZERJcOzKiOOpRltg8WOY/HxRP8AyRHYRkqU4OVwROOKQ8GFGzGZIRJY0yXjmTxSeLa4UQyKBjW9y4HJyaiqfOnmcR8Z1OQjkto5ZU4iySqMpsjj3jwbXDIRVJ8KEtsdqYoM5gnKJv2m83247LpoWNsjwNkeoaS6kTEii6Gzo3s3kZcppii91VLbY4kscSUefXZ5OFOP8eZCWwjOyjYbDrTzlzDhS0TFbKR6+FBI/USnI2InhtQzSgbo5UrOB5tpLPuHkQ8yR/IN7kYoSbxYEk+DvSJHRkibsXIiXMcm4ktp7DfFkXQpq1lpexDnY5Ubm9J5IwjzklsP46PQh46NqRKiXLPM5H+ncRESNIXW5EpUPJJlZiOXYe2DUnFP3yRLPY8zZLIbhQlIxYSGKpYse2L4OytIkOz6ZkEURdNwU1PAqn441PG45OVyQcEvZEc1I2s5k5yjCOSe+ccjgY5bhFkpEiSGJk/yl9Qd4hCsvmPLbo2NuFVkaqeGcyWGcW45L25GeuYsMiPjkcBDFRDFYoRQjJ0js+ooXAhjpE0hd2MxyHGxwZPFuJeJxLFKJ7JxfvZHytp/NTJ+ZZ7N7UomO2vSmRUov2In1ZMkyJ9pfjiXBEQut1kY7dN20hGyyz12v46r1xv1mwjEUEKqXf0+StYiEhj7ycL7Q+SP4uPKNo8aHgM2CNS8Un4kj0OJ65HpMVwlGS2qW038TipDuKb5fOqH+2FH2kI7FSV8csUOaoRGJsPW6jhV7T1odI221HhPT7bIjIkexjfMiWu4gxFH2xwTNg8RLChYEetIeKMhYnFrRzGyXb5Pv6lLbHZZifNc6IQhLRKyhERWVrGItK0eiQyK4jp9Ptj5RekBM7KJatDXAyiKdsaJFEj7rl8Rkmz2cYeZi0R2IT0R2lEqv6bToX9JF6WfSRZXOj0fMiLI6fbRV6PuhrTm1pLpvhsejJ8RhTJI8b/oWfURC0bsjwreli4RXNn1wWM7T6fBFnYteGPSXTZuICIC76L/AKN6Ncn+iVkqplFnZndY1PijGvyj0+yOtsQhy5jOyPJwITPq6d8suxyG7JdIXBErmjkZIZNCX5Q4EIff9KHyren2+CxjGtH39+T+qiZsE8E8f7aIWv0jrVaLg+7ovluhyYps3WIo+4ogIrT7n2xkYD4nGRGVG6/6MY2fb4JWWMofbYx9mcRmwQzwzeLLx8rELoWn3Zyz7Quk9Nw5c8obZei4EN2di6gLS6GS5cmNkOU0XRdJS/KMizcXRY3pKVEpULS3uGNl6Z+xGeClikuRa2Jn0JiLo3CkzcyUj2G+j2IjMTsvjTciHJdEpm/8VcnPgmyyMqZJ7Zbt2imKXNl/0lVv8iSH1fE+2+H09MybyeH8Y5FjdxycTQnyu9FxokRGJ6c1vHIlko9hDkVoxsm6hGXF6QbRKbPYbtpvJTtN2SZuIS/DIyM7LL5Uy7Qi+b4bPqRY5c3pIl2eH4kIx18pVmQuxOtLLL4RYmbi7HRJnZCFkMIsa2r8ckneOEuUxCdLdwWK0PrcqnMsU6g5kYpqUa0U+IsYmbjecFtDJdF8jY1xfPj/APAT089bfIELq+LLF0mXT3qt16bizhkMZjgJJD4M06lHNw5cxzEcqLNyS9ipSR7OZTVSY5q7JZCMuYdbU1PExcCmbhF6bi7JPm+G9ftvn/WH/iLT5SH/AK2IYmXomb+d3P2pl6JEYsUURW0YzyYk90D+TkRj8xN2LI69jN1kZ0e0lN252SyRxkvJnIjOTMC/KDYk9rjxKNNcHZ+Z0WWbuZ2yzdp9H2u4f87E9Pk1/wCf3p/pssc6E9VyRSIopLSAmyh9TjZlxksdE8ZhzSxCkp6OVLebmSkZcu1K5NRMcOcUOYiN1klaad273EpG49pJ89Pdz9xZvR+w+4f9F+rEI+QV+N9piKP9dj4X1RFNkY6KNEntIuyJFo+vqUSUecmNMyYxwE9rhnTG1RaSyZbPqKIQIRIKiCOlR2TUtziOI0ySoZTbofCV2SExs8aO7yRi08lbvG++i7O9aNtiQlYu0qVs2uUlwJ2kJ/iijaicVWSBOJKOiY3oiiETGiEOMekUyj75JD4JplWNIpm0f4a3xZZ8bHd5QxaSVxyR2z7I6R5FRtQkJFcRWkqFGkkxWhdWJrVomrMuMnjHGh6o2kI0RiY48dJG7hvSqLQ0SijbtFA2tLbFjSuuWuG+H0z4mP5MYhaebHb5HRVsXGiI9beKEnXLK5pl0b0KZB2XRejHAlAyYjJjY8bva7QoEYEYcxjbXSLNxZf5Xx0bfxaVxjwok2yXLlEdEiiWnxcNvjjExafJw5+os3axSraQPvlqhpV+pLIPKRykMp7EyMhSNyq1W7lqycB4j+Oemn6RRoVITVJlm43cxmJqk9JMX70O0pRe6qMn7SJPltskR5PHh6/HYxC08+G/xpC7sQmQ7sUqF3fFtabTOmTx5ZSWDPAWfLAj5aF5hHyj+Sz32LKLNR7LXsRarej28ubR7XfuPfR/IPcme5CzW8bs5agT4jg5lQyTaPqdm4m+b4bPDh7M4xi0RKO+GePrytkXaQhMiRIu9Prajk9VkMRLEmS8dTJfHxJfGsl4OWB6s0S80ReRNH8pH8lHuTPce09iie+KJeRAfkIfkHvkXmkLD5ExeN5EHgnkMeRMbMrPHX/n0rJcuUjI+JEpWMbuXxGO8rGMiJiEfLYaykOC+IsixPSL4RE+1WkeRxK5RRtJYIyJeIh+IPwkx+Crfx7H4MkfxJH8Rn8Q"
    $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 &= "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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 !  ;)

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Just 16 squares.

 

Ok, at the top of the script change "Global $iPicNumber = 15^2" by "Global $iPicNumber = 4^2"

But it's too easy  :P

And for the Puzzle game i'm already working on it !

Can i see your version ?  :)


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Gowrisankar
      Dear members of the forum,
      I'm working on a project in which I have to use Image recognition technique. 
      Due to client restrictions, I couldn't use AutoIt for this project. 
      Is there a way to use this DLL "ImageSearchDLL.dll" (which is used to do image recognition steps in AutoIt) in VB.Net to achieve the same result? 
      I have used this DLL few years before and got good results. If there is a latest version of this DLL and if you can share it, that will be helpful too.
      Any guidance is deeply appreciated.
    • By Cengokill
      Hi everyone,
      I have created a ListView that is in a tab, and I want to display an image in that tab, with the ListView on top.
      However, the image still appears on top of my ListView.
      If I remove the tabs everything works. 
      I looked at the autoit documentation and the <GuiListView.au3> documentation , I can't figure out how to display a background image, and put on top a ListView, inside a tab. 😥
      Here is the code:
      Opt("GUIOnEventMode", 1) $Form1 = GUICreate($Titre, 700, 627, $Form1Width, $Form1Height); main window $tabulation = GUICtrlCreateTab(148,0,700,580); creating tabs $tab1=GUICtrlCreateTabItem("Tab 1"); first tab GUICtrlSetState(-1, $GUI_SHOW); this tab is selected by default $Pic1 = GUICtrlCreatePic("image.jpg", 0, 30, 700, 627) GUICtrlSetState(-1, $GUI_DISABLE). $idListview = GUICtrlCreateListView("list 1|list 2|list 3", 200, 50, 390, 200) GUISetState(@SW_SHOW) While 1     Sleep(100) WEnd Thank you in advance.

    • By UEZ
      Here another example to mark the desktop to get the marked region for capturing. This example is not perfect and not very fast (room for improvements).
      ;Coded by UEZ build 2020-08-07 beta ;Code cleanup up mLipok ; ;Short instruction: mark area on your desktop and press return key to capture. #include <APISysConstants.au3> #include <Array.au3> ;#include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> #include <WinAPIGdi.au3> #include <WinAPISysWin.au3> #include <WindowsConstants.au3> ; enum _PROCESS_DPI_AWARENESS -> https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx Global Enum $DPI_AWARENESS_INVALID = -1, $PROCESS_DPI_UNAWARE = 0, $PROCESS_SYSTEM_DPI_AWARE, $PROCESS_PER_MONITOR_DPI_AWARE ;https://docs.microsoft.com/en-us/windows/desktop/hidpi/dpi-awareness-context Global Enum $Context_UnawareGdiScaled = -5, $Context_PerMonitorAwareV2, $Context_PerMonitorAware, $Context_SystemAware, $Context_Unaware _WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAware) Global $__g_hGUI_MarkArea, $__g_hGUI_Bg, $__g_iLabel_TL, $__g_iLabel_TM, $__g_iLabel_TR, $__g_iLabel_LM, $__g_iLabel_RM, $__g_iLabel_BL, $__g_iLabel_BM, _ $__g_iLabel_BR, $__g_iOldCursor, $__g_iW, $__g_iH, $__g_iColor_ResizeDots = 0xFFFFFF, $__g_iBorder = 4, $__g_bSelectionDone = False Global $aRect = _GDIPlus_MarkScreenRegionAnimated() Global $hImage_Capture = _ScreenCapture_Capture(@TempDir & "\Test.png", $aRect[0], $aRect[1], $aRect[0] + $aRect[2] - 1, $aRect[1] + $aRect[3] - 1, False) ShellExecute(@TempDir & "\Test.png") ;_ArrayDisplay($aRect, "Marked area coordinates") Func _GDIPlus_MarkScreenRegionAnimated($bAnim = True) _GDIPlus_Startup() Local Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]") Local Const $aFullScreen = WinGetPos($hFullScreen) $__g_hGUI_Bg = GUICreate("", $aFullScreen[2], $aFullScreen[3], $aFullScreen[0], $aFullScreen[1], BitOR($WS_CLIPCHILDREN, $WS_POPUP), $WS_EX_TOPMOST) ;to avoid cursor flickering and for proper control read WinSetTrans($__g_hGUI_Bg, "", 0x01) $__g_hGUI_MarkArea = GUICreate("", 1, 1, -1, -1, $bAnim ? $WS_POPUP : BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_LAYERED), $__g_hGUI_Bg) GUISetBkColor(0xABCDEF, $__g_hGUI_MarkArea) If Not $bAnim Then $__g_iColor_ResizeDots = 0xFF0000 $__g_iLabel_TL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_TR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;top right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_LM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;left mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_RM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;right mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BL = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom left GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BM = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom mid GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) $__g_iLabel_BR = GUICtrlCreateLabel("", 0, 0, $__g_iBorder, $__g_iBorder) ;bottom right GUICtrlSetResizing(-1, $GUI_DOCKSIZE) GUICtrlSetBkColor(-1, $__g_iColor_ResizeDots) GUISetState(@SW_SHOWNA, $__g_hGUI_Bg) GUISetState(@SW_SHOW, $__g_hGUI_MarkArea) $__g_iOldCursor = MouseGetCursor() GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) _WinAPI_SetLayeredWindowAttributes($__g_hGUI_MarkArea, 0xABCDEF, 0xF0) Local $aMPos, $aPrevMPos[2] = [MouseGetPos(0) + 1, MouseGetPos(1) + 1], $iID, $aCI, $iX, $iY, $aOldWinPos, $aOldMPos, $bMoved Local $aGUIStartPos, $iKey_Exit = GUICtrlCreateButton("", $aFullScreen[0] - 10, $aFullScreen[1] - 10, 1, 1), $aAccelKeys[1][2] = [["{ENTER}", $iKey_Exit]] GUISetAccelerators($aAccelKeys, $__g_hGUI_Bg) GUISetAccelerators($aAccelKeys, $__g_hGUI_MarkArea) #forceref $bMoved Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $iKey_Exit If $bAnim Then GUIRegisterMsg($WM_TIMER, "") DllCall("user32.dll", "bool", "KillTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", $iID) GUIRegisterMsg($WM_ERASEBKGND, "") EndIf _GDIPlus_Shutdown() Local $aResult = WinGetPos($__g_hGUI_MarkArea) $aResult[2] = WinGetClientSize($__g_hGUI_MarkArea)[0] $aResult[3] = WinGetClientSize($__g_hGUI_MarkArea)[1] GUIDelete($__g_hGUI_MarkArea) GUIDelete($__g_hGUI_Bg) If Not $__g_bSelectionDone Then $aResult = 0 Return $aResult EndSwitch $aMPos = MouseGetPos() If ($aMPos[0] <> $aPrevMPos[0] Or $aMPos[1] <> $aPrevMPos[1]) And (Not $__g_bSelectionDone) Then WinMove($__g_hGUI_MarkArea, "", $aMPos[0], $aMPos[1]) $aPrevMPos = $aMPos EndIf $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If $aCI[2] And (Not $__g_bSelectionDone) Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $bAnim Then GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND") GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") $iID = DllCall("User32.dll", "uint_ptr", "SetTimer", "hwnd", $__g_hGUI_MarkArea, "uint_ptr", 1, "uint", 50, "ptr", 0)[0] EndIf While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) $aMPos = MouseGetPos() $__g_iW = Abs($aMPos[0] - $aGUIStartPos[0]) + 1 $__g_iH = Abs($aMPos[1] - $aGUIStartPos[1]) + 1 If $aMPos[0] < $aGUIStartPos[0] Then $iX = $aMPos[0] Else $iX = $aGUIStartPos[0] EndIf If $aMPos[1] < $aGUIStartPos[1] Then $iY = $aMPos[1] Else $iY = $aGUIStartPos[1] EndIf WinMove($__g_hGUI_MarkArea, "", $iX, $iY, $__g_iW, $__g_iH) UpdateCtrlPos($bAnim) WEnd $__g_bSelectionDone = True GUISetCursor(3, 1, $__g_hGUI_MarkArea) ElseIf $aCI[3] And $__g_bSelectionDone Then $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If _WinAPI_PtInRectEx(MouseGetPos(0), MouseGetPos(1), $aGUIStartPos[0], $aGUIStartPos[1], $aGUIStartPos[0] + $aGUIStartPos[2], $aGUIStartPos[1] + $aGUIStartPos[3]) Then $aMPos = MouseGetPos() $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) While $aCI[3] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aGUIStartPos[0] - ($aMPos[0] - MouseGetPos(0)), $aGUIStartPos[1] - ($aMPos[1] - MouseGetPos(1)), $__g_iW, $__g_iH) GUISetCursor(0, 1, $__g_hGUI_Bg) GUISetCursor(0, 1, $__g_hGUI_MarkArea) WEnd GUISetCursor(3, 1, $__g_hGUI_Bg) GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndIf EndIf If $__g_bSelectionDone Then $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) If @error Then ContinueLoop Switch $aCI[4] Case $__g_iLabel_TL GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), MouseGetPos(1), $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BR GUISetCursor(12, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TR GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BL GUISetCursor(10, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_LM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", MouseGetPos(0), $aOldWinPos[1], $aOldWinPos[2] + ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_RM GUISetCursor(13, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2] - ($aOldMPos[0] - MouseGetPos(0)), $aOldWinPos[3]) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_TM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], MouseGetPos(1), $aOldWinPos[2], $aOldWinPos[3] + ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case $__g_iLabel_BM GUISetCursor(11, 1, $__g_hGUI_MarkArea) If $aCI[2] Then $aOldWinPos = WinGetPos($__g_hGUI_MarkArea) $aOldMPos = MouseGetPos() While $aCI[2] * Sleep(10) $aCI = GUIGetCursorInfo($__g_hGUI_MarkArea) WinMove($__g_hGUI_MarkArea, "", $aOldWinPos[0], $aOldWinPos[1], $aOldWinPos[2], $aOldWinPos[3] - ($aOldMPos[1] - MouseGetPos(1))) WEnd UpdateCtrlPos($bAnim) EndIf Case Else GUISetCursor(3, 1, $__g_hGUI_MarkArea) EndSwitch EndIf Until False EndFunc ;==>_GDIPlus_MarkScreenRegionAnimated Func UpdateCtrlPos($bAnim = True) Local Const $aGUIStartPos = WinGetPos($__g_hGUI_MarkArea) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "") $__g_iW = $aGUIStartPos[2] $__g_iH = $aGUIStartPos[3] ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TL, 0, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TM, ($__g_iW - $__g_iBorder) / 2, 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_TR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), 0, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_LM, 0, ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_RM, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder) / 2, $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BL, 0, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BM, ($__g_iW - $__g_iBorder) / 2, ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) ControlMove($__g_hGUI_MarkArea, "", $__g_iLabel_BR, ($__g_iW - $__g_iBorder - $__g_iBorder / 2), ($__g_iH - $__g_iBorder - $__g_iBorder / 2), $__g_iBorder, $__g_iBorder) If $__g_bSelectionDone And $bAnim Then GUIRegisterMsg($WM_TIMER, "PlayBorderAnim") EndFunc ;==>UpdateCtrlPos Func PlayBorderAnim() Local $aWinPos = WinGetClientSize($__g_hGUI_MarkArea), $iW = $aWinPos[0], $iH = $aWinPos[1] Local Static $fOffset = 0 Local Const $iSize = $__g_iBorder / 2 Local Const $hDC = _WinAPI_GetDC($__g_hGUI_MarkArea) Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH) Local Const $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC) Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap) Local Const $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer) Local Const $hPen = _GDIPlus_PenCreate(0xFF0178D7, $iSize), $hPen2 = _GDIPlus_PenCreate(0xFFFFFFFF, $iSize), _ $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $__g_iColor_ResizeDots), $hPen3 = _GDIPlus_PenCreate(0xFF000000) _GDIPlus_PenSetDashStyle($hPen, $GDIP_DASHSTYLEDASHDOT) _GDIPlus_GraphicsClear($hCanvas, 0xFFABCDEF) ;for faster performance direct dll calls DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen2, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipSetPenDashOffset", "handle", $hPen, "float", $fOffset) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen, "float", 1 + $iSize, "float", 1 + $iSize, "float", $iW - 2 * $iSize - 2, "float", $iH - 2 * $iSize - 2) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", 0, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) / 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", 0, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) / 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hCanvas, "handle", $hBrush, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) DllCall($__g_hGDIPDll, "int", "GdipDrawRectangle", "handle", $hCanvas, "handle", $hPen3, "float", ($iW - $__g_iBorder) - 2, "float", ($iH - $__g_iBorder) - 2, "float", $__g_iBorder + 1, "float", $__g_iBorder + 1) _WinAPI_BitBlt($hDC, 0, 0, $iW, $iH, $hDC_backbuffer, 0, 0, $SRCCOPY) $fOffset += 0.5 _GDIPlus_GraphicsDispose($hCanvas) _WinAPI_SelectObject($hDC_backbuffer, $DC_obj) _WinAPI_DeleteDC($hDC_backbuffer) _WinAPI_DeleteObject($hHBitmap) _WinAPI_ReleaseDC($__g_hGUI_MarkArea, $hDC) _GDIPlus_PenDispose($hPen) _GDIPlus_PenDispose($hPen2) _GDIPlus_PenDispose($hPen3) _GDIPlus_BrushDispose($hBrush) EndFunc ;==>PlayBorderAnim Func WM_ERASEBKGND($hWnd, $iMsgm, $wParam, $lParam) ;suppress repainting to avoid flickering but causes some other side effects #forceref $iMsgm, $wParam, $lParam, $hWnd Local Const $hBrush = _WinAPI_CreateSolidBrush(0xEFCDAB) ;BGR format ;~ _WinAPI_RedrawWindow($__g_hGUI_MarkArea, 0, 0, BitOR($RDW_NOERASE, $RDW_NOCHILDREN, $RDW_NOFRAME, $RDW_VALIDATE)) _WinAPI_SetClassLongEx($__g_hGUI_MarkArea, $GCL_HBRBACKGROUND, $hBrush) _WinAPI_DeleteObject($hBrush) Return 0 EndFunc ;==>WM_ERASEBKGND ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext Func _WinAPI_SetProcessDpiAwarenessContext($DPIAwareContext = $Context_PerMonitorAware, $hGUI = 0, $iMode = 3) ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext $DPIAwareContext = ($DPIAwareContext < -5) ? -5 : ($DPIAwareContext > -1) ? -1 : $DPIAwareContext $iMode = ($iMode < 1) ? 1 : ($iMode > 3) ? 3 : $iMode Switch $iMode Case 1 Local $hDC = _WinAPI_GetDC($hGUI) Local $aResult1 = DllCall("user32.dll", "ptr", "GetDpiFromDpiAwarenessContext", "ptr", $hDC) If @error Or Not IsArray($aResult1) Then Return SetError(11, 0, 0) _WinAPI_ReleaseDC(0, $hDC) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult1[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(12, 0, 0) Case 2 ;~ If Not $hGUI Then $hGUI = WinGetHandle(AutoItWinGetTitle()) Local $aResult2 = DllCall("user32.dll", "int", "GetWindowDpiAwarenessContext", "ptr", $hGUI) If @error Or Not IsArray($aResult2) Then Return SetError(21, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult2[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(22, 0, 0) Case 3 Local $aResult31 = DllCall("user32.dll", "ptr", "GetThreadDpiAwarenessContext") If @error Or Not IsArray($aResult31) Then Return SetError(31, 0, 0) Local $aResult32 = DllCall("user32.dll", "ptr", "GetAwarenessFromDpiAwarenessContext", "ptr", $aResult31[0]) If @error Or Not IsArray($aResult32) Then Return SetError(32, 0, 0) Local $aResult = DllCall("user32.dll", "Bool", "SetThreadDpiAwarenessContext", "int", $aResult32[0] + $DPIAwareContext) If @error Or Not IsArray($aResult) Then Return SetError(33, 0, 0) EndSwitch Return 1 EndFunc ;==>_WinAPI_SetProcessDpiAwarenessContext  
      Just press the lmb and move your mouse. When lmb is released you can adjust the size of the window by dragging the white rectangle to any direction. Rmb will move the marked area.
      Press ESC to get the coordinates of the marked region.
      If you have any improvements, please post it here.
       
      Tested on Win10 x64 only.
       
    • By amosrinat
      Hi,
      i have an AutoIT script that sends emails with two embedded images.
      When users get the email they don't see the images. How should I fix my code?
      Thank you for your support,
      Amos
      Func fSendMail() $TemplateName = StringRegExpReplace($Template, "^.*\\|\..*$", "") $SmtpServer = "smtp.**.com" $FromName = "do-not-reply@*********" $FromAddress = "do-not-reply@******" $ToAddress = $MG1_Mgr & ";"& $Owner $Subject = "ACTION REQUIRED - " & $TemplateName $Body = $sBody5 $IPPort = 25 $ssl = 0 Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = fINetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $IPPort, $ssl) If @error Then MyErrFunc() EndIf EndFunc;fSendMail Func fINetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort $objEmail.Configuration.Fields.Update $objEmail.Fields.Update ;$objEmail.Send **************** If @error Then MyErrFunc() EndIf $objEmail = "" EndFunc;fINetSmtpMailCom  
    • By nacerbaaziz
      hello evrybody
      here is an example about how to split your texts using a delimiter with the ability to select how much of delimiters shows in each colum  with $i_number
      e.g
      you have a long text and you want to split it in an array
      that evry colum have a number (n) of lines
      i made a function that do that for you
      just call it with a three params
      $s_text
      your text
      $i_number
      the number that you want to put in each col
      $s_siparator
      the siparator
      default is "|"
      here is the function with example
      i hope that it will be useful for you
       
      ****
       
      #include <Array.au3> $s_txt = "some text1some text2|some text3|some text4|some text5|some text6" $array = splitText($s_txt, 2) _ArrayDisplay($array) Func splitText($s_text, $i_number, $s_siparator = "|") Local $a_TXT = StringSplit($s_text, $s_siparator) Local $a_Return[$a_TXT[0] + 1] If ($a_TXT[0] <= $i_number) Or ($i_number <= 0) Then ReDim $a_Return[2] $a_Return[0] = 1 $a_Return[1] = $s_text Return $a_Return EndIf Local $i_Processed = 1, $i_arrayProcessed = 1 Do For $i = $i_Processed To ($i_Processed + $i_number) - 1 If ($a_TXT[0] < $i) Then ExitLoop If Not ($a_Return[$i_arrayProcessed]) Then $a_Return[$i_arrayProcessed] = $a_TXT[$i] Else $a_Return[$i_arrayProcessed] &= $s_siparator & $a_TXT[$i] EndIf $i_Processed += 1 Next $i_arrayProcessed += 1 Until ($a_TXT[0] < $i_Processed) ReDim $a_Return[$i_arrayProcessed] $a_Return[0] = $i_arrayProcessed - 1 Return $a_Return EndFunc ;==>splitText
      accept my greetings
      thanks to
      @Dan_555
      for his notes
       
×
×
  • Create New...