Jump to content

Search the Community

Showing results for tags 'imagesearch'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

  1. Version v3.5

    11,709 downloads

    ImageSearch UDF v3.5 - AutoIt Wrapper for ImageSearchDLL Advanced image search library for AutoIt with cache system and SIMD optimization. Overview ImageSearchDLL UDF is a high-performance image search library for AutoIt that enables you to find images on screen or within other images. Built with C++14 and optimized with SIMD instructions (AVX512/AVX2/SSE2), it provides fast and accurate image matching capabilities. Features High Performance: SIMD optimization (AVX512/AVX2/SSE2) for fast searching Multi-Monitor Support: Full support for multi-monitor setups with negative coordinates DPI Awareness: Thread-local DPI awareness without affecting AutoIt GUI Cache System: Persistent cache for 30-50% speed boost on repeated searches Image Scaling: Search for images at different scales (0.1x to 5.0x) Screen Capture: Direct screen capture with DPI-aware coordinates Mouse Automation: Precise mouse movement and clicking with multi-monitor support Requirements AutoIt: Version 3.3.16.1 or higher Windows: XP SP3 to Windows 11 Architecture: x86 or x64 (automatic detection) DLL: ImageSearchDLL v3.5 (included) Installation Download the UDF package Place ImageSearchDLL_UDF.au3 in your script directory Ensure the appropriate DLL is in the same directory: ImageSearchDLL_x64.dll for 64-bit AutoIt ImageSearchDLL_x86.dll for 32-bit AutoIt Not required in embedded version! (But need to install Visual C++ Redistributable 2015-2022) Include the UDF in your script: #include "ImageSearchDLL_UDF.au3" Quick Start Basic Image Search #include "ImageSearchDLL_UDF.au3" ; Search for a button on screen Local $aResult = _ImageSearch("button.png") If $aResult[0] > 0 Then ConsoleWrite("Found at: " & $aResult[1][0] & ", " & $aResult[1][1] & @CRLF) MouseClick("left", $aResult[1][0], $aResult[1][1]) Else ConsoleWrite("Image not found" & @CRLF) EndIf Wait for Image and Click ; Wait up to 5 seconds for button to appear, then click it If _ImageSearch_WaitClick(5000, "button.png") Then MsgBox(0, "Success", "Button clicked!") Else MsgBox(0, "Failed", "Button not found within 5 seconds") EndIf Screen Capture ; Capture a region and save as PNG _ImageSearch_ScreenCapture_SaveImage(@ScriptDir & "\screenshot.png", 100, 100, 600, 400) ; Capture full screen _ImageSearch_ScreenCapture_SaveImage(@ScriptDir & "\fullscreen.png") API Reference Startup & Configuration _ImageSearch_Startup() Initializes the ImageSearch library by loading the appropriate DLL. Returns: Success: 1 (DLL loaded successfully) Failure: 0 and sets @error Remarks: Must be called before using any search functions Automatically called on script start DLL v3.5+ uses thread-local DPI awareness and won't affect AutoIt GUI _ImageSearch_Shutdown() Closes the DLL and cleans up resources. _ImageSearch_SetDllPath($sPath) Sets a custom DLL path (must be called before _ImageSearch_Startup). Parameters: $sPath - Full path to the DLL file Returns: Success: 1 Failure: 0 (file not found) Core Search Functions _ImageSearch($sImagePath [, $iLeft, $iTop, $iRight, $iBottom [, $iScreen [, $iTolerance [, $iResults [, $iCenterPOS [, $fMinScale [, $fMaxScale [, $fScaleStep [, $iReturnDebug [, $iUseCache]]]]]]]]) Searches for an image within a specified screen area. Parameters: $sImagePath - Image file path(s), multiple separated by "|" $iLeft, $iTop, $iRight, $iBottom - Search region (0 = entire screen) $iScreen - Monitor index (-1 = virtual screen, 0 = primary, 1+ = specific monitor) $iTolerance - Color tolerance 0-255 (default: 10) $iResults - Max results 1-1024 (default: 1) $iCenterPOS - Return center (1) or top-left (0) coordinates (default: 1) $fMinScale, $fMaxScale - Scale range 0.1-5.0 (default: 1.0) $fScaleStep - Scale step (default: 0.1) $iReturnDebug - Debug mode (default: 0) $iUseCache - Enable cache (default: 1) Returns: Success: Array of found positions [count][X, Y, Width, Height] Failure: Empty array with @error set Example: ; Search for multiple images with scaling Local $aResult = _ImageSearch("icon1.png|icon2.png", 0, 0, 800, 600, -1, 10, 5, 1, 0.8, 1.2, 0.1) If $aResult[0] > 0 Then For $i = 1 To $aResult[0] ConsoleWrite("Match " & $i & " at: " & $aResult[$i][0] & ", " & $aResult[$i][1] & @CRLF) Next EndIf _ImageSearch_InImage($sSourceImage, $sTargetImage [, $iTolerance [, $iResults [, $iCenterPOS [, $fMinScale [, $fMaxScale [, $fScaleStep [, $iReturnDebug [, $iUseCache]]]]]]]]) Searches for a target image within a source image (file-to-file search). Parameters: $sSourceImage - Path to source image file $sTargetImage - Path to target image file(s), multiple separated by "|" Other parameters same as _ImageSearch Returns: Same as _ImageSearch Remarks: Useful for pre-processing images or testing without screen capture Example: $aResult = _ImageSearch_InImage("screenshot.png", "button.png", 20) _ImageSearch_hBitmap($hBitmapSource, $hBitmapTarget [, $iTolerance [, $iLeft [, $iTop [, $iRight [, $iBottom [, $iResults [, $iCenterPOS [, $fMinScale [, $fMaxScale [, $fScaleStep [, $iReturnDebug [, $iUseCache]]]]]]]]]]]]) Searches for a target bitmap within a source bitmap (memory-to-memory search). Parameters: $hBitmapSource - Handle to source bitmap (HBITMAP) $hBitmapTarget - Handle to target bitmap (HBITMAP) Other parameters same as _ImageSearch Returns: Same as _ImageSearch Remarks: Fastest method for repeated searches (no disk I/O) Bitmaps must be created with GDI/GDI+ functions Screen Capture Functions _ImageSearch_CaptureScreen([$iLeft, $iTop, $iRight, $iBottom [, $iScreen]]) Capture screen region and return as HBITMAP handle. Parameters: $iLeft, $iTop, $iRight, $iBottom - Capture region (default: 0 = full screen) $iScreen - Monitor index (default: -1 = virtual screen) Returns: Success: HBITMAP handle (must DeleteObject when done) Failure: 0 and sets @error Example: $hBitmap = _ImageSearch_CaptureScreen(0, 0, 800, 600) ; ... use $hBitmap ... _WinAPI_DeleteObject($hBitmap) _ImageSearch_ScreenCapture_SaveImage($sImageFile [, $iLeft [, $iTop [, $iRight [, $iBottom [, $iScreen]]]]]) Captures a screen region and saves it directly to an image file in one call. Parameters: $sImageFile - Output file path (extension determines format: .bmp, .png, .jpg/.jpeg) $iLeft, $iTop, $iRight, $iBottom - Capture region (default: 0 = full screen) $iScreen - Monitor index (default: 0 = primary screen) Returns: Success: True (1) Failure: False (0) and sets @error Remarks: Automatically detects format from file extension ~2x faster than separate capture + save operations JPEG quality is fixed at 100% (highest quality) Uses DPI-aware capture (accurate on all DPI scales) Example: ; Capture full primary screen to PNG _ImageSearch_ScreenCapture_SaveImage(@ScriptDir & "\screenshot.png") ; Capture region on monitor 2 to JPEG _ImageSearch_ScreenCapture_SaveImage(@ScriptDir & "\region.jpg", 100, 100, 600, 400, 2) _ImageSearch_hBitmapLoad($sImageFile [, $iAlpha [, $iRed [, $iGreen [, $iBlue]]]]) Load image file and convert to HBITMAP handle. Parameters: $sImageFile - Path to image file $iAlpha, $iRed, $iGreen, $iBlue - Background color components 0-255 (default: 0 = transparent) Returns: Success: HBITMAP handle (must DeleteObject when done) Failure: 0 and sets @error Example: $hBitmap = _ImageSearch_hBitmapLoad("image.png", 255, 255, 255, 255) ; White background ; ... use $hBitmap ... _WinAPI_DeleteObject($hBitmap) Mouse Functions _ImageSearch_MouseMove($iX, $iY [, $iSpeed [, $iScreen]]) Moves mouse cursor to coordinates (supports negative coordinates on multi-monitor). Parameters: $iX, $iY - Target coordinates (-1 = keep current position) $iSpeed - Speed 0-100 (0=instant, default: 0) $iScreen - Monitor index (default: -1 = virtual screen) Returns: 1 on success, 0 on failure _ImageSearch_MouseClick([$sButton [, $iX [, $iY [, $iClicks [, $iSpeed [, $iScreen]]]]]]) Clicks mouse at coordinates (screen or current position). Parameters: $sButton - Button: "left", "right", "middle" (default: "left") $iX, $iY - Coordinates (-1 = current position) $iClicks - Number of clicks (default: 1) $iSpeed - Speed 0-100 (0=instant, default: 0) $iScreen - Monitor index (default: -1 = virtual screen) Returns: 1 on success, 0 on failure _ImageSearch_MouseClickWin($sTitle, $sText, $iX, $iY [, $sButton [, $iClicks [, $iSpeed]]]) Clicks mouse in a window. Parameters: $sTitle - Window title/class/handle $sText - Window text $iX, $iY - Relative coordinates in window $sButton - Button (default: "left") $iClicks - Number of clicks (default: 1) $iSpeed - Speed 0-100 (default: 0) Returns: 1 on success, 0 on failure Wait & Click Functions _ImageSearch_Wait($iTimeout, $sImagePath [, $iLeft [, $iTop [, $iRight [, $iBottom [, $iScreen [, $iTolerance [, $iResults [, $iCenterPOS [, $fMinScale [, $fMaxScale [, $fScaleStep [, $iReturnDebug [, $iUseCache [, $iMaxAttempts]]]]]]]]]]]]]) Waits for an image to appear on screen with timeout and optional max attempts limit. Parameters: $iTimeout - Timeout in milliseconds (0 = wait forever) $sImagePath - Image file path(s), multiple separated by "|" $iMaxAttempts - Max number of search attempts (0 = unlimited, default: 0) Other parameters same as _ImageSearch Returns: Success: 2D Array (same as _ImageSearch) Timeout: Empty array with [0][0] = 0 Example: ; Wait 5 seconds for button (unlimited attempts) $aResult = _ImageSearch_Wait(5000, "button.png") If $aResult[0] > 0 Then MouseClick("left", $aResult[1][0], $aResult[1][1]) Else MsgBox(0, "Timeout", "Button not found") EndIf _ImageSearch_WaitClick($iTimeout, $sImagePath [, $sButton [, $iClicks [, $iLeft [, $iTop [, $iRight [, $iBottom [, $iScreen [, $iTolerance [, $iResults [, $iCenterPOS [, $fMinScale [, $fMaxScale [, $fScaleStep [, $iReturnDebug [, $iUseCache]]]]]]]]]]]]]) Waits for an image and clicks it when found. Parameters: $iTimeout - Timeout in milliseconds (0 = wait forever) $sImagePath - Image file path(s) $sButton - Mouse button: "left", "right", "middle" (default: "left") $iClicks - Number of clicks (default: 1) Other parameters same as _ImageSearch Returns: Success: 1 (image found and clicked) Timeout: 0 (image not found) Monitor Functions _ImageSearch_Monitor_GetList() Gets a list of all connected display monitors and their properties. Returns: Success: The number of monitors found. @extended contains a detailed log. Failure: 0 and sets @error Remarks: Populates the global $g_aMonitorList Called automatically by _ImageSearch_Startup _ImageSearch_Monitor_ToVirtual($iMonitor, $iX, $iY) Converts local monitor coordinates to virtual screen coordinates. Parameters: $iMonitor - The 1-based index of the monitor $iX, $iY - Coordinates relative to the monitor's top-left corner Returns: Success: A 2-element array [$vX, $vY] containing virtual screen coordinates Failure: 0 and sets @error _ImageSearch_Monitor_FromVirtual($iMonitor, $iX, $iY) Converts virtual screen coordinates to local monitor coordinates. Parameters: $iMonitor - The 1-based index of the monitor $iX, $iY - Virtual screen coordinates Returns: Success: A 2-element array [$lX, $lY] containing local monitor coordinates Failure: 0 and sets @error _ImageSearch_Monitor_Current() Detects which monitor contains the current mouse cursor position. Returns: Success: Monitor index (1-based) where the cursor is located Failure: 0 and sets @error _ImageSearch_Monitor_GetAtPosition([$iX [, $iY]]) Returns detailed information string about the monitor at specified position. Parameters: $iX, $iY - Coordinates (default: -1 = use mouse cursor position) Returns: Success: String describing the monitor (e.g., "Monitor 2: 1920x1080 (Primary)") Failure: Error message string Window Coordinate Functions _ImageSearch_Window_ToScreen($hWnd, $iX, $iY [, $bClientArea]) Converts window-relative coordinates to screen (virtual desktop) coordinates. Parameters: $hWnd - Window handle or title $iX, $iY - Coordinates relative to window $bClientArea - True = relative to client area, False = relative to window (default: True) Returns: Success: A 2-element array [$screenX, $screenY] containing screen coordinates Failure: 0 and sets @error _ImageSearch_Window_FromScreen($hWnd, $iScreenX, $iScreenY [, $bClientArea]) Converts screen (virtual desktop) coordinates to window-relative coordinates. Parameters: $hWnd - Window handle or title $iScreenX, $iScreenY - Screen coordinates $bClientArea - True = relative to client area, False = relative to window (default: True) Returns: Success: A 2-element array [$winX, $winY] containing window-relative coordinates Failure: 0 and sets @error Cache & Info Functions _ImageSearch_WarmUpCache($sImagePaths [, $bEnableCache]) Pre-loads images into cache for faster subsequent searches. Parameters: $sImagePaths - Pipe-separated list of images to preload $bEnableCache - Enable persistent cache (default: True) Returns: Success: Number of images cached Failure: 0 Example: _ImageSearch_WarmUpCache("btn1.png|btn2.png|icon.png") _ImageSearch_ClearCache() Clears the internal bitmap and location cache. Remarks: Useful for freeing memory or forcing re-scan after image updates Clears both in-memory cache and persistent disk cache _ImageSearch_GetDllInfo([$bForceRefresh]) Gets comprehensive DLL information in INI format. Parameters: $bForceRefresh - Force refresh of cached info (default: True) Returns: Multi-line string in INI format with sections: [DLL] - DLL name, version, architecture, author [OS] - OS name, version, build, platform [CPU] - Threads, SSE2, AVX2, AVX512 support [SCREEN] - Virtual screen, scale, monitors with individual resolutions [CACHE] - Location cache, bitmap cache, pool size _ImageSearch_GetInfo() Gets formatted DLL and system information for display. Returns: Formatted string with DLL info, cache status, and screen information _ImageSearch_GetDllValue($sSection, $sKey) Quick accessor to read any value from cached DLL Info. Parameters: $sSection - Section name (DLL, OS, CPU, SCREEN, CACHE) $sKey - Key name Returns: Value string or "" if not found Example: $sVersion = _ImageSearch_GetDllValue("DLL", "Version") $sOSName = _ImageSearch_GetDllValue("OS", "Name") $iThreads = _ImageSearch_GetDllValue("CPU", "Threads") _ImageSearch_GetLastResult() Gets the raw DLL return string from the last search. Returns: Raw result string (e.g., "{2}[100|200|32|32,150|250|32|32]") Remarks: Useful for debugging or custom parsing _ImageSearch_GetScale([$iScreen]) Gets the DPI scale factor for a specific monitor as a decimal number. Parameters: $iScreen - Monitor index (0 = Primary, 1+ = specific monitor number) Returns: Scale factor as number (e.g., 1.0, 1.25, 1.5) or 0 if not found Example: $fScale = _ImageSearch_GetScale(0) ; Get primary monitor scale (e.g., 1.25) $fScale = _ImageSearch_GetScale(2) ; Get monitor 2 scale Examples Advanced Search with Multiple Images and Scaling #include "ImageSearchDLL_UDF.au3" ; Search for multiple UI elements with different scales Local $sImages = "button_ok.png|button_cancel.png|icon_settings.png" Local $aResult = _ImageSearch($sImages, 0, 0, 1920, 1080, -1, 15, 10, 1, 0.8, 1.3, 0.1, 0, 1) If $aResult[0] > 0 Then ConsoleWrite("Found " & $aResult[0] & " matches:" & @CRLF) For $i = 1 To $aResult[0] ConsoleWrite(" Match " & $i & ": X=" & $aResult[$i][0] & ", Y=" & $aResult[$i][1] & ", W=" & $aResult[$i][2] & ", H=" & $aResult[$i][3] & @CRLF) Next Else ConsoleWrite("No matches found" & @CRLF) EndIf Multi-Monitor Screen Capture #include "ImageSearchDLL_UDF.au3" ; Get monitor information _ImageSearch_Monitor_GetList() ConsoleWrite("Detected " & $g_aMonitorList[0][0] & " monitors" & @CRLF) ; Capture each monitor separately For $i = 1 To $g_aMonitorList[0][0] Local $sFile = @ScriptDir & "\monitor_" & $i & ".png" _ImageSearch_ScreenCapture_SaveImage($sFile, 0, 0, 0, 0, $i) ConsoleWrite("Captured monitor " & $i & " to: " & $sFile & @CRLF) Next ; Capture entire virtual desktop _ImageSearch_ScreenCapture_SaveImage(@ScriptDir & "\virtual_desktop.png", 0, 0, 0, 0, -1) Automated UI Testing #include "ImageSearchDLL_UDF.au3" ; Pre-load images for better performance _ImageSearch_WarmUpCache("login_button.png|username_field.png|password_field.png") ; Wait for login screen and interact If _ImageSearch_WaitClick(10000, "login_button.png") Then ConsoleWrite("Login button clicked" & @CRLF) ; Find username field and click Local $aUsername = _ImageSearch_Wait(5000, "username_field.png") If $aUsername[0] > 0 Then MouseClick("left", $aUsername[1][0], $aUsername[1][1]) Send("myusername") ; Find password field and click Local $aPassword = _ImageSearch_Wait(5000, "password_field.png") If $aPassword[0] > 0 Then MouseClick("left", $aPassword[1][0], $aPassword[1][1]) Send("mypassword") Send("{ENTER}") EndIf EndIf Else MsgBox(0, "Error", "Login screen not found within 10 seconds") EndIf Error Codes Code Constant Description -1 $IMGSE_INVALID_PATH Invalid file path -2 $IMGSE_FAILED_TO_LOAD_IMAGE Failed to load image -3 $IMGSE_FAILED_TO_GET_SCREEN_DC Failed to get screen device context -4 $IMGSE_INVALID_SEARCH_REGION Invalid search region -5 $IMGSE_INVALID_PARAMETERS Invalid parameters -6 $IMGSE_INVALID_SOURCE_BITMAP Invalid source bitmap -7 $IMGSE_INVALID_TARGET_BITMAP Invalid target bitmap -9 $IMGSE_RESULT_TOO_LARGE Result too large -10 $IMGSE_INVALID_MONITOR Invalid monitor Performance Tips Use Cache: Enable cache for repeated searches to get 30-50% speed boost Pre-load Images: Use _ImageSearch_WarmUpCache() during initialization Limit Search Area: Specify search regions instead of full screen when possible Optimize Tolerance: Use appropriate tolerance values (5-15 for most cases) Use Appropriate Scale Range: Limit scale range to what you actually need Monitor Selection: Use specific monitor index for faster searches on multi-monitor setups Image Format: BMP files load faster than PNG/JPG but are larger Memory Management: Always call _WinAPI_DeleteObject() for HBITMAP handles Changelog Version 3.5 Added thread-local DPI awareness (no GUI resize issues) Enhanced multi-monitor support with individual monitor scales Improved cache system with persistent disk cache Added _ImageSearch_ScreenCapture_SaveImage() for direct file saving Performance optimizations with SIMD instructions Better error handling and debugging information License This project is licensed under the MIT License - see the LICENSE file for details. Author Dao Van Trong - TRONG.PRO Thank you for using ImageSearch UDF! 🚀 ☕ Support My Work Enjoy my work? Buy me a 🍻 or tip via ❤️ PayPal Happy Automating! 🚀 ___________________________
  2. So...I'm having trouble getting MouseClick or MouseMove to play nice. If EITHER of the mouse options (or any combination of them) is uncommented, it ends up moving and/or clicking about 40px above the taskbar, instead of this location, which is where the button (currently) is. What am I doing wrong? CoordMode Pixel ; Interprets the coordinates below as relative to the screen rather than the active window. ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\Users\thela\OneDrive\Desktop\Autoit\Send.png if (ErrorLevel = 2) MsgBox Could not conduct the search. else if (ErrorLevel = 1) MsgBox Icon could not be found on the screen. else SetMouseDelay, -1 MsgBox The icon was found at %FoundX%x%FoundY%. ;MouseClick ;MouseMove, %FoundX%, %FoundY% ;MouseClick, left, %FoundX%, %FoundY%
  3. After having lot of issues myself with getting ImageSearch to work I decided to make topic with explanation how to proper use this script. Here is link of original topic at this topic: Credits to kangkeng for creating such useful piece of code. What is ImageSearch? It's script that find part of screen which you before defined with given image. When should I use ImageSearch? You should use it whenever it's not possible or unlikely that pixelsearch will give what you need. So how can I use ImageSearch and enjoy it's awesome benefits? First of all to avoid mostly caused problems I recompiled DLLs for both architectures which you can download at end of this post. When you pick your package you should place both ImageSearch.au3 and ImageSearch.dll inside script folder. Usage Example: First of all take picture of what you want to search for (print screen + paint + corp + save as bmp). Place that picture in script directory (I named my picture checkImage (checkImage.bmp is full name with extension). You must include ImageSearch.au3 in your script. ImageSearch.au3 consist of 2 Functions you can use: _ImageSearch and _ImageSearchArea Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify a desktop region to search Values to put in for _ImageSearch function (entire screen search) ($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance, $HBMP=0) Values to put in for _ImageSearchArea function (you declare part of screen to be searched) ($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance,$HBMP=0) Description of parameters from ImageSearch.au3 itself: ; Description: Find the position of an image on the desktop ; Syntax: _ImageSearchArea, _ImageSearch ; Parameter(s): ; $findImage - the image to locate on the desktop ; $tolerance - 0 for no tolerance (0-255). Needed when colors of ; image differ from desktop. e.g GIF ; $resultPosition - Set where the returned x,y location of the image is. ; 1 for centre of image, 0 for top left of image ; $x $y - Return the x and y location of the image ; ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 Example of my script using _ImageSearch ( entire screen search) #include <ImageSearch.au3> HotKeySet("p", "checkForImage") global $y = 0, $x = 0 Func checkForImage() Local $search = _ImageSearch('checkImage.bmp', 0, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 10) EndIf EndFunc while 1 sleep(200) WEnd Example of my script using _ImageSearchArea #include <ImageSearch.au3> HotKeySet("p", "checkForImage") global $y = 0, $x = 0 Func checkForImage() local $search = _ImageSearchArea('check5.bmp', 1, 800, 40, 900, 80, $x, $y, 0) If $search = 1 Then MouseMove($x, $y, 10) EndIf EndFunc while 1 sleep(200) WEnd I would like to apologize if by writing this I offended any of member that thinks this script is too simple to even have it explained, it's just as me being new to autoIt it took me so much time getting around errors and making this script to work. Thanks for reading, if you bump on any problems using it post it here, I will try to help you fixing it and update topic for further reference. Download links: 32bit: ImageSearch 32bit.rar 64bit: ImageSearch 64 bit.rar
  4. The code is solid and simple, it can almost explain itself. This is the native autoit way to do the "imagesearch", no 3rd party .dll needed. It gets "your.bmp", and "screenshot.bmp" ----> Convert the .bmp files into 2D-Arrays (Malkey's function) ----> Compare the 2D-arrays, return the matched position. Tested on: Windows 7; Windows server 2008R2; Windows 10 1809. Pros: It is native. No extra .dll needed It is super robust. (I used to have lots of funny results using other imagesearch libs). It gets screenshot the same you get your screenshot crop, so it always gets a solid result, and 100% accurate. The code is very simple and friendly, all level users can understand and use it. Cons: It is slow to convert your.big.screen.bmp into a 2D-array, and may consume 200+MB of memory and may take 5 - 20 seconds to return the result. (the actual search in an array is fast, but the conversion from .bmp to array is slow. The speed depends on your CPU speed and your screen size). Correct: now optimized, it's ~5 seconds and ~ 70MB ram usage. It is a pixel-by-pixel color-code strict comparison in the "array-in-array" search, so you have to use the 24-bit BMP file, no "Tolerance" allowed. 2019-Jun-11: script update: Same day updated: Update example; Optimize the algorithm for performance, now most computers can get the result in ~5 seconds, using ~70MB temporary memory, for the 1920x1080 resolution screen. 2019-Jun-12 script update: It now uses "PrintScreen" hotkey to save the screenshot.bmp (restores the user's old clipboard content after it is done) ~This is the only way to make sure the screenshot matches exactly what the user is seeing, after doing dozens of harsh tests. The reason: The UDF "ScreenCapture" and "ImageSearch.dll" are not reliable for an unknown reason. Some window/dialogue special drawings are "invisible" in their screenshots. But the "PrintScreen" key -> Clipboard -> screenshot.bmp, this method always catches exact things showing on the screen. #include <GDIPlus.au3> #include <ClipBoard.au3> ;Sinple Example.================== the 1.bmp is what you want to find on your screen $result = _ScreenSearchBmp("1.bmp") if $result[0] = 0 Then MsgBox(0,"","not found") Else MouseMove($result[0],$result[1],20) ;move mouse to the result EndIf ;Example End.================== You can "include" this file after you remove this "Example" part here. ;=============================================================================== ; ; Description: Main Function. Find the position of an image on the desktop ; Parameter(s): ; $center = 1 - Set where the returned x,y location of the image is. ; default 1 means center, 0 means top-left ; ; Return Value(s): On Success - Returns the array of matched position [x,y] on your screen. ; On Failure - Returns array [0,0] (BTW, there is no position 0,0 on a screen, so it means error) ; ; Note: Warning: The BMP file must be a 24-bit BMP (windows default) ; ;=============================================================================== Func _ScreenSearchBmp($file,$center=1) local $pixelarray,$screenarray ;get both your image.bmp and screenshot.bmp into pixel-by-pixel 2D arrays _FileImageToArray($file, $pixelarray) _Clip_screenshot(@TempDir & "\screenshot.bmp") _FileImageToArray(@TempDir & "\screenshot.bmp",$screenarray) FileDelete(@TempDir & "\screenshot.bmp") ;compare the 2 2D-arrays local $result = _2darray_in_2darray($screenarray,$pixelarray) ;result tidy up, for if $center=1, and for if not found. Local $aresult[2] $aresult[0] = $result[0] $aresult[1] = $result[1] if $aresult[0] = 0 then Return $aresult ;if not found , return 0 0 here if $center = 1 then $aresult[0] = $result[0]+ Round(UBound($pixelarray,1)/2) if $center = 1 then $aresult[1] = $result[1]+ Round(UBound($pixelarray,2)/2) Return $aresult ;if ALL GOOD, and $center=1 then return the center of the image here. EndFunc ;=============================================================================== ; Code by Malkey, converts .bmp into 2D array pixal by pixal. : thanks man! ;=============================================================================== Func _FileImageToArray($filename, ByRef $aArray) Local $Reslt, $stride, $format, $Scan0, $iW, $iH, $hImage Local $v_Buffer, $width, $height Local $i, $j _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($filename) $iW = _GDIPlus_ImageGetWidth($hImage) $iH = _GDIPlus_ImageGetHeight($hImage) $Reslt = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iW, $iH, $GDIP_ILMREAD, $GDIP_PXF32ARGB) ;Get the returned values of _GDIPlus_BitmapLockBits () $width = DllStructGetData($Reslt, "width") $height = DllStructGetData($Reslt, "height") $stride = DllStructGetData($Reslt, "stride") $format = DllStructGetData($Reslt, "format") $Scan0 = DllStructGetData($Reslt, "Scan0") Dim $aArray[$width][$height] For $i = 0 To $iW - 1 For $j = 0 To $iH - 1 $aArray[$i][$j] = DllStructGetData(DllStructCreate("dword", $Scan0 + ($j * $stride) + ($i * 4)), 1) Next Next _GDIPlus_BitmapUnlockBits($hImage, $Reslt) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() Return EndFunc ;==>_FileImageToArray ;=============================================================================== ; ; Description: ; My code, search a 2D array inside another 2d array ; If found, return the positon of first element ; If error or not found, return array [0,0]. Because the very first match would be [1,1], "0" means something wrong. ; eg. search a 2d array ; [1,2,3,4] ; [5,6,7,8] ; [9,0,1,2] ; for: ; [7,8] ; [1,2] ; You will get result [2,3] (means, matched, first element position is row 2, colunm 3) ; ; Parameter(s): ; ; Return Value(s): On Success - Returns the array of matched [x,y], the top-left element position in the source. ; On Failure - Returns [0,0] ; ; ;=============================================================================== Func _2darray_in_2darray($source,$search) ;get the size of the both arrays local $sourcerow = UBound($source,1) Local $sourcecol = UBound($source,2) local $searchrow = UBound($search,1) Local $searchcol = UBound($search,2) ;error input cheching, if error return position 0,0 if $sourcerow = 0 or $sourcecol = 0 or $searchrow = 0 or $searchcol = 0 then Local $aPeople[2] $aPeople[0] = 0 $aPeople[1] = 0 Return $aPeople EndIf ; A crazy 4-for-loops, compare every x,y of search array in every x,y in source array for $ssr = 1 to $sourcerow - $searchrow +1 for $ssc = 1 to $sourcecol - $searchcol +1 for $sr = 1 to $searchrow for $sc = 1 to $searchcol ;if an element not match, go back, search for next if $search[$sr-1][$sc-1] <> $source[$ssr+$sr-2][$ssc+$sc-2] then ContinueLoop 3 Next Next ;if the loop passed all elements test, made it here, means the result is found! congress! lets return the result: Local $aPeople[2] $aPeople[0] = $ssr $aPeople[1] = $ssc Return $aPeople Next Next ;all the loops finished, no result found. return [0,0] Local $aPeople[2] $aPeople[0] = 0 $aPeople[1] = 0 Return $aPeople EndFunc ; #FUNCTION# ==================================================================================================================== ; Name ..........: _Clip_screenshot ; Description ...: This get a screenshot.bmp using "Print Screen" key, so the image is EXACT same image you use "Print Screen" key, to avoid funny results. ; Syntax ........: _Clip_screenshot($file) ; Parameters ....: $file - The location of the screen shot .bmp file you want it to save ; Return values .: None ; Author ........: Kyle ; =============================================================================================================================== Func _Clip_screenshot($file) local $tempdata = _ClipBoard_GetData() ;save current user's clipboard Send("{PRINTSCREEN}") sleep(200) If _ClipBoard_IsFormatAvailable($CF_BITMAP) Then _ClipBoard_Open(0) $hClipboardImage = _ClipBoard_GetDataEx($CF_BITMAP) _ClipBoard_Close() _GDIPlus_Startup() $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hClipboardImage) Local $iX = _GDIPlus_ImageGetWidth($hBitmap) Local $iY = _GDIPlus_ImageGetHeight($hBitmap) Local $hClone = _GDIPlus_BitmapCloneArea($hBitmap, 0, 0, $iX, $iY, $GDIP_PXF24RGB) ;make sure its 24bit bmp _GDIPlus_ImageDispose($hBitmap) $hBitmap = $hClone $sCLSID = _GDIPlus_EncodersGetCLSID("BMP") _GDIPlus_ImageSaveToFileEx($hBitmap, $file, $sCLSID, 0) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() EndIf _ClipBoard_SetData($tempdata) ; restore user clipboard EndFunc Remove the "example" part then you can include this code as a file.
  5. Hello there, I am currently using ImageSearch UDF Version 2021.8.30.1, AutoIt 3.3.16.0 on a Windows 11 machine. With the code shown below, I am able to move my mouse to the picture I search "picture.bmp" without a problem. If I start the script again with no changes in the script, it will not find the same picture again until, I restart the PC or re open the window with the picture in it. I want to search the picture x times and sometimes twice in a row. I thought about a cache problem, but didn't found any topics about that. Any ideas? I am using AutoIt not for the first time but I am still a beginner, go easy on me 🙌 Local $_Image_1 = @ScriptDir & "\images\picture.bmp" Local $return = _ImageSearch($_Image_1) If $return[0] = 1 Then         $return[0] = 0         MouseMove($return[1], $return[2])     EndIf
  6. hi guys i am using imagesearch2015 library. (used another one before) but transparency parameter doesn't working. how i can solve this problem. here's my code #include "ImageSearch2015.au3" #include <Date.au3> ; Script Start - Add your code below here Global $x = 0 Global $y = 0 HotKeySet("{UP}","hey") HotKeySet("{DOWN}","heyo") Func hey() $balikcisaniye = _Date_Time_GetTickCount() $array = _ImageSearchArea("bul.bmp", 1, 0, 0, @DesktopWidth, @DesktopHeight, $x, $y, 2,0x000000) if($array = True) Then $balikcisaniye1 = _Date_Time_GetTickCount() MouseMove($x,$y) MsgBox(1,"","Found." & $x & "-" & $y & " / " & $balikcisaniye1-$balikcisaniye) Else MsgBox(1,"","Not Found.") EndIf EndFunc Func heyo() exit EndFunc while 1 WEnd when i disable transparency parameter, it work normal. but with parameter, this function is always returning false. please help. here's library i use :
  7. Hello, I have been using Image Search UDF 2.0.2.0 without any issue, but today when I went to run the script I have been using for a few months now, I received the following error. How can I determine where the issues lies? Any suggestions on what the issue might be? As far as I can tell, the variable has been declared. I included the function from the UDF. Thanks! "c:\install\include\_ImageSearch_UDF.au3" (117) : ==> Variable used without being declared.: If (FileExists($ImageSearchDLL_Path) = 0) Then _ImageSearch_CheckDLL() If (FileExists(^ ERROR #include-once ; #INDEX# ======================================================================================================================= ; Title .........: ImageSearch ; AutoIt Version : 3.x ; Language ......: English ; Description ...: Check image Appears or Not and Return the position of an image on the desktop ; Author(s) .....: Dao Van Trong - TRONG.LIVE ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ; _ImageSearch($_ImagePath, $_Tolerance = 0, $_CenterPos = True) ; _ImageSearch_Area($_ImagePath, $P_x1 = 0, $P_y1 = 0, $P_x2 = @DesktopWidth, $P_y2 = @DesktopHeight, $_Tolerance = 0, $_CenterPos = True) ; _ImageSearch_Wait($_ImagePath, $_TimeOut, $_Tolerance = 0, $_CenterPos = True) ; _ImageSearch_WaitArea($_ImagePath, $_TimeOut, $P_x1, $P_y1, $P_x2 = @DesktopWidth, $P_y2 = @DesktopHeight, $_Tolerance = 0, $_CenterPos = True) ; =============================================================================================================================== ; #VARIABLE# =================================================================================================================== Global $ImageSearch_Debug = True Global Const $ImageSearch_SleepTime = 100 If $ImageSearch_Debug Then ConsoleWrite("--\\ ImageSearch //: DEBUG -- OSArch : " & @OSArch & " // AutoIT ver: " & @AutoItVersion & (@AutoItX64 = 1 ? " X64" : " x86") & @CRLF) Global $_ImageSearchDLL_Path = @TempDir & "\_ImageSearch.dll" If FileExists(@ScriptDir & "\_ImageSearch.dll") Then $_ImageSearchDLL_Path = @ScriptDir & "\_ImageSearch.dll" If @AutoItX64 Then $_ImageSearchDLL_Path = @TempDir & "\_ImageSearch_x64.dll" If FileExists(@ScriptDir & "\_ImageSearch_x64.dll") Then $_ImageSearchDLL_Path = @ScriptDir & "\_ImageSearch_x64.dll" EndIf Global Const $ImageSearchDLL_Path = $_ImageSearchDLL_Path ; =============================================================================================================================== ; #INTERNAL_USE_ONLY# =========================================================================================================== _ImageSearch_CheckDLL() ; =============================================================================================================================== ;=============================================================================== ; ; Author:...........: AutoIT VietNam : Dao Van Trong - TRONG.LIVE ; Description:......: Check image Appears or Not ; Find and return the position of an image on the desktop ; Syntax:........... _ImageSearch_Area, _ImageSearch ; Parameter(s):..... $_ImagePath: The image to locate on the desktop ; May be a list of image by delimited by "|" ; i.e: $_ImagePath = "image1.bmp|image2.bmp|image3.bmp" ; $P_x1 $P_y1: Position of 1st point ; $P_x2 $P_y2: Position of 2nd point - Default is last botton right of desktop ; $_Tolerance: 0 for no tolerance (0-255). Needed when colors of image differ from desktop. e.g GIF ; $_CenterPos: boolen. True will return $array[1] x $array[2] is center of image found. ; False will return top-left position ; Return Value(s):.. Return an array has 3 item ; On Success: $array[0] 1 ; On Failure: $array[0] 0 ; DLL not found or other error: $array[0] -1 ; $array[1] x $array[2]: position of image what found on desktop ; ; Note:............. Use _ImageSearch to search the entire desktop ; _ImageSearch_Area to specify a desktop region to search ; $_ImagePath with more item need more time appear on screen before function can detect. ; Decrease sleep time in the loop to detect faster. But less performance. I.e CPULoad increased ; ;=============================================================================== Func _ImageSearch($_ImagePath, $_Tolerance = 0, $_CenterPos = True) Return _ImageSearch_Area($_ImagePath, 0, 0, @DesktopWidth, @DesktopHeight, $_Tolerance, $_CenterPos) EndFunc ;==>_ImageSearch ; * -----:| Dao Van Trong - TRONG.LIVE Func _ImageSearch_Area($_ImagePath, $P_x1 = 0, $P_y1 = 0, $P_x2 = @DesktopWidth, $P_y2 = @DesktopHeight, $_Tolerance = 0, $_CenterPos = True) Local $_Return[3] = [0, 0, 0], $_TempVar, $i, $ImageSearchDLL_Path $_Return[0] = -1 If (FileExists($_ImagePath) = 0) And (StringInStr($_ImagePath, "|") = 0) Then If $ImageSearch_Debug Then ConsoleWrite("! Image file not found - Can't search !" & @CRLF & "! " & $_ImagePath & @CRLF) Return SetError(-1, 0, $_Return) EndIf If $P_x1 > $P_x2 Then ; change position to default top-left and botton-right $_TempVar = $P_x1 $P_x1 = $P_x2 $P_x2 = $_TempVar EndIf If $P_y1 > $P_y2 Then $_TempVar = $P_y1 $P_y1 = $P_y2 $P_y2 = $_TempVar EndIf Local $_Find_IMG_X, $_Find_IMG = StringSplit($_ImagePath, '|', 2) For $i = 0 To (UBound($_Find_IMG) - 1) Step +1 $_Find_IMG_X = $_Find_IMG[$i] If (FileExists($_Find_IMG_X) = 0) Then If $ImageSearch_Debug Then ConsoleWrite("! Image file not found !" & @CRLF & "! " & $_Find_IMG_X & @CRLF) ContinueLoop EndIf If $_Tolerance > 0 Then $_Find_IMG_X = "*" & $_Tolerance & " " & $_Find_IMG_X If (FileExists($ImageSearchDLL_Path) = 0) Then _ImageSearch_CheckDLL() Local $result = DllCall($ImageSearchDLL_Path, "str", "ImageSearch", "int", $P_x1, "int", $P_y1, "int", $P_x2, "int", $P_y2, "str", $_Find_IMG_X) If Not IsArray($result) Then ; dll not found or other error If $ImageSearch_Debug Then ConsoleWrite("! Dll not found or Call Dll error !" & @CRLF) $_Return[0] = -1 Return SetError(1, 0, $_Return) EndIf If Int($result[0]) = 0 Then ; search not found If $ImageSearch_Debug Then ConsoleWrite("! Search not found !" & @CRLF) $_Return[0] = 0 ContinueLoop Else $_Return[0] = 1 If $ImageSearch_Debug Then ConsoleWrite("+ Dll Return: " & $result[0] & @CRLF) Local $array = StringSplit($result[0], "|") If $_CenterPos Then $_Return[1] = Round(Number($array[2]) + (Number($array[4]) / 2)) $_Return[2] = Round(Number($array[3]) + (Number($array[5]) / 2)) If $ImageSearch_Debug Then ConsoleWrite("- CP: " & $_Return[1] & " " & $_Return[2] & @CRLF) Else $_Return[1] = Number($array[2]) $_Return[2] = Number($array[3]) If $ImageSearch_Debug Then ConsoleWrite("- : " & $_Return[1] & " " & $_Return[2] & @CRLF) EndIf ExitLoop EndIf Next Return $_Return EndFunc ;==>_ImageSearch_Area ; * -----:| Dao Van Trong - TRONG.LIVE ;=============================================================================== ; ; Description:......Wait for a specified number of milliseconds for an image to appear ; ; Syntax: _ImageSearch_Wait, _ImageSearch_WaitArea ; Author:...........This function copied from original UDF shared from autoitscript forum. ; I have rename them for easy to remember ; I dont know who are author. Please contact me if you are author of them. I will leave a copyright ; Parameter(s):.....$_ImagePath: The image to locate on the desktop ; May be a list of image by delimited by "|" ; i.e: $_ImagePath = "image1.bmp|image2.bmp|image3.bmp" ; $_TimeOut: Timeout wait after return "not found" result (in milliseconds) ; $P_x1 $P_y1: Position of first point ; $P_x2 $P_y2: Position of second point - Default is last botton right of desktop ; $_Tolerance: 0 for no tolerance (0-255). Needed when colors of image differ from desktop. e.g GIF ; $_CenterPos: boolen. True will return $array[1] x $array[2] is center of image found. False will return top-left position ; Return Value(s):..On Success: Returns 1 ; On Failure: Returns 0 ; $_ImagePath with more item need more time appear on screen before function can detect. ; Decrease sleep time in the loop to detect faster. But less performance. I.e CPULoad increased ; ;=============================================================================== Func _ImageSearch_Wait($_ImagePath, $_TimeOut, $_Tolerance = 0, $_CenterPos = True) Local $_Return[3] = [0, 0, 0] Local $_StartTime = TimerInit() While TimerDiff($_StartTime) < $_TimeOut Sleep($ImageSearch_SleepTime) $_Return = _ImageSearch_Area($_ImagePath, 0, 0, @DesktopWidth, @DesktopHeight, $_Tolerance, $_CenterPos) If $_Return[0] > 0 Then ExitLoop WEnd Return $_Return EndFunc ;==>_ImageSearch_Wait ; * -----:| Dao Van Trong - TRONG.LIVE Func _ImageSearch_WaitArea($_ImagePath, $_TimeOut, $P_x1, $P_y1, $P_x2 = @DesktopWidth, $P_y2 = @DesktopHeight, $_Tolerance = 0, $_CenterPos = True) Local $_Return[3] = [0, 0, 0] Local $_StartTime = TimerInit() While TimerDiff($_StartTime) < $_TimeOut Sleep($ImageSearch_SleepTime) $_Return = _ImageSearch_Area($_ImagePath, $P_x1, $P_y1, $P_x2, $P_y2, $_Tolerance, $_CenterPos) If $_Return[0] > 0 Then ExitLoop WEnd Return $_Return EndFunc ;==>_ImageSearch_WaitArea ; * -----:| Dao Van Trong - TRONG.LIVE Func _ImageSearch_CheckDLL() ; * -----:| ImageSearchDLL Binary Local $DllBinary = '0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000080100000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000D6EE294F928F471C928F471C928F471CD4DE9A1C908F471CD4DE981C968F471CD4DEA71C998F471CD4DEA61C908F471C9BF7C41C938F471C9BF7D41C9F8F471C928F461CD78F471C9FDDA21C918F471C9FDD9B1C938F471C9FDD9C1C938F471C9FDD991C938F471C52696368928F471C000000000000000000000000000000000000000000000000504500004C010500A488E25B0000000000000000E00002210B010C00002200000016000000000000FC290000001000000040000000000010001000000002000005000100000000000500010000000000008000000004000000000000020040010000100000100000000010000010000000000000100000006044000065000000C8440000A000000000600000E001000000000000000000000000000000000000007000005802000050410000380000000000000000000000000000000000000000000000000000001043000040000000000000000000000000400000300100000000000000000000000000000000000000000000000000002E74657874000000EB200000001000000022000000040000000000000000000000000000200000602E72646174610000320B000000400000000C000000260000000000000000000000000000400000402E64617461000000C8030000005000000002000000320000000000000000000000000000400000C02E72737263000000E0010000006000000002000000340000000000000000000000000000400000402E72656C6F6300005802000000700000000400000036000000000000000000000000000040000042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' $DllBinary &= 'B801000000C20C00CCCCCCCCCCCCCCCC568BF185F60F8497010000803E000F848E010000578B3DA440001068A441001056FFD783C40885C075035F5EC368AC41001056FFD783C40885C075085FB8C0C0C0005EC368B441001056FFD783C40885C075085FB8808080005EC368BC41001056FFD783C40885C075085FB8FFFFFF005EC368C441001056FFD783C40885C075085FB8800000005EC368CC41001056FFD783C40885C075085FB8FF0000005EC368D041001056FFD783C40885C075085FB8800080005EC368D841001056FFD783C40885C075085FB8FF00FF005EC368E041001056FFD783C40885C075085FB8008000005EC368E841001056FFD783C40885C075085FB800FF00005EC368F041001056FFD783C40885C075085FB8808000005EC368F841001056FFD783C40885C075085FB8FFFF00005EC3680042001056FFD783C40885C075085FB8000080005EC3680842001056FFD783C40885C075085FB80000FF005EC3681042001056FFD783C40885C075085FB8008080005EC3681842001056FFD783C40885C075085FB800FFFF005EC3682042001056FFD783C408F7D81BC0257F7F7FFF5F05808080005EC383C8FF5EC3CCCCCCCCCCCCCCCCCC568BF18BC68A1080FA20740580FA09750340EBF18A0884C9743F80F92D740580F92B750140803830752F8A480180F978740580F95875220FBE400250FF15A840001083C40485C074106A106A0056FF15AC40001083C40C5EC356FF15B040001083C4045EC3CCCCCCCCCCCCCCCCCCCCCC558BEC81EC6C040000A10050001033C58945FC8B450C53568B7508578BF98985B8FBFFFF8B45105289BDB0FBFFFF89B5A4FBFFFF8985ACFBFFFFFF15184000108985A8FBFFFF85C00F844302000033C9C785C0FBFFFF280000005166898DCEFBFFFF33DB8D8DC0FBFFFF889DBFFBFFFF515353535750FF151440001085C00F84E6010000668BBDCEFBFFFF0FB7C73B45140F8CD30100008B8DACFBFFFF6683FF100F94C088018B8DB8FBFFFF8B85C4FBFFFF89068B85C8FBFFFF89018B068BB5C8FBFFFF0FAFC68985B4FBFFFFC1E002508985A0FBFFFFFF15B84000108BD883C404899DACFBFFFF85DB0F847A0100006683FF080F94C08885BEFBFFFF84C0750CB820000000668985CEFBFFFF8BBDA8FBFFFFF7DE89B5C8FBFFFF8BB5B0FBFFFF5657FF15104000106A0089859CFBFFFF8D85C0FBFFFF508B85B8FBFFFF53FF306A005657FF151440001085C00F840501000080BDBEFBFFFF000F84F1000000B800040000E8F61C00008BC45068000100006A0057898598FBFFFFFF150C4000108B95A4FBFFFF8B02250300008079054883C8FC407409BF040000002BF8EB0233FF8B85B8FBFFFF8D73FF89BDB0FBFFFF8B088BC10FAFC70385B4FBFFFF03F08B85A0FBFFFF83C0FC03D833C08985B4FB' $DllBinary &= 'FFFF85C97E6E8B8DB8FBFFFF8D49002BF733FF393A7E4CEB068D9B000000000FB606478B8D98FBFFFF4E8B14818BC2C1E8080FB6C80FB6C2C1E0080BC8C1EA10C1E1080FB6C28B95A4FBFFFF0BC8890B83EB043B3A7CC88B85B4FBFFFF8B8DB8FBFFFF8BBDB0FBFFFF408985B4FBFFFF3B017C9B8BBDA8FBFFFF8B9DACFBFFFFC685BFFBFFFF018B859CFBFFFF85C074085057FF1510400010FFB5A8FBFFFFFF150840001080BDBFFBFFFF00751085DB740C53FF15A040001083C40433DB8BC38DA588FBFFFF5F5E5B8B4DFC33CDE8D61200008BE55DC3CCCCCCCCCCCCCCCC558BEC81EC74020000A10050001033C58945FC8B450C538B5D088985E0FDFFFFC700FFFFFFFF33C056578B7D108995D4FDFFFF898DD8FDFFFFC785E8FDFFFF0000000038010F84F706000085FF6A2E0F48F85189BDDCFDFFFFFF15BC4000108BF083C40885F674014683FF018B3DA44000100F8F0E01000085F6745F682842001056FFD783C40885C00F84F7000000682C42001056FFD783C40885C00F84E4000000683042001056FFD783C40885C00F84D1000000683442001056FFD783C40885C00F84BE000000683842001056FFD783C40885C00F84AB0000008B85DCFDFFFFC685E7FDFFFF0085C07E178B8DE0FDFFFF8B85E8FDFFFFC70101000000E9CD00000085F67477683C42001056FFD783C40885C075178B8DE0FDFFFF8B85E8FDFFFFC70101000000E9A3000000684042001056FFD783C40885C0742E684442001056FFD783C40885C0741F684842001056FFD783C40885C075248B8DE0FDFFFF89018B85E8FDFFFFEB668B8DE0FDFFFF8B85E8FDFFFFC70102000000EB528B85E8FDFFFFEB448B85E0FDFFFFC685E7FDFFFF01C700010000008B85DCFDFFFF85C07E0348EB0233C050FFB5D8FDFFFFFF3554530010FF15F84000108985E8FDFFFF83F8020F824F0300008B8DE0FDFFFF8B95D4FDFFFF83FAFF740583FBFF750885D2741785DB741383FAFF740583FBFF7513C685EFFDFFFF01EB1133DB33D28995D4FDFFFFC685EFFDFFFF0085C00F85A40000008B0983F9FF0F8E990000003885EFFDFFFF740433D2EB028BC36810200000505251FFB5D8FDFFFF6A00FF15004100108985E8FDFFFF85C0741A80BDEFFDFFFF0075625F5E5B8B4DFC33CDE8671000008BE55DC3FFB5D8FDFFFFFF157440001083F8FF0F849D0200008B85DCFDFFFF85C07E2C4850FFB5D8FDFFFFFF3554530010FF15F84000108985E8FDFFFF83F8020F8270020000C685E7FDFFFF01EB068B85E8FDFFFFC785D0FDFFFF0000000085C00F85740100008B85E0FDFFFFC7000000000085F67439685442001056FFD783C40885C00F84E5010000685842001056FFD783C40885C00F84D2010000686042001056FFD783C40885C00F84BF010000684C420010FF157C4000108BF885FF' $DllBinary &= '0F84AA0100008B3570400010686442001057FFD66874420010578985CCFDFFFFFFD66884420010578985C4FDFFFFFFD668A0420010578985C0FDFFFFFFD668BC420010578985C8FDFFFFFFD68BF0C785ACFDFFFF010000008B85CCFDFFFFC785B0FDFFFF00000000C785B4FDFFFF00000000C785B8FDFFFF0000000085C00F848B0000006A008D8DACFDFFFF518D8DBCFDFFFF51FFD085C0757568040100008D85F0FDFFFF506AFFFFB5D8FDFFFF6A006A00FF156C4000108D85DCFDFFFF508D85F0FDFFFF50FF95C0FDFFFF85C0753368808080008D85E8FDFFFF50FFB5DCFDFFFFFF95C8FDFFFF8B8DE8FDFFFF33D2FFB5DCFDFFFF85C00F45CA898DE8FDFFFFFFD6FFB5BCFDFFFFFF95C4FDFFFF57FF15684000108B85E8FDFFFF80BDEFFDFFFF008BBDE0FDFFFF0F8470020000833F00741C8D8DA8FDFFFF5150FF152041001085C00F84710200008B85B4FDFFFF8D8D90FDFFFF516A1850FF151C40001083FBFF0F85950100008B8594FDFFFF85C00F84C7010000660F6E8D98FDFFFFF30FE6C9660F6EC0F30FE6C0F20F5EC8660F6E85D4FDFFFFF30FE6C0F20F59C8F20F580DF8420010F20F2CD9E98E0100006A006A006A036A006A006800000080FFB5D8FDFFFFFF15644000108BF883FFFF74256A0057FF1560400010506A028985DCFDFFFFFF155C4000108BF085F6751A57FF155840001033C05F5E5B8B4DFC33CDE8A20D00008BE55DC356FF155440001085C0752157FF155840001056FF153C40001033C05F5E5B8B4DFC33CDE8760D00008BE55DC36A008D8DDCFDFFFF51FFB5DCFDFFFF5057FF152C40001056FF153040001057FF15584000108D85CCFDFFFF506A0056FF152841001085C078AD8B85CCFDFFFF85C074A38D8DD0FDFFFF5168884100106A006A0050FF15F04000108B8DD0FDFFFF33D285C08B85CCFDFFFF500F48CA898DD0FDFFFF8B08FF510856FF153C4000108B8DD0FDFFFF85C90F8433FFFFFF8B018D95E8FDFFFF5251FF500C8B85E8FDFFFF85C00F853DFEFFFF8B85D0FDFFFF508B08FF510833C05F5E5B8B4DFC33CDE8AE0C00008BE55DC38B8598FDFFFF85C07436660F6E8D94FDFFFF660F6EC0F30FE6C9F30FE6C0F20F5EC8660F6EC3F30FE6C0F20F59C8F20F580DF8420010F20F2CC18985D4FDFFFF833F007456FFB5B8FDFFFF8B3504400010FFD6FFB5B4FDFFFFFFD680BDE7FDFFFF007537FFB5E8FDFFFFFF151C4100108B95D4FDFFFF6A105352FF37FFB5D8FDFFFF6A00FF15004100105F5E5B8B4DFC33CDE8130C00008BE55DC38B85E8FDFFFF83BDD0FDFFFF008B95D4FDFFFF745B85D2752885DB75248D4A04EB21FFB5E8FDFFFFFF151C41001033C05F5E5B8B4DFC33CDE8D20B00008BE55DC333C95153526A0050FF15184100108B8DD0FDFFFF8BF0518B11FF52088BC65F5E5B8B4DFC33CDE8' $DllBinary &= 'A30B00008BE55DC385D2750485DB740F6A0C5352FF3750FF15184100108BF08B4DFC5F5E33CD5BE87B0B00008BE55DC3CCCCCCCCCCCCCCCCCCCCCCCCCC558BEC83EC4CA10050001033C58945FC538BD9565785DB751333C05F5E5B8B4DFC33CDE8420B00008BE55DC333F656FF1514410010508945E8FF15184000108BF885FF0F84C90000008D45B45053FF152041001085C00F84AF0000008D45C8506A18FF75C4FF151C40001085C00F8486000000FF75D0FF75CCFF75E8FF15244000108BF08975E485F6746E5657FF15104000108945E085C0745F8B4DCC894DF48B4DD06880808000C745EC00000000C745F000000000894DF8FF15004000108BF08D45EC565057FF151041001056FF15044000106A036A006A00FF75D0FF75CC536A006A0057FF150C410010FF75E057FF15104000108B75E4FF75C4FF1504400010FF75C0FF150440001057FF1508400010FF75E86A00FF150441001053FF151C4100108B4DFC8BC65F5E33CD5BE8370A00008BE55DC3CCCCCCCCCCCCCCCCCC558BEC8B450803C05DC20400CCCCCCCC558BEC83E4F881ECB4000000A10050001033C4898424B00000005356578B7D180F57C06A2E33DBC74424180000000057F30F7F842494000000C7442438FFFFFFFFC744245800000000895C2428FF15BC4000108BF083C40885F6744C8B1DA440001046683C42001056FFD383C40885C0741E682842001056FFD383C40885C0740F682C42001056FFD383C40885C075168B35084100106A31FFD66A328BD8FFD689442420EB0233DB8BF78D9B000000008A063C2074043C09750346EBF3803E2A0F857B0200000FBE4601468B3DC440001050FF15C040001083C40483F8480F848401000083F8570F84150100006A0468D042001056FFD783C40C85C0751383C6048BCEE828F3FFFF89442450E9C50100006A0568D842001056FFD783C40C85C00F85A80000006A1F83C6058D8424A00000005650FF15B44000108A9424A80000008DBC24A800000083C40CC68424BB0000000084D27422B9E0420010B0208BFF3AD074128A41014184C075F48A57014784D275E3EB03C607008D8C249C000000E8FBF0FFFF8BC883F9FF751E6A108D8424A00000006A0050FF15AC40001083C40C89442430E92C0100008BC1C1E8080FB6D00FB6C1C1E0080BD0C1E910C1E2080FB6C10BD089542430E9080100008BCEE85BF2FFFF8944241485C0790DC744241400000000E9EC0000003DFF0000000F8EE1000000C7442414FF000000E9D40000008D7E018BC78A0880F920740580F909750340EBF18A0884C9744180F92D740580F92B75014080383075318A480180F978740580F95875240FBE400250FF15A840001083C40485C074126A106A0057FF15AC40001083C40C8BD8EB7957FF15B04000108BD8EB6B8D7E018BC78D49008A0880F9' $DllBinary &= '20740580F909750340EBF18A0884C9744380F92D740580F92B75014080383075338A480180F978740580F95875260FBE400250FF15A840001083C40485C074146A106A0057FF15AC40001083C40C89442420EB0E57FF15B04000108944242483C40485F60F84A00000008A1684D20F8496000000EB068D9B00000000B9E0420010B0203AD0742C8A41014184C075F48A56014684D275E5B8E44200105F5E5B8B8C24B000000033CCE8F90600008BE55DC214008D7E018BF78D6424008A063C2074083C090F857FFDFFFF46EBEF51FF7424548D4424488BD350FF74242C8BCFE8F8F3FFFF8BD883C410895C246485DB74196A00FF15144100108BF8897C245C85FF752353FF1504400010B8E44200105F5E5B8B8C24B000000033CCE8860600008BE55DC2140033C933F6837C244001894C2450894C241C894C2434894C2474884C241175658D4424785053FF152041001085C074408B8C24840000008D4424126A01508D4424288BD7508D44244450E8B8F0FFFF83C41089442434FFB42488000000FF1504400010FFB42484000000FF15044000108BCBE8A0FAFFFF8BD88944246485DB0F8460FFFFFF6A088D4424168BD7508D4424288BCB508D44244450E868F0FFFF83C4108944242485C00F84A90500008B75108B7D142B75082B7D0C46FF74245C47FF15184000108BD8895C241885DB0F847F0500005756FF742464FF15244000108944245085C00F84670500005053FF15104000108944247485C00F8453050000682000CC00FF750CFF7508FF74246857566A006A0053FF152040001085C00F842F0500008B4C24508D4424136A08508D4424688BD3508D44245850E8C7EFFFFF8BD083C4108954241C85D20F84020500008B74244C8BDE8B7C24380FAF7C24200FAF5C2460807C241200897C2454895C2458750B807C2413000F84CA0000008B44243083F8FF740925F8F8F8008944243033C985DB7E4E83FB0472398BC3250300008079054883C8FC40660F6F0D004300108BD32BD08B44241CF30F6F0083C1048D4010660FDBC1F30F7F40F03BCA7CE98B54241C3BCB7D0C81248AF8F8F800413BCB7CF433C985FF7E7583FF04723E8BC7250300008079054883C8FC40660F6F0D004300108BD72BD08B442424EB078DA42400000000F30F6F0083C1048D4010660FDBC1F30F7F40F03BCA7CE98B4424243BCF7D0D90812488F8F8F800413BCF7CF48B54241CEB048B44242485FF7E0F83C0038BCF90C600008D40044975F7837C2414010F8D0402000085DB7E118D42038BCB8D4900C600008D40044975F733DB895C242C395C24580F8EE60000008B4424248B08894C2428EB0B8DA424000000008D6424008D049D0000000089442448390C1074178B44243485C07405833800750A3B4C24300F858D0100008BC38B4C246099F7FE2BC8394C24' $DllBinary &= '200F8F700100008BC62BC2394424380F8F6201000033D2C64424110133FF8BC3897C2444395424547E708B7424348B4C24242BF1C644241101897424408B7C241C8B313934878B7C2444741D837C243400740C8B742440833C0E008B31750A3B7424300F8501010000423B5424387D0340EB158B74244C33D28D04B5000000000144244803DE8BC34783C104897C24443B7C24547CA78B5C242C8B742418FF74245C6A00FF1504410010FF7424648B3D04400010FFD785F674178B44247485C074085056FF151040001056FF15084000108B44245085C0740350FFD78B4424248B35A040001085C0740650FFD683C4048B44243485C0740650FFD683C4048B44241C85C0740650FFD683C404807C2411000F84F2FBFFFF8BC399F77C244CFF7424202B842494000000FF74243C03450C2B942494000000035508505268E84200106858530010E8400200008B8C24D400000083C418B8585300105F5E5B33CCE8410200008BE55DC214008B5C242C8B74244CC6442411008B4C24288B54241C43895C242C3B5C24580F8C3DFEFFFFE907FFFFFF33DB895C242C395C24580F8EF7FEFFFF8BC38B4C246099F7FE2BC8394C24200F8F4D0100008BC62BC2394424380F8F3F01000033C9C644241101894C2444894C2440895C244885FF0F8EB9FEFFFF8B4424248D0C9D00000000894C246C8B4C24342BC8C644241101895C247089442428894C24688D6424008A48028A58018A200FB6D18864243F395424147E07C644241200EB0A8AC12A442414884424120FB6F3397424147E07C644241300EB0A8AC32A442414884424130FB6FC397C24147E0432FFEB068AFC2A7C2414B8FF0000002BC28B5424143BD07E0580CEFFEB048AF202F18B4C2414B8FF0000002BC63BC87E0580CDFFEB048AE902EBB8FF0000002BC7394424147E0580C9FFEB088A4C2414024C243F8B7C24488B74241C8A54BE028A44BE018A1CBE3A54241272163AD677123A442413720C3AC577083ADF72043AD97642837C2434008B442428740A8B4C2468833C080075318B4C2430390874298B5C242C8B74244C8B7C2454C64424110043895C242C3B5C24580F8C8FFEFFFFE981FDFFFF8B4424288B74244446897424443B7424387D0747897C2448EB258B54244C33C98B7C2470894C24448D0C9500000000014C246C03FA8BCF897C2470894C24488B74244083C0044689442428897424403B7424540F8C99FEFFFFE91FFDFFFF8B7424188B5C2468E91AFDFFFFCCCCCCCCCCCCCC558BEC8D451050FF750C6A32FF7508FF15C840001083C4105DC33B0D005000107502F3C3E9D6030000566880000000FF1584400010598BF056FF154C400010A3C0530010A3BC53001085F6750533C0405EC3832600E88D07000068972F0010E8D2060000C70424C42F0010E8C60600005933C05EC355' $DllBinary &= '8BEC5151837D0C005356570F8529010000A12050001085C00F8E1501000048BBB4530010A32050001033FF64A118000000897DFC8B5004EB043BC2740E33C08BCAF00FB10B85C075F0EB07C745FC01000000833DB853001002740D6A1FE82804000059E982010000FF35C0530010FF15484000108BF089751085F60F849A000000FF35BC530010FF15484000108BD889750C895D0883EB043BDE725C393B74F557FF154C400010390374EAFF33FF1548400010578BF0FF154C4000108903FFD6FF35C05300108B3548400010FFD6FF35BC5300108945F8FFD68B4DF8394D0C75088B751039450874AC8BF1894D0C8975108BD8894508EB9D83FEFF740856FF15A04000105957FF154C400010A3BC530010BBB4530010A3C0530010893DB8530010397DFC0F85C000000033C08703E9B700000033C0E9B3000000837D0C010F85A600000064A11800000033FF8BF7BBB45300108B5004EB043BC2740E33C08BCAF00FB10B85C075F0EB0333F646393DB85300106A025F74096A1FE80B030000EB3568444100106838410010C705B853001001000000E81E060000595985C0759368344100106830410010E80306000059893DB85300105985F6750433C08703833DC453001000741C68C4530010E8180300005985C0740DFF751057FF7508FF15C4530010FF052050001033C0405F5E5B8BE55DC20C00558BEC837D0C017505E8D1040000FF7510FF750CFF7508E80700000083C40C5DC20C006A1068F8430010E8A505000033C0408BF08975E433DB895DFC8B7D0C893D105000108945FC85FF750C393D205000100F84D40000003BF8740583FF027538A19841001085C0740EFF751057FF7508FFD08BF08975E485F60F84B1000000FF751057FF7508E87DFDFFFF8BF08975E485F60F8498000000FF751057FF7508E85FE5FFFF8BF08975E483FF01752E85F6752AFF751053FF7508E845E5FFFFFF751053FF7508E83EFDFFFFA19841001085C07409FF751053FF7508FFD085FF740583FF03754BFF751057FF7508E817FDFFFFF7D81BC023F08975E47434A19841001085C0742BFF751057FF7508FFD08BF0EB1B8B4DEC8B018B008945E05150E86A0100005959C38B65E833DB8BF38975E4895DFCC745FCFEFFFFFFE80B0000008BC6E8D2040000C38B75E4C70510500010FFFFFFFFC3558BECFF15444000106A01A344530010E8E5040000FF7508E8E3040000833D4453001000595975086A01E8CB0400005968090400C0E8CC040000595DC3558BEC81EC240300006A17E8DD04000085C074056A0259CD29A328510010890D24510010891520510010891D1C510010893518510010893D14510010668C1540510010668C0D34510010668C1D10510010668C050C510010668C2508510010668C2D045100109C8F05385100108B4500A32C5100108B4504' $DllBinary &= 'A3305100108D4508A33C5100108B85DCFCFFFFC7057850001001000100A130510010A334500010C70528500010090400C0C7052C50001001000000C70538500010010000006A04586BC000C7803C500010020000006A04586BC0008B0D00500010894C05F86A0458C1E0008B0D04500010894C05F8689C410010E8CCFEFFFF8BE55DC3FF25CC400010FF25D0400010CCCCCCCCCCCCCCCCCCCC558BEC8B450833D25356578B483C03C80FB741140FB7590683C01803C185DB741B8B7D0C8B700C3BFE72098B480803CE3BF9720A4283C0283BD372E833C05F5E5B5DC3CCCCCCCCCCCCCCCCCCCCCCCCCC558BEC6AFE6820440010682930001064A1000000005083EC08535657A1005000103145F833C5508D45F064A3000000008965E8C745FC000000006800000010E87C00000083C40485C074548B45082D00000010506800000010E852FFFFFF83C40885C0743A8B4024C1E81FF7D083E001C745FCFEFFFFFF8B4DF064890D00000000595F5E5B8BE55DC38B45EC8B0033C98138050000C00F94C18BC1C38B65E8C745FCFEFFFFFF33C08B4DF064890D00000000595F5E5B8BE55DC3CCCCCCCCCCCC558BEC8B4508B94D5A0000663908740433C05DC38B483C03C833C0813950450000750CBA0B010000663951180F94C05DC3833DC053001000740333C0C3566A046A20FF159440001059598BF056FF154C400010A3C0530010A3BC53001085F675056A18585EC383260033C05EC36A146840440010E8A70100008365DC00FF35C05300108B3548400010FFD68945E483F8FF750CFF7508FF158C40001059EB656A08E808020000598365FC00FF35C0530010FFD68945E4FF35BC530010FFD68945E08D45E0508D45E450FF75088B354C400010FFD650E8E001000083C40C8BF8897DDCFF75E4FFD6A3C0530010FF75E0FFD6A3BC530010C745FCFEFFFFFFE80B0000008BC7E85C010000C38B7DDC6A08E8A001000059C3558BECFF7508E84CFFFFFFF7D8591BC0F7D8485DC3558BEC83EC148365F4008365F800A1005000105657BF4EE640BBBE0000FFFF3BC7740D85C67409F7D0A304500010EB668D45F450FF15504000108B45F83345F48945FCFF15344000103145FCFF15384000103145FC8D45EC50FF15784000108B4DF08D45FC334DEC334DFC33C83BCF7507B94FE640BBEB1085CE750C8BC10D11470000C1E0100BC8890D00500010F7D1890D045000105F5E8BE55DC35657BEE8430010BFE8430010EB0B8B0685C07402FFD083C6043BF772F15F5EC35657BEF0430010BFF0430010EB0B8B0685C07402FFD083C6043BF772F15F5EC3CCFF25D8400010FF25DC4000106848530010E8A200000059C3682930001064FF35000000008B442410896C24108D6C24102BE0535657A1005000103145FC33C5508965E8FF75F88B45FCC745FCFEFFFFFF' $DllBinary &= '8945F88D45F064A300000000C38B4DF064890D00000000595F5F5E5B8BE55D51C3558BECFF7514FF7510FF750CFF750868AA2700106800500010E82F00000083C4185DC3FF25E0400010FF25E4400010FF25D4400010FF259C400010FF2598400010FF2590400010FF2588400010FF25E8400010FF2540400010CCCCCCCCCCCCCCCCCCCCCCCCCCCC518D4C24082BC883E10F03C11BC90BC159E91A000000518D4C24082BC883E10703C11BC90BC159E904000000CCCCCCCC518D4C24042BC81BC0F7D023C88BC42500F0FFFF3BC8720A8BC159948B00890424C32D001000008500EBE900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000864800005C4800005048000036480000264800001A48000004480000F64700009A4800006C480000000000004847000054470000024B0000EC4A00003A470000B64A0000A24A0000924A0000824A0000184B00002C4700001E4700001047000002470000F4460000E6460000D0460000BE460000A8460000D24A000098460000000000009C490000444A00003A4A00002C4A00001E4A0000144A00000C4A0000FA480000024900000E4900001A490000244900002C49000036490000404900004A49000054490000604900007C4900008E490000F4490000AA490000B6490000C4490000DA490000684A000000000000A201008000000000AE4800000000000072470000CA470000D6470000BC470000B0470000A84700009C4700008E4700008047000000000000CA48000000000000000000000000000000000000B9270010E12D001000000000000000000000000000000000A488E25B000000000200000068000000584300005829000000000000A488E25B000000000C00000014000000C0430000C02900008009F87B32BF1A108BBB00AA00300CAB000000002850001078500010426C61636B00000053696C7665720000477261790000000057686974650000004D61726F6F6E000052656400507572706C6500004675636873696100477265656E0000004C696D65000000004F6C69766500000059656C6C6F7700004E6176790000000042' $DllBinary &= '6C7565000000005465616C00000000417175610000000044656661756C740065786500646C6C0069636C0063706C007363720069636F0063757200616E6900626D7000676469706C7573006A7067006A7065670000000067696600476469706C7573537461727475700000476469706C757353687574646F776E00476469704372656174654269746D617046726F6D46696C650000000047646970437265617465484249544D415046726F6D4269746D61700047646970446973706F7365496D6167650000000049636F6E000000005472616E730000002009000030000000317C25647C25647C25647C2564000000000000000000E03FF8F8F800F8F8F800F8F8F800F8F8F80048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500010E04300100100000052534453926C9C4BED0F06458B854963598D72DE01000000413A5C5F4175746F49745F5F5F5F5C5F50726F6A6563745F5F5F5C5F494D475365617263685C496D616765536561726368444C4C5C52656C656173655C496D616765536561726368444C4C2E706462000100000010000000100000000000000000000000000000000000000000000000293000000000000000000000000000000000000000000000FEFFFFFF00000000D0FFFFFF00000000FEFFFFFF00000000442B0010000000000F2B0010232B0010FEFFFFFF00000000D8FFFFFF00000000FEFFFFFF792D00108C2D001000000000FEFFFFFF00000000CCFFFFFF00000000FEFFFFFF00000000BA2E00100000000000000000A388E25B000000009C440000010000000200000002000000884400009044000098440000901D0000801D0000AF440000BB44000000000100496D616765536561726368444C4C2E646C6C00496D61676553656172636800496D6167655465737400000000944500000000000000000000644700002C400000684600000000000000000000EA47000000410000684500000000000000000000A448000000400000604600000000000000000000BE480000F8400000904600000000000000000000E248000028410000584600000000000000000000EC480000F0400000EC45000000000000000000006E490000844000000000000000000000000000000000000000000000864800005C4800005048000036480000264800001A48000004480000F64700009A4800006C480000000000004847000054470000024B0000EC4A00003A470000B64A0000A24A0000924A0000824A0000184B00002C4700001E4700001047000002470000F4460000E6460000D0460000BE460000A8460000D24A000098460000000000009C490000444A00003A4A00002C4A00001E4A0000144A00000C4A0000FA48' $DllBinary &= '0000024900000E4900001A490000244900002C49000036490000404900004A49000054490000604900007C4900008E490000F4490000AA490000B6490000C4490000DA490000684A000000000000A201008000000000AE4800000000000072470000CA470000D6470000BC470000B0470000A84700009C4700008E4700008047000000000000CA480000000000003C034C6F61644C696272617279410000E50147657446696C6541747472696275746573410000450247657450726F6341646472657373000067034D756C746942797465546F5769646543686172006201467265654C69627261727900880043726561746546696C654100F00147657446696C6553697A6500B302476C6F62616C416C6C6F63005200436C6F736548616E646C6500BE02476C6F62616C4C6F636B0000BA02476C6F62616C467265650000C0035265616446696C650000C502476C6F62616C556E6C6F636B00004B45524E454C33322E646C6C0000EE014C6F6164496D616765410000330147657449636F6E496E666F00A30044657374726F7949636F6E005400436F7079496D616765002101476574444300F60046696C6C526563740000C8004472617749636F6E45780000650252656C656173654443007E0147657453797374656D4D65747269637300005553455233322E646C6C0000FB014765744F626A6563744100003000437265617465436F6D70617469626C6544430000CA0147657444494269747300770253656C6563744F626A6563740000120247657453797374656D50616C65747465456E747269657300E30044656C65746544430000E60044656C6574654F626A65637400002F00437265617465436F6D70617469626C654269746D617000005400437265617465536F6C6964427275736800001300426974426C74000047444933322E646C6C0027004578747261637449636F6E4100005348454C4C33322E646C6C00860043726561746553747265616D4F6E48476C6F62616C006F6C6533322E646C6C004F4C4541555433322E646C6C00008306667265650000B2045F73747269636D700000B906697378646967697400004807737472746F6C0000EF0561746F6900003C077374726E63707900DB066D616C6C6F630000400773747272636872005D07746F757070657200BC045F7374726E69636D7000730776737072696E74665F7300004D535643523132302E646C6C00006F015F5F4370705863707446696C7465720017025F616D73675F657869740000A5035F6D616C6C6F635F637274000C035F696E69747465726D000D035F696E69747465726D5F650050025F6372745F64656275676765725F686F6F6B0000AC015F5F637274556E68616E646C6564457863657074696F6E00AB015F5F6372745465726D696E61746550726F63657373' $DllBinary &= '0094035F6C6F636B0004055F756E6C6F636B002E025F63616C6C6F635F63727400AE015F5F646C6C6F6E65786974003A045F6F6E65786974008C015F5F636C65616E5F747970655F696E666F5F6E616D65735F696E7465726E616C00007A025F6578636570745F68616E646C6572345F636F6D6D6F6E00EA00456E636F6465506F696E74657200CA004465636F6465506F696E7465720000034973446562756767657250726573656E74000403497350726F636573736F724665617475726550726573656E7400A7035175657279506572666F726D616E6365436F756E74657200C10147657443757272656E7450726F63657373496400C50147657443757272656E7454687265616449640000790247657453797374656D54696D65417346696C6554696D650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EE640BBB119BF440000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' $DllBinary &= '000001001800000018000080000000000000000000000000000001000200000030000080000000000000000000000000000001000904000048000000606000007D010000000000000000000000000000000000003C3F786D6C2076657273696F6E3D27312E302720656E636F64696E673D275554462D3827207374616E64616C6F6E653D27796573273F3E0D0A3C617373656D626C7920786D6C6E733D2775726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763127206D616E696665737456657273696F6E3D27312E30273E0D0A20203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0A202020203C73656375726974793E0D0A2020202020203C72657175657374656450726976696C656765733E0D0A20202020202020203C726571756573746564457865637574696F6E4C6576656C206C6576656C3D276173496E766F6B6572272075694163636573733D2766616C736527202F3E0D0A2020202020203C2F72657175657374656450726976696C656765733E0D0A202020203C2F73656375726974793E0D0A20203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E0D0A000000000000000000000000000000000000000000000000000000000000000000000000100000F800000027302C303E3055306C3083309A30B130C830DF30F6300D3124313B315231693180319731FE3110321C323A326C32A832093355337733AD339634A234B634EA343B354E355D35703583359635A935E8350E361D362C36913697361F374F3770377637BB37CE37E137F437FA370A380F381738253833384138B638143940395E39A539C939D939E839F5390F3A1A3A213A4B3A523A593A693A833A8E3AB43A323B4D3B6C3B863BC53BE63B1C3C473C713C7B3C903CA73CBE3CCF3CFB3C093D103D283D323D3E3D473D4E3D593D603D9D3DDF3DEE3DF43D033E123E223E5D3E643E803EA43EC63EE83E2A3FD03FE23FF03F002000002001000039304B305B3081309C30F9300A310F31513188319531EB31053219324132D7322B33AB34B534CB34D234E734423547355B35A137AC37C137CB37D037D537EB37F737183826382B385A387038763889388F38A938B538BE38C838CE38D63806390E39133918391D3923395539753988398D399339A739AC39B839C739CF39E639EC39223A3D3A4A3A5E3AC83AFA3A493B573B5E3B713BA93BAF3BB53BBB3BC13BC73BCE3BD53BDC3BE33BEA3BF13BF83B003C083C103C1C3C253C2A3C303C3A3C443C543C643C743C7D3C8C3C923CF63CFB3C0D3D2B3D3F3D453DE33DF43DFF3D043E093E203E2F3E353E483E5D3E683E7E3E983EA23EEA3E053F113F203F293F363F653F6D3F7A3F7F3F9A3F9F' $DllBinary &= '3FBA3FC03FC53FD13FEE3F003000002000000039303E304E3054305A30603066306C30723078307E30000000400000200000003C3140319C31A0314C335033103418341C3434343834583400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' ; * -----:| ImageSearchDLL Binary x64 Local $DllBinary_x64 = '0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000F80000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000FA7C1F43BE1D7110BE1D7110BE1D7110F84CAC10BC1D7110F84CAE10BF1D7110F84C9110B51D7110F84C9010BC1D7110B765F210BF1D7110B765E210B31D7110BE1D7010F91D7110B34F9410BD1D7110B34FAD10BF1D7110B34FAA10BF1D7110B34FAF10BF1D711052696368BE1D711000000000000000005045000064860600A689E25B0000000000000000F00022200B020C0000240000001E000000000000CC2C000000100000000000800100000000100000000200000500020000000000050002000000000000900000000400000000000002006001000010000000000000100000000000000000100000000000001000000000000000000000100000008047000065000000E8470000A000000000700000E0010000006000008C01000000000000000000000080000014000000A0420000380000000000000000000000000000000000000000000000000000008044000070000000000000000000000000400000680200000000000000000000000000000000000000000000000000002E74657874000000CB230000001000000024000000040000000000000000000000000000200000602E72646174610000A60F0000004000000010000000280000000000000000000000000000400000402E6461746100000070060000005000000002000000380000000000000000000000000000400000C02E706461746100008C0100000060000000020000003A0000000000000000000000000000400000402E72737263000000E00100000070000000020000003C0000000000000000000000000000400000402E72656C6F630000140000000080000000020000003E0000000000000000000000000000400000420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' $DllBinary_x64 &= 'B801000000C3CCCCCCCCCCCCCCCCCCCC40534883EC20803900488BD9750983C8FF4883C4205BC3488D15D2320000FF151431000085C075064883C4205BC3488D15C3320000488BCBFF15FA30000085C0750BB8C0C0C0004883C4205BC3488D15AC320000488BCBFF15DB30000085C0750BB8808080004883C4205BC3488D1595320000488BCBFF15BC30000085C0750BB8FFFFFF004883C4205BC3488D157E320000488BCBFF159D30000085C0750BB8800000004883C4205BC3488D1567320000488BCBFF157E30000085C0750BB8FF0000004883C4205BC3488D154C320000488BCBFF155F30000085C0750BB8800080004883C4205BC3488D1539320000488BCBFF154030000085C0750BB8FF00FF004883C4205BC3488D1522320000488BCBFF152130000085C0750BB8008000004883C4205BC3488D150B320000488BCBFF150230000085C0750BB800FF00004883C4205BC3488D15F4310000488BCBFF15E32F000085C0750BB8808000004883C4205BC3488D15DD310000488BCBFF15C42F000085C0750BB8FFFF00004883C4205BC3488D15C6310000488BCBFF15A52F000085C0750BB8000080004883C4205BC3488D15AF310000488BCBFF15862F000085C0750BB80000FF004883C4205BC3488D1598310000488BCBFF15672F000085C0750BB8008080004883C4205BC3488D1581310000488BCBFF15482F000085C0750BB800FFFF004883C4205BC3488D156A310000488BCBFF15292F000083C9FFBA8080800085C00F44CA8BC14883C4205BC3CCCCCCCCCCCCCCCCCCCCCCCC40534883EC20488BD9488BD10F1F40000FB6023C2074043C09750548FFC2EBF00FB60284C0743B2C2BA8FD750348FFC2803A30752D0FB642012C58A8DF75230FBE4A02FF150F2F000085C0741533D2488BCB448D42104883C4205B48FF25CE2E0000488BCB4883C4205B48FF25B72E0000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC405553565741544155415641574881ECA8040000488D6C2440488B05203D00004833C54889855004000033FF488BDA488BC1488D551048894D08488B8DD8040000897C24304889542428498BF14D8BE0488BD04533C94533C048894D00448BF74532FFC745102800000066897D1E48897C2420FF150F2D000085C00F84A50100000FB77D1E3BBDD00400000F8C930100006683FF100F94C088068B45148B75188903418934248B030FAFC64C63E84A8D0CAD00000000FF15E42D00004C8BF04885C00F845C0100006683FF08400F94C74084FF7509B8200000006689451E488B4D00F7DE897518488B7508488BD6FF155C2C0000458B0C24488BD6488B750048894508488D4510C74424300000000048894424284533C0488BCE4C89742420FF15632C000085C00F84E20000004084FF0F84D60000008B0424B800040000482BE0' $DllBinary_x64 &= '488D7424408B06488B4D004C8BCE33D241B800010000FF150B2C00008B0325030000807D07FFC883C8FCFFC085C0740B41B804000000442BC0EB034533C0418B14244D8D5DFF33FF8BC24F8D1C9E410FAFC04863C8498D46FF4903CD4803C185D27E644D63F8660F1F8400000000004533D2492BC74439137E450F1F4400000FB60841FFC24983EB04448B048E48FFC8410FB7C866C1E908440FB6C9418BC8C1E91041C1E1080FB6D1410FB6C8C1E110440BCA440BC945894B04443B137CC0FFC7413B3C247CA8488B750041B701488B45084885C0740C488BD0488BCEFF152C2B000033FF488B4D00FF15102B00004584FF75134D85F6740E498BCEFF15552C0000488BC7EB03498BC6488B8D500400004833CDE8E6140000488DA568040000415F415E415D415C5F5E5B5DC3CCCC40555356574154415541564157488DAC2408FEFFFF4881ECF8020000488B05AD3A00004833C4488985E0010000448BAD6002000033FF448BF28D572E4585ED4D8BF9418BF04C8BE148894C2458440F48EF48897C2448FF15FC2B0000488BD84885C0740348FFC34183FD010F8FF20000004885DB7474488D15DB2D0000488BCBFF15922B000085C00F84D5000000488D15C72D0000488BCBFF157A2B000085C00F84BD000000488D15B32D0000488BCBFF15622B000085C00F84A5000000488D159F2D0000488BCBFF154A2B000085C00F848D000000488D158B2D0000488BCBFF15322B000085C0747940887C24404585ED0F8FA50000004885DB0F84A3000000488D15642D0000488BCBFF15072B000085C00F8484000000488D15502D0000488BCBFF15EF2A000085C0742D488D15402D0000488BCBFF15DB2A000085C07419488D15302D0000488BCBFF15C72A000085C0754F41893FEB4A41C70702000000EB41C64424400141C70701000000458D45FF4585ED7F03448BC7488B0D3E3F0000498BD4FF153D2B000048894424484883F802731333C0E92805000041C70701000000488B4424484183FEFF740583FEFF75094585F6741485F674104183FEFF740583FEFF750A41B401EB088BF7448BF74532E444886424414885C0754A458B074183F8FF7E414584E47407448BCF8BC7EB05458BCE8BC6488B54245833C9C74424281020000089442420FF15C62A000048894424484885C00F840A0200004584E40F849C0400004C8B64245848897C24504885C00F856901000041893F4885DB7448488D153D2C0000488BCBFF15C429000085C00F8421020000488D15292C0000488BCBFF15AC29000085C00F8409020000488D15192C0000488BCBFF159429000085C00F84F1010000488D0DED2B0000FF158F280000488BD84885C00F84D8010000488D15EC2B0000488BC8FF15C3280000488D15EC2B0000488BCB4C8BE8FF15B0280000488D15E92B0000488BCB' $DllBinary_x64 &= '48894590FF159C280000488D15F52B0000488BCB4889442468FF1587280000488D15002C0000488BCB488945A8FF1573280000C74424700100000048897C247848897D80488945984D85ED7478488D542470488D4DA04533C041FFD585C07565488D45D04183C9FF4D8BC433D233C9C7442428040100004889442420FF1534280000488D542460488D4DD0FF54246885C0752B488B4C2460488D54244841B880808000FF55A8488B4C244885C0480F45CF48894C2448488B4C2460FF5598488B4DA0FF5590488BCBFF1510280000488B44244840387C24410F84A302000041393F7419488D55B0488BC8FF153E29000085C00F84C3020000488B45C04C8D442470BA20000000488BC8FF151F27000083FEFF0F85E10100008B44247485C00F840C020000660F6E542478660F6EC066410F6ECEF30FE6D2F30FE6C0F30FE6C9F20F5ED0F20F59D1F20F5815172B0000F20F2CF2E9D80100004C8B642458498BCCFF156027000083F8FF0F8455FDFFFF4585ED7E2D488B0D733C0000458D45FF498BD4FF156E28000048894424484883F8020F822DFDFFFFC644244001E9BBFDFFFF488B442448E9B1FDFFFF48897C24304533C94533C0BA00000080498BCC897C2428C744242003000000FF15262700004C8BE04883F8FF0F84E7FCFFFF33D2488BC8FF15FE260000B9020000008BD089442460FF15D5260000488BD84885C07510498BCCFF155426000033C0E9E2010000488BC8FF15BC260000498BCC4885C07516FF1536260000488BCBFF154526000033C0E9BB010000448B4424604C8D4C2460488BD048897C2420FF156E260000488BCBFF1555260000498BCCFF15FC2500004C8D44246833D2488BCBFF15E427000085C078B2488B4C24684885C974A8488D4424504C8D0D4A2800004533C033D24889442420FF154A270000488B4C245085C0480F48CF48894C2450488B4C2468488B01FF5010488BCBFF15B6250000488B4C24504885C90F84F6FBFFFF488B01488D542448FF5018488B4424484885C00F85ECFDFFFF488B4C2450488B01FF501033C0E9FA0000008B44247885C0742F660F6E542474660F6EC0660F6ECEF30FE6D2F30FE6C0F30FE6C9F20F5ED0F20F59D1F20F58153B290000F2440F2CF241393F7447488B4DC8FF15C7240000488B4DC0FF15BD24000040387C2440752C488B4C2448FF15B3260000458B07488B542458458BCE33C9C74424281000000089742420FF158C260000EB77488B44244848397C245074424585F6750985F67505BF04000000448BCE458BC633D2488BC8897C2420FF157B260000488B4C2450488B11488BD8FF5210EB35488B4C2448FF154826000033C0EB294585F6750485F67420418B17448BCE458BC6488BC8C74424200C000000FF1539260000488BD8488BC3488B8DE00100004833CCE8FC0D00' $DllBinary_x64 &= '004881C4F8020000415F415E415D415C5F5E5B5DC3CCCCCCCCCCCCCCCC40554881ECD0000000488B05D03300004833C448898424A0000000488BE94885C9750733C0E9B60100004889B424F00000004889BC24C80000004C89A424C00000004533E433C94C89B424B8000000418BFCFF15C0250000488BC84C8BF0FF1594230000488BF04885C00F8439010000488D542470488BCDFF159225000085C00F841A010000488B8C24880000004C8D442450418D542420FF157223000085C00F84DE000000448B4424588B542454498BCEFF1548230000488BF84885C00F84C0000000488BD0488BCE4C89BC24B0000000FF15182300004C8BF84885C00F84980000008B4C245448899C24E80000004C89A42490000000898C24980000008B4C2458898C249C000000B980808000FF1503230000488D942490000000488BCE4C8BC0488BD8FF15D4240000488BCBFF15B32200008B442458C7442440030000004C896424384489642430894424288B4424544C8BCD4533C033D2488BCE89442420FF1590240000498BD7488BCEFF157C220000488B9C24E80000004C8BBC24B0000000488B8C2488000000FF1556220000488B8C2480000000FF1548220000488BCEFF1537220000498BD633C9FF156C240000488BCDFF15332400004C8BB424B80000004C8BA424C0000000488BB424F0000000488BC7488BBC24C8000000488B8C24A00000004833CCE8F00B00004881C4D00000005DC3CCCCCCCCCCCCCC8D0409C3CCCCCCCCCCCCCCCCCCCCCCCC4055535657415541564157488D6C24B04881EC50010000488B05B23100004833C448894538488BBDB0000000894D8433C90F57C08955888D512E894C2460F30F7F45E8488BCF44894C2458458BE8C7442454FFFFFFFF4533FF33F64533F6FF15F4220000488BD84885C0745A48FFC3488D15F6240000488BCBFF159922000085C07428488D15CE240000488BCBFF158522000085C07414488D15BE240000488BCBFF157122000085C0751BB931000000FF1562230000B9320000008BF0FF1555230000448BF0488BDF0F1F80000000000FB6033C2074043C09750548FFC3EBF0803B2A4C89A424480100000F85F80200000FBE4B0148FFC3FF156222000083F8480F84F801000083F8570F8488010000488D15F524000041B804000000488BCBFF15FA21000085C0756C4883C304488BCB0FB6013C2074043C09750548FFC1EBF00FB60184C0743D2C2BA8FD750348FFC1803930752F0FB641012C58A8DF75250FBE4902FF15FE21000085C0741733D2488BCB448D4210FF15C3210000448BF8E9DA010000488BCBFF15AA210000448BF8E9C9010000488D157724000041B805000000488BCBFF157421000085C00F85B00000004883C305448D401F488D4D18488BD3FF15872100000FB65518C64537004C8D45' $DllBinary_x64 &= '1884D274380F1F8000000000488D0D35240000B0200F1F80000000003AD074190FB6410148FFC184C075F1410FB6500149FFC084D275D5EB0441C60000488D4D18E8C6EFFFFF8BD083F8FF751933D2488D4D18448D4210FF150F21000089442454E92501000066C1E808440FB6E08BC2C1E81041C1E4080FB6C80FB6C2C1E010440BE1440BE04489642454E9FB000000488BCBE8A4F1FFFF8944246085C0790B33C9894C2460E9E00000003DFF0000000F8ED5000000B9FF000000894C2460E9C7000000488D4B010F1F40000FB6013C2074043C09750548FFC1EBF00FB60184C0743A2C2BA8FD750348FFC1803930752C0FB641012C58A8DF75220FBE4902FF158F20000085C0741433D2488D4B01448D4210FF15532000008BF0EB6E488D4B01FF153D2000008BF0EB60488D4B010FB6013C2074043C09750548FFC1EBF00FB60184C074382C2BA8FD750348FFC1803930752A0FB641012C58A8DF75200FBE4902FF152C20000085C0741233D2488D4B01448D4210FF15F01F0000EB0A488D4B01FF15DC1F0000448BF04885DB74360FB61384D2742F0F1F440000488D0DA5220000B0200F1F80000000003AD074430FB6410148FFC184C075F10FB6530148FFC384D275D6488D057F2200004C8BA42448010000488B4D384833CCE81B0800004881C450010000415F415E415D5F5E5B5DC3488D7B01488BDF66900FB6033C2074043C09750548FFC3EBF0803B2A0F8408FDFFFF803F00C7442478FFFFFFFF74A44C8D4C2478458BC68BD6488BCF44897C2420E8F3F2FFFF488BF8488945C84885C0748133C9FF15E71F00004C8BF8488945D84885C0750E488BCFFF15A21D0000E95FFFFFFF33C94533E44532F633F6837C24780148894DB848894C24704C8965A048894DC044887424507579488D55F8488BCFFF15911F000085C07450488B5D08498BCFFF15681D00004885C0742648894424284C8D4C24514C8D4580488D54245C488BCBC744242001000000E8E8EFFFFF4C8BE0488B4D104C8965A0FF151F1D0000488B4D08FF15151D0000488BCFE825F9FFFF488BF8488945C84885C00F84BFFEFFFF498BCFFF15041D00004885C0750F448B7C245833FF488BDEE9BC05000048894424284C8D4C24514C8D4580488D54245C488BCFC744242008000000E875EFFFFF488BF8488945984885C00F84570500008B5C2458442B6D84498BCF2B5D88FFC3FF15A71C0000488BF048894424684885C00F8421050000418D5501448BC3498BCFFF158E1C0000488945B84885C00F84F8040000488BD0488BCEFF15651C0000488945C04885C00F84DF0400008B4588C74424402000CC00458D4D01894424388B45844533C08944243033D2488BCE4C897C2428895C2420FF15571C000085C00F84A6040000488BCEFF151E1C00004885C0750C448B7C245833' $DllBinary_x64 &= 'DBE9D9040000488B4DB848894424284C8D4C24644C8D458C488D54247CC744242008000000E891EEFFFF488BD848894424704885C00F845C040000448B5C245C448B6C247C8B7580418BD3458BC5440FAF458C0FAFD6807C2451004C63CA44894424584D63F04C894DB0750B807C2464000F84E30000008B44245483F8FF740925F8F8F8008944245433C94585C07E494183F8047243418BC025030000807D07FFC883C8FCFFC0660F6F0DBC1F0000442BC0660F1F8400000000004863C183C104F30F6F0483660FDBC1F30F7F0483413BC87CE7448B4424584863C1493BC67D1966660F1F840000000000812483F8F8F80048FFC0493BC67CF133C985D27E4383FA04723E8BC225030000807D07FFC883C8FCFFC0660F6F0D4E1F00002BD00F1F40000F1F8400000000004863C183C104F30F6F0487660FDBC1F30F7F04873BCA7CE84863C1493BC17D0F812487F8F8F80048FFC0493BC17CF14D85C97E18488D4703498BC90F1F440000C60000488D400448FFC975F4448B5424604183FA010F8D300100004D85F67E1C488D4303498BCE660F1F840000000000C60000488D400448FFC975F44533FF4585C00F8E240300008B37448B44245433FF3934BB74154D85E4740741833C24007509413BF00F85C20000008B4D8C418BC79941F7FD2BC8394D800F8FAD000000418BC52BC2443BD80F8F9F0000004533C04533D2B001418BCF4D85C90F8EC0020000488B5D9888442450458BDF492BDC498BD44C8B6C2470448B0C134863C145394C8500448B6C247C74114D85E47405833A007507443B4C2454753841FFC0443B44245C7D04FFC1EB094533C04503DD418BCB49FFC24883C2044C3B55B07CB3488B5C2470440FB6742450488B7D98E95B0200004C8B4DB0448B5C245C488B5C2470448B44245432C08844245048FFC741FFC7493BFE0F8C15FFFFFF440FB6742450488B7D98E9240200004533FF44897C24784585C00F8E100200000F1F40008B4D8C418BC79941F7FD2BC83BF10F8F95010000418BC52BC2443BD80F8F870100004533ED41B60144897D904C896DD04D85C90F8E87010000488B45A0448874245044897DA8482BC74C8BE7488945E0418B0C24450FB64C2401450FB63C24C1E9100FB6D1443BD27E054532F6EB07440FB6F1452AF2450FB6C1453BD07E054032F6EB07410FB6F1412AF2410FB6DF443BD37E054032FFEB07410FB6FF412AFAB8FF0000002BC2443BD07E0541B3FFEB04468D1C11B8FF000000412BC0443BD07E0541B2FFEB034502D18B4C2460B8FF0000002BC33BC87E04B1FFEB034102CF48635D904C8B442470450FB64C9802410FB6549801450FB60498453ACE7219453ACB7714403AD6720F413AD2770A443AC77205443AC1761C48837DA000740B488B45E042833C2000750A8B442454413904247547448B' $DllBinary_x64 &= '5C245C41FFC5453BEB7D07FFC3895D90EB14448B55A84533ED440354247C448955A8448955904C8B45D04983C40449FFC04C8945D04C3B45B07D7B448B542460E9D5FEFFFF448B7C2478448B542460448B6C247C4C8B4DB0448B442458448B5C245C488B7D988B75804532F64488742450EB06440FB674245041FFC744897C2478453BF80F8C40FEFFFF488B5C2470EB48488B5C2470448B7C2458EB41488B5C2470448B7C2458488BF0EB32448B7C2458488BDEEB28448B7C2478488B5C2470440FB6742450488B7D98EB0D488B7D98440FB6F0EB034532F6488B742468488B55D833C9FF1550190000488B4DC8FF150E1700004885F6741E488B45C04885C0740C488BD0488BCEFF15FC160000488BCEFF15E3160000488B45B84885C07409488BC8FF15D91600004885FF7409488BCFFF151B180000488B45A04885C07409488BC8FF15091800004885DB7409488BCBFF15FB1700004584F60F8464F8FFFF448B4D88448B4584418BC7442B4DEC442B45E899F77C247C488D0D332C00004403C88B45804403C2894424288B44245C488D15BB1A000089442420E81A000000488D050B2C0000E91FF8FFFFCCCCCCCCCCCCCCCCCCCCCCCCCCCC48895424104C894424184C894C24204883EC284C8BC24C8D4C2440BA32000000FF15921700004883C428C3CCCCCCCCCCCCCCCCCCCCCC66660F1F840000000000483B0DF9250000751148C1C11066F7C1FFFF7502F3C348C1C910E971040000CC40534883EC20B900010000FF157F170000488BC8488BD8FF155B1600004889051C2C00004889050D2C00004885DB75058D4301EB2348832300E8A6070000488D0DD7070000E8D6060000488D0D0F080000E8CA06000033C04883C4205BC3CCCC488BC44889580848896810488978184C8960204155415641574883EC2033FF498BE84C8BF185D20F85350100008B056D25000085C00F8E20010000FFC8448BFF89055A25000065488B042530000000488B4808EB05483BC1740F33C0F0480FB10D632B000075EEEB0641BF010000008B055B2B000083F802740FB91F000000E864040000E99E010000488B0D502B0000FF157A150000488BE84885C00F849E000000488B0D2F2B0000FF15611500004C8BED4C8BE04C8BF04983EE084C3BF5725A49393E74F233C9FF154A15000049390674E5498B0EFF153415000033C9488BD8FF1531150000498906FFD3488B0DED2A0000FF1517150000488B0DD82A0000488BD8FF15071500004C3BEB75054C3BE074A54C8BEB488BEBEB974883FDFF7409488BCDFF15AE15000033C9FF15E61400004889059F2A0000488905A02A0000893D8A2A00004585FF0F85D800000048873D722A0000E9CC00000033C0E9CA00000083FA010F85BC00000065488B0425300000008BDF488B4808EB05483BC1740F33C0F0480FB1' $DllBinary_x64 &= '0D3C2A000075EEEB05BB010000008B05352A000085C0740CB91F000000E83F030000EB3E488D155E160000488D0D3F160000C7050D2A000001000000E83206000085C0758F488D151D160000488D0D0E160000E815060000C705E72900000200000085DB750A488BC7488705D129000048393DEA2900007421488D0DE1290000E83403000085C074114C8BC5BA02000000498BCEFF15C7290000FF0579230000B801000000488B5C2440488B6C2448488B7C24504C8B6424584883C420415F415E415DC3CC48895C24084889742410574883EC20498BF88BDA488BF183FA017505E86B0400004C8BC78BD3488BCE488B5C2430488B7424384883C4205FE903000000CCCCCC488BC448895808488970104889781841564883EC30498BF08BFA4C8BF1BB010000008958E88915D922000085D275123915DF220000750A33DB8958E8E9CB0000008D42FF83F8017737488B058C1500004885C07408FFD08BD88944242085DB0F84A70000004C8BC68BD7498BCEE802FDFFFF8BD88944242085C00F848C0000004C8BC68BD7498BCEE867E2FFFF8BD88944242083FF01753485C075304C8BC633D2498BCEE84BE2FFFF4C8BC633D2498BCEE8BEFCFFFF488B051F1500004885C0740A4C8BC633D2498BCEFFD085FF740583FF0375374C8BC68BD7498BCEE892FCFFFFF7D81BC923CB8BD9894C2420741C488B05E51400004885C074104C8BC68BD7498BCEFFD08BD889442420EB0633DB895C2420C705E6210000FFFFFFFF8BC3488B5C2440488B742448488B7C24504883C430415EC3CCCC40534883EC20488BD9FF1535120000B901000000890542270000E82F040000488BCBE82D040000833D2E27000000750AB901000000E814040000B9090400C04883C4205BE911040000CCCCCC48894C24084883EC38B917000000E81F04000085C07407B902000000CD29488D0D1B220000E8EA030000488B44243848890502230000488D4424384883C00848890592220000488B05EB2200004889055C210000488B44244048890560220000C70536210000090400C0C7053021000001000000C7053A21000001000000B808000000486BC000488D0D3221000048C7040102000000B808000000486BC000488B0DCA20000048894C0420B808000000486BC001488B0DBD20000048894C0420488D0D99130000E8E8FEFFFF4883C438C3CCFF2538120000FF253A120000CCCC4C63413C4533C94C8BD24C03C1410FB74014450FB758064883C0184903C04585DB741E8B500C4C3BD2720A8B480803CA4C3BD1720E41FFC14883C028453BCB72E233C0C3CCCCCCCCCCCCCCCCCCCCCCCC48895C2408574883EC20488BD9488D3D2CD0FFFF488BCFE83400000085C07422482BDF488BD3488BCFE882FFFFFF4885C0740F8B4024C1E81FF7D083E001EB0233C0488B5C243048' $DllBinary_x64 &= '83C4205FC3CCCCCC488BC1B94D5A0000663908740333C0C34863483C4803C833C0813950450000750CBA0B020000663951180F94C0C3CCCC40534883EC2048833D12260000007536BA080000008D4A18FF15CA100000488BC8488BD8FF152E100000488905EF250000488905E02500004885DB75058D4318EB064883230033C04883C4205BC3CCCC40534883EC20488BD9488B0DC0250000FF15EA0F000048894424384883F8FF750B488BCBFF155E100000EB7EB908000000E8E401000090488B0D92250000FF15BC0F00004889442438488B0D78250000FF15AA0F00004889442440488BCBFF15A40F0000488BC84C8D442440488D542438E8B0010000488BD8488B4C2438FF15840F000048890545250000488B4C2440FF15720F00004889052B250000B908000000E879010000488BC34883C4205BC34883EC28E847FFFFFF48F7D81BC0F7D8FFC84883C428C3CC48895C242055488BEC4883EC20488B05941E0000488365180048BB32A2DF2D992B0000483BC3756F488D4D18FF15160F0000488B451848894510FF15D00E00008BC048314510FF15CC0E0000488D4D208BC048314510FF153C0F00008B452048C1E020488D4D1048334520483345104833C148B9FFFFFFFFFFFF00004823C148B933A2DF2D992B0000483BC3480F44C1488905111E0000488B5C244848F7D04889050A1E00004883C4205DC348895C2408574883EC20488D1D63130000488D3D5C130000EB0E488B034885C07402FFD04883C308483BDF72ED488B5C24304883C4205FC348895C2408574883EC20488D1D3B130000488D3D34130000EB0E488B034885C07402FFD04883C308483BDF72ED488B5C24304883C4205FC3FF258E0E0000FF25380F0000488D0D21230000E930000000FF252E0F0000FF25300F0000FF25320F0000FF25340F0000FF25960E0000FF25880E0000FF257A0E0000FF25640E0000FF254E0E0000FF25B80D00004883EC284D8B4138488BCA498BD1E80D000000B8010000004883C428C3CCCCCC40534883EC20458B18488BDA4C8BC94183E3F841F600044C8BD17413418B40084D635004F7D84C03D14863C84C23D14963C34A8B1410488B43108B480848034B08F641030F740C0FB6410383E0F048984C03C84C33CA498BC94883C4205BE9B5F6FFFFCCCCCCCCCC40554883EC20488BEA488BD148894D28488B018B08894D24E8F5FBFFFF904883C4205DC3CC40554883EC20488BEAC705881C0000FFFFFFFF4883C4205DC3CCCC40554883EC20488BEA488B0133C98138050000C00F94C18BC14883C4205DC3CC40554883EC20488BEAB908000000E8EDFEFFFF904883C4205DC3CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E64C000000000000CA' $DllBinary_x64 &= '4C000000000000BA4C000000000000A44C0000000000008A4C000000000000704C000000000000624C0000000000004E4C000000000000F24C000000000000DA4C00000000000000000000000000009E4B000000000000AE4B000000000000764F000000000000604F000000000000904B0000000000002A4F000000000000164F000000000000064F000000000000F64E0000000000008C4F0000000000007E4B0000000000006E4B000000000000584B0000000000004C4B000000000000364B000000000000284B0000000000001A4B0000000000000C4B000000000000FE4A000000000000464F000000000000F04A0000000000000000000000000000024E000000000000D24E000000000000C84E000000000000BA4E000000000000AC4E000000000000A24E0000000000009A4E0000000000007C4E000000000000524D0000000000005E4D0000000000006A4D000000000000724D0000000000007C4D000000000000844D0000000000008E4D0000000000009C4D000000000000A64D000000000000B04D000000000000BA4D000000000000D44D000000000000E64D000000000000F44D0000000000000E4E0000000000001C4E000000000000344E0000000000004A4E000000000000644E0000000000000000000000000000A2010000000000800000000000000000064D0000000000000000000000000000D84B000000000000CA4B000000000000284C000000000000364C0000000000001C4C0000000000000E4C000000000000064C000000000000FA4B000000000000E64B0000000000000000000000000000224D0000000000000000000000000000000000000000000000000000000000000000000000000000202A00800100000040300080010000000000000000000000000000000000000000000000A689E25B000000000200000068000000F0440000F02C000000000000A689E25B000000000C0000001400000058450000582D00008009F87B32BF1A108BBB00AA00300CAB00000000000000003050008001000000D050008001000000426C61636B00000053696C7665720000477261790000000057686974650000004D61726F6F6E000052656400507572706C650000000000004675636873696100477265656E0000004C696D65000000004F6C69766500000059656C6C6F7700004E61767900000000426C7565000000005465616C00000000417175610000000044656661756C740065786500646C6C0069636C0063706C007363720069636F0063757200616E6900626D700000000000676469706C7573006A7067006A7065670000000067696600476469706C7573537461727475700000476469706C757353687574646F776E00476469704372656174654269746D617046726F6D46696C6500000000000000004764' $DllBinary_x64 &= '6970437265617465484249544D415046726F6D4269746D6170000000000047646970446973706F7365496D6167650000000049636F6E000000005472616E73000000200900003000000000000000317C25647C25647C25647C2564000000000000000000E03FF8F8F800F8F8F800F8F8F800F8F8F80070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000800100000000000000000000000000000000000000525344533A83FEDCC8528745BD1E87B1E51E240C01000000413A5C5F4175746F49745F5F5F5F5C5F50726F6A6563745F5F5F5C5F494D475365617263685C496D616765536561726368444C4C5C52656C656173655C496D616765536561726368444C4C2E7064620000000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106020006320230192A0B451943140195000DF00BE009D007C005700460033002500000C832000090040000192D0A001C015F000DF00BE009D007C00570046003300250C8320000E0020000191B030009011A0002500000C8320000A00000002125080025E4170018C418001074190008641E00201C00004A1C0000DC4500002108020008F416004A1C0000EA1C0000F04500002108020008341D00EA1C0000081D00001046000021000000EA1C0000081D000010460000210000004A1C0000EA1C0000F045000021000000201C00004A1C0000DC45000019EB0B00EBC4290017012A000BF009E007D005700460033002500000C83200003801000001130100134200000000000001000000011D0C001DC40B001D740A001D5409001D3408001D3219F017E015D01915080015740A001564090015340800155211E08C32000002000000372D00001A2E0000503300001A2E0000312D0000202E000075330000000000000106020006320250010F06000F6407000F3406000F320B700109010009620000090A04000A3406000A3206708C32000001000000CD2F0000003000009033000000300000010401000442000011060200063202308C32000001000000C73000002D310000B033000000000000010D04000D3409000D320650010A04000A3406000A320670000000000000000000000000A689E25B00000000BC470000010000000200000002000000A8470000B0470000B8470000301E0000201E0000CF470000DB47000000000100496D616765536561726368444C4C2E646C6C00496D61676553656172636800496D6167655465737400000000E04800000000000000000000BC4B000058400000904A00000000000000000000424C00' $DllBinary_x64 &= '0008420000884800000000000000000000FC4C000000400000804A00000000000000000000164D0000F8410000E04A000000000000000000003A4D000058420000704A00000000000000000000444D0000E8410000904900000000000000000000C64D0000084100000000000000000000000000000000000000000000E64C000000000000CA4C000000000000BA4C000000000000A44C0000000000008A4C000000000000704C000000000000624C0000000000004E4C000000000000F24C000000000000DA4C00000000000000000000000000009E4B000000000000AE4B000000000000764F000000000000604F000000000000904B0000000000002A4F000000000000164F000000000000064F000000000000F64E0000000000008C4F0000000000007E4B0000000000006E4B000000000000584B0000000000004C4B000000000000364B000000000000284B0000000000001A4B0000000000000C4B000000000000FE4A000000000000464F000000000000F04A0000000000000000000000000000024E000000000000D24E000000000000C84E000000000000BA4E000000000000AC4E000000000000A24E0000000000009A4E0000000000007C4E000000000000524D0000000000005E4D0000000000006A4D000000000000724D0000000000007C4D000000000000844D0000000000008E4D0000000000009C4D000000000000A64D000000000000B04D000000000000BA4D000000000000D44D000000000000E64D000000000000F44D0000000000000E4E0000000000001C4E000000000000344E0000000000004A4E000000000000644E0000000000000000000000000000A2010000000000800000000000000000064D0000000000000000000000000000D84B000000000000CA4B000000000000284C000000000000364C0000000000001C4C0000000000000E4C000000000000064C000000000000FA4B000000000000E64B0000000000000000000000000000224D0000000000000000000000000000880043726561746546696C654100F70147657446696C6553697A65006801467265654C69627261727900C602476C6F62616C4C6F636B0000BB02476C6F62616C416C6C6F6300EC0147657446696C6541747472696275746573410000C3035265616446696C65000069034D756C746942797465546F576964654368617200CD02476C6F62616C556E6C6F636B00004C0247657450726F63416464726573730000C202476C6F62616C4672656500003E034C6F61644C6962726172794100005200436C6F736548616E646C65004B45524E454C33322E646C6C0000A30044657374726F7949636F6E00F2014C6F6164496D616765410000800147657453797374656D4D6574726963730000690252656C65617365444300230147657444' $DllBinary_x64 &= '4300350147657449636F6E496E666F005400436F7079496D61676500C8004472617749636F6E45780000F60046696C6C5265637400005553455233322E646C6C00005400437265617465536F6C696442727573680000FB014765744F626A656374410000120247657453797374656D50616C65747465456E7472696573002F00437265617465436F6D70617469626C654269746D617000003000437265617465436F6D70617469626C6544430000770253656C6563744F626A6563740000E60044656C6574654F626A6563740000CA0147657444494269747300E30044656C657465444300001300426974426C74000047444933322E646C6C0027004578747261637449636F6E4100005348454C4C33322E646C6C008A0043726561746553747265616D4F6E48476C6F62616C006F6C6533322E646C6C004F4C4541555433322E646C6C000075045F73747269636D7000007F045F7374726E69636D70005006667265650000AA066D616C6C6F630000B60561746F6900001D07737472746F6C00004A0776737072696E74665F73000011077374726E63707900150773747272636872003407746F7570706572008606697378646967697400004D535643523132302E646C6C00005D015F5F4370705863707446696C74657200F2015F616D73675F6578697400006C035F6D616C6C6F635F63727400E1025F696E69747465726D00E2025F696E69747465726D5F65005C015F5F435F73706563696669635F68616E646C657200009D015F5F6372745F64656275676765725F686F6F6B009C015F5F637274556E68616E646C6564457863657074696F6E009B015F5F6372745465726D696E61746550726F63657373007E015F5F6372744361707475726550726576696F7573436F6E74657874005B035F6C6F636B00C7045F756E6C6F636B0009025F63616C6C6F635F637274009F015F5F646C6C6F6E657869740002045F6F6E65786974007B015F5F636C65616E5F747970655F696E666F5F6E616D65735F696E7465726E616C0000EE00456E636F6465506F696E74657200CB004465636F6465506F696E7465720002034973446562756767657250726573656E74000603497350726F636573736F724665617475726550726573656E7400A9035175657279506572666F726D616E6365436F756E74657200C70147657443757272656E7450726F63657373496400CB0147657443757272656E7454687265616449640000800247657453797374656D54696D65417346696C6554696D650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032A2DF2D992B0000CD5D20D266' $DllBinary_x64 &= 'D4FFFFFFFFFFFF75980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000341200009045000040120000B112000090450000C01200002E1500009845000030150000181C0000BC450000201C00004A1C0000DC4500004A1C0000EA1C0000F0450000EA1C0000081D000010460000081D00009C1D0000244600009C1D0000A41D000038460000A41D0000001E000048460000001E0000191E000058460000301E0000B229000068460000C0290000EB2900008C460000002A00001F2A000098460000202A00007E2A000090450000802A0000CB2C00009C460000CC2C0000092D0000FC4600000C2D0000422E0000B8460000442E00008D2E000090450000902E0000612F00000C470000C02F00000D30000014470000403000008E30000090450000903000004031000040470000403100005731000038470000583100000432000060470000043200003C3200006C4700003C320000743200006C470000C8320000E532000038470000E83200004B330000904500005033000075330000F4460000753300008F330000F446000090330000B0330000F4460000B0330000CB330000F446000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' $DllBinary_x64 &= '01001800000018000080000000000000000000000000000001000200000030000080000000000000000000000000000001000904000048000000607000007D010000000000000000000000000000000000003C3F786D6C2076657273696F6E3D27312E302720656E636F64696E673D275554462D3827207374616E64616C6F6E653D27796573273F3E0D0A3C617373656D626C7920786D6C6E733D2775726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763127206D616E696665737456657273696F6E3D27312E30273E0D0A20203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0A202020203C73656375726974793E0D0A2020202020203C72657175657374656450726976696C656765733E0D0A20202020202020203C726571756573746564457865637574696F6E4C6576656C206C6576656C3D276173496E766F6B6572272075694163636573733D2766616C736527202F3E0D0A2020202020203C2F72657175657374656450726976696C656765733E0D0A202020203C2F73656375726974793E0D0A20203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E0D0A0000000000000000000000000000000000000000000000000000000000000000000000004000001400000080A288A2F0A2F8A2D8A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' Local $ImageSearchDLL_Binary = $DllBinary If @AutoItX64 Then $ImageSearchDLL_Binary = $DllBinary_x64 Local $ImageSearchDLL_FileExists = FileExists($ImageSearchDLL_Path) Local $ImageSearchDLL_FileSize = FileGetSize($ImageSearchDLL_Path) / 1024 If (Not $ImageSearchDLL_FileExists) Or ($ImageSearchDLL_FileSize < 10 Or $ImageSearchDLL_FileSize > 20) Then If $ImageSearchDLL_FileExists Then If StringInStr(FileGetAttrib($ImageSearchDLL_Path), "D") Then FileSetAttrib($ImageSearchDLL_Path, "-RAHS", 1) DirRemove($ImageSearchDLL_Path) Else FileSetAttrib($ImageSearchDLL_Path, "-RAHS") FileDelete($ImageSearchDLL_Path) EndIf EndIf Local $hOpen = FileOpen($ImageSearchDLL_Path, 2 + 8 + 16) FileWrite($hOpen, $ImageSearchDLL_Binary) FileClose($hOpen) $ImageSearchDLL_FileExists = FileExists($ImageSearchDLL_Path) $ImageSearchDLL_FileSize = (FileGetSize($ImageSearchDLL_Path) / 1024) EndIf If $ImageSearch_Debug Then ConsoleWrite("-- WorkingDir : " & @WorkingDir & @CRLF) ConsoleWrite("-- ScriptFullPath : " & @ScriptFullPath & @CRLF) ConsoleWrite("-- ImageSearchDLL : " & $ImageSearchDLL_Path & " (" & $ImageSearchDLL_FileSize & "kb)" & @CRLF) EndIf If (Not $ImageSearchDLL_FileExists) Then If $ImageSearch_Debug Then ConsoleWrite("! ImageSearchDLL is Not Found or Can't Write" & @CRLF & "! " & $ImageSearchDLL_Path & @CRLF) ; MsgBox(16 + 262144, "ImageSearchDLL", "ImageSearchDLL is Not Found or Can't Write !" & @CRLF & $ImageSearchDLL_Path) Return SetError(1, 0, 0) EndIf Return 1 EndFunc ;==>_ImageSearch_CheckDLL ; * -----:| Dao Van Trong - TRONG.LIVE
  8. All my scripts were working fine and now I am getting this error. How do I resolve it? Which folder(s) do the DLLs need to be in? ! Dll not found or Call Dll error !
  9. Hello im using Imagesearc function and almost always it works great but i have seen on 2 computers this function not works. I dont know why and cant figure out whats going on. So there are windows 8 64bit and 10 64bit. I use script like below so in program folder I got there 4 files ImageSearchDLLx32 ImageSearchDLLx64 msvcr110 msvcr110d And it should work I think, it would chose proper file to windows and use it. Should I copy Imagesearch to windows directory or system32 directory too or if it is on program folder it is enough? I have tried other imagesearch dll and with no success. Tried change resolution, colors, some graphic settings etc and no effect Maybe someone know what can causing problem with functionality imagesearch function? And where I should finally put imagesearch dll file to be sure it would be loaded correctly? There are these 4 files https://mega.nz/#!GkMUFSoC!ND0HlpWGZYywxMEF7Nan5YOUdBUPPBE7VAd0TM1Lhm8 #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=x64.Exe #AutoIt3Wrapper_Outfile_x64=x32.Exe #AutoIt3Wrapper_Compile_Both=y #AutoIt3Wrapper_UseX64=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include-once #include <WinAPIFiles.au3> ; for _WinAPI_Wow64EnableWow64FsRedirection #include <ScreenCapture.au3> ;_ScreenCapture_CaptureWnd etc. ;using this in the example to create a test image, otherwise not neccessary here #include <ButtonConstants.au3> #include <MsgBoxConstants.au3> Local $h_ImageSearchDLL = -1; Will become Handle returned by DllOpen() that will be referenced in the _ImageSearchRegion() function #include <ImageSearchUDF.au3> #Region When running compiled script, Install needed DLLs if they don't exist yet If Not FileExists("ImageSearchDLLx32.dll") Then FileInstall("ImageSearchDLLx32.dll", "ImageSearchDLLx32.dll", 1);FileInstall ( "source", "dest" [, flag = 0] ) If Not FileExists("ImageSearchDLLx64.dll") Then FileInstall("ImageSearchDLLx64.dll", "ImageSearchDLLx64.dll", 1) If Not FileExists("msvcr110d.dll") Then FileInstall("msvcr110d.dll", "msvcr110d.dll", 1);Microsoft Visual C++ Redistributable dll x64 If Not FileExists("msvcr110.dll") Then FileInstall("msvcr110.dll", "msvcr110.dll", 1);Microsoft Visual C++ Redistributable dll x32 #EndRegion HotKeySet("h", "search") Global $x = 0, $y = 0 Func search() Local $img = _ImageSearch('img.bmp', 0, $x, $y, 0) If $img = 1 Then MsgBox("", "", "FOUND IMAGE") Else MsgBox("", "", "NOT FOUND IMAGE") EndIf EndFunc While 1 sleep(200) WEnd #Region TESTING/Example Local $bTesting = False; Change to TRUE to turn on testing/example If $bTesting Then cr(">" & "_ImageSearchStartup()=" & _ImageSearchStartup(), 2) OnAutoItExitRegister(_ImageSearchShutdown) cr("!Testing...") ;using Notepad as a simple example #Region Notepad Snapshot Creation $hWin = WinGetHandle("[CLASS:Notepad]") If Not IsHWnd($hWin) Then If Run("notepad.exe") = 0 Then cr("Couldn't run notepad.exe") Local $hWin = WinWait("[CLASS:Notepad]", "", 10) If $hWin = 0 Then cr("Notepad WinWait Timeout!") EndIf WinSetState($hWin, "", @SW_RESTORE) WinSetState($hWin, "", @SW_SHOW) WinActivate($hWin) Local $testimage = "24bit.bmp" _ScreenCapture_CaptureWnd($testimage, $hWin, 0, 0, -1, -1, False);_ScreenCapture_CaptureWnd ( $sFileName, $hWnd [, $iLeft = 0 [, $iTop = 0 [, $iRight = -1 [, $iBottom = -1 [, $bCursor = True]]]]] ) cr("made Notepad Window screenshot") #EndRegion Notepad Snapshot Creation #Region Test if application appeared Local $y = 0, $x = 0, $result $result = _ImageSearch($testimage, 1, $x, $y, 0, 0);_ImageSearch($findImage, $resultPosition, ByRef $x, ByRef $y, $tolerance, $transparency = 0) If $result = 1 Then cr("! $result=" & $result, 1) MouseMove($x, $y, 0) cr("+" & "recognised notepad! moved mouse to center of notepad!") Else cr("! $result=" & $result, 1) Exit EndIf #EndRegion Test if application appeared #Region Test if application vanished WinSetState($hWin, "", @SW_MINIMIZE) Local $y = 0, $x = 0, $result $result = _ImageSearch($testimage, 1, $x, $y, 0, 0);_ImageSearch($findImage, $resultPosition, ByRef $x, ByRef $y, $tolerance, $transparency = 0) If $result = 1 Then cr("! $result=" & $result, 1) Exit Else cr("! $result=" & $result, 1) cr("+" & "notepad dissapeared!") EndIf #EndRegion Test if application vanished cr() cr("!Test finished") EndIf Exit #EndRegion TESTING/Example #Region ImageSearch Startup/Shutdown Func _ImageSearchStartup() _WinAPI_Wow64EnableWow64FsRedirection(True) $sOSArch = @OSArch ;Check if running on x64 or x32 Windows ;@OSArch Returns one of the following: "X86", "IA64", "X64" - this is the architecture type of the currently running operating system. $sAutoItX64 = @AutoItX64 ;Check if using x64 AutoIt ;@AutoItX64 Returns 1 if the script is running under the native x64 version of AutoIt. If $sOSArch = "X86" Or $sAutoItX64 = 0 Then cr("+>" & "@OSArch=" & $sOSArch & @TAB & "@AutoItX64=" & $sAutoItX64 & @TAB & "therefore using x32 ImageSearch DLL") $h_ImageSearchDLL = DllOpen("ImageSearchDLLx32.dll") If $h_ImageSearchDLL = -1 Then Return "DllOpen failure" ElseIf $sOSArch = "X64" And $sAutoItX64 = 1 Then cr("+>" & "@OSArch=" & $sOSArch & @TAB & "@AutoItX64=" & $sAutoItX64 & @TAB & "therefore using x64 ImageSearch DLL") $h_ImageSearchDLL = DllOpen("ImageSearchDLLx64.dll") If $h_ImageSearchDLL = -1 Then Return "DllOpen failure" Else Return "Inconsistent or incompatible Script/Windows/CPU Architecture" EndIf Return True EndFunc ;==>_ImageSearchStartup Func _ImageSearchShutdown() DllClose($h_ImageSearchDLL) _WinAPI_Wow64EnableWow64FsRedirection(False) cr(">" & "_ImageSearchShutdown() completed") Return True EndFunc ;==>_ImageSearchShutdown #EndRegion ImageSearch Startup/Shutdown #Region My Custom ConsoleWrite/debug Function Func cr($text = "", $addCR = 1, $printTime = False) ;Print to console Static $sToolTip If Not @Compiled Then If $printTime Then ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " ") ConsoleWrite($text) If $addCR >= 1 Then ConsoleWrite(@CR) If $addCR = 2 Then ConsoleWrite(@CR) Else If $printTime Then $sToolTip &= @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " " $sToolTip &= $text If $addCR >= 1 Then $sToolTip &= @CR If $addCR = 2 Then $sToolTip &= @CR ToolTip($sToolTip) EndIf Return $text EndFunc ;==>cr #EndRegion My Custom ConsoleWrite/debug Function
  10. I've recently been annoyed by how google images works. You can't click an image and see the full res image. You have to go to the website and find the image on the page and occasionally, it won't allow you to view the image easily. This script makes it easy to view any image in google images in full resolution immediately. You just press Ctrl + Q while hovering over the image you want and it'll open full res in a new tab. This is only tested in firefox, but it shouldn't be hard to modify for another browser. Here it is: #include <Misc.au3> #include <MsgBoxConstants.au3> #include <AutoItConstants.au3> #include <Clipboard.au3> #include <Array.au3> #include <String.au3> Local $clipB Local $urlArray Local $theLink HotKeySet("^q", "OpenImage") Func DecodeUrl($src) Local $i Local $ch Local $buff ;Init Counter $i = 1 While ($i <= StringLen($src)) $ch = StringMid($src, $i, 1) ;Correct spaces If ($ch = "+") Then $ch = " " EndIf ;Decode any hex values If ($ch = "%") Then $ch = Chr(Dec(StringMid($src, $i + 1, 2))) $i += 2 EndIf ;Build buffer $buff &= $ch ;Inc Counter $i += 1 WEnd Return $buff EndFunc ;==>DecodeUrl Func OpenImage() MouseClick($MOUSE_CLICK_RIGHT) Send("A") Sleep(100) $clipB = _ClipBoard_GetData($CF_TEXT) $theLink = DecodeUrl($clipB) $urlArray = _StringBetween($theLink, "=", "&") If StringInStr($urlArray[0], "?") <> 0 Then $urlArray = _StringBetween($theLink, "=", "?") EndIf ShellExecute($urlArray[0]) EndFunc While 1 Wend
  11. Hey there, i need your help guys. I am working in the QA department of my company. A little part of or software produces hints (like little popups) which needs to be tested every release. I wrote scripts to trigger those hints and i also implemented the imagesearch.dll to find those hints on the screen. My goal now is it to let the machine work over night, so when i come back to work i only get a report which says 130/140 hints were found successfully. This already works, aslong as my pc is not locked, but i want/need to lock my pc because of security concerns. My general question. Is it possible to run my scripts on my locked PC and still find an image that i provide which will open sooner or later in the background? Thanks in advance
  12. I have developed a script to find multiple or all occurrence of an image from desktop using the ImageSearch UDF. Please note that the resulting array has the starting position of the images, not middle. #include-once #include <Array.Au3> #RequireAdmin #AutoIt3Wrapper_UseX64=Y Global $y = 0, $x = 0 ;Result x and y coordinates Dim $aResult[1] ;Resulting array Global $sImagePath = @ScriptDir &"\Rect.bmp" Global $nImageWidth = 0 ;Image width Global $nImageHeight = 0 ;Image Height _ImageSearchMultiple() Func _ImageSearchMultiple() Local $search = _ImageSearch($sImagePath, 0, $x, $y, 10) If $search = 1 Then _ArrayDisplay($aResult) Else Msgbox(0,"Not Found","Image Not Found") EndIf EndFunc ; ------------------------------------------------------------------------------ ; ; AutoIt Version: 3.0 ; Language: English ; Description: Functions that assist with Image Search ; Require that the ImageSearchDLL.dll be loadable ; ; ------------------------------------------------------------------------------ ;=============================================================================== ; ; Description: Find the position of an image on the desktop ; Syntax: _ImageSearchArea, _ImageSearch ; Parameter(s): ; $findImage - the image to locate on the desktop ; $tolerance - 0 for no tolerance (0-255). Needed when colors of ; image differ from desktop. e.g GIF ; $resultPosition - Set where the returned x,y location of the image is. ; 1 for centre of image, 0 for top left of image ; $x $y - Return the x and y location of the image ; ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 ; ; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify ; a desktop region to search ; ;=============================================================================== Func _ImageSearch($findImage,$resultPosition, ByRef $x, ByRef $y,$tolerance, $HBMP=0) $nStartX = 0 $nStartY = 0 $nMaxX = @DesktopWidth $nMaxY = @DesktopHeight $nEndX = $nMaxX $nEndY = $nMaxY $nCount = 0 $aResult[0] = $nCount ; Count $nImageWidth = 0 $nImageHeight = 0 While (1) $nResult = _ImageSearchArea($findImage,$resultPosition,$nStartx,$nStarty,$nEndX,$nEndY,$x,$y,$tolerance,$HBMP) If $nResult = 1 Then $nCount = $nCount + 1 $aResult[0] = $nCount Redim $aResult[$nCount + 1 ] $aResult[$nCount] = $x & "," & $y $nStartX = $x + $nImageWidth $nStartY = $y $nEndX = $nMaxX $nEndY = $y + $nImageHeight If $nStartX + $nImageWidth > $nMaxX Or $nStartY + $nImageHeight > $nMaxY Then $nStartX = 0 $nStartY = $y + 1 $nEndX = $nMaxX $nEndY = $nMaxY ContinueLoop EndIf Else If $nEndY >= $nMaxY Then ExitLoop Else $nStartX = 0 $nStartY = $Y + 1 $nEndX = $nMaxX $nEndY = $nMaxY EndIf EndIf wend If $aResult[0] = 0 Then Return 0 Else Return 1 EndIf EndFunc Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom, ByRef $x, ByRef $y, $tolerance,$HBMP=0) ;MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom) if $tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage If IsString($findImage) Then $result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage,"ptr",$HBMP) Else $result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"ptr",$findImage,"ptr",$HBMP) EndIf If IsArray( $result ) = 0 Then return 0 ; If error exit if $result[0]="0" then return 0 ; Otherwise get the x,y location of the match and the size of the image to ; compute the centre of search $array = StringSplit($result[0],"|") $x=Int(Number($array[2])) $y=Int(Number($array[3])) If $nImageWidth = 0 Then $nImageWidth = Int(Number($array[4])) $nImageHeight = Int(Number($array[5])) EndIf if $resultPosition=1 then $x=$x + Int(Number($array[4])/2) $y=$y + Int(Number($array[5])/2) endif return 1 EndFunc ;=============================================================================== ; ; Description: Wait for a specified number of seconds for an image to appear ; ; Syntax: _WaitForImageSearch, _WaitForImagesSearch ; Parameter(s): ; $waitSecs - seconds to try and find the image ; $findImage - the image to locate on the desktop ; $tolerance - 0 for no tolerance (0-255). Needed when colors of ; image differ from desktop. e.g GIF ; $resultPosition - Set where the returned x,y location of the image is. ; 1 for centre of image, 0 for top left of image ; $x $y - Return the x and y location of the image ; ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 ; ; ;=============================================================================== Func _WaitForImageSearch($findImage,$waitSecs,$resultPosition, ByRef $x, ByRef $y,$tolerance,$HBMP=0) $waitSecs = $waitSecs * 1000 $startTime=TimerInit() While TimerDiff($startTime) < $waitSecs sleep(100) $result=_ImageSearch($findImage,$resultPosition,$x, $y,$tolerance,$HBMP) if $result > 0 Then return 1 EndIf WEnd return 0 EndFunc ;=============================================================================== ; ; Description: Wait for a specified number of seconds for any of a set of ; images to appear ; ; Syntax: _WaitForImagesSearch ; Parameter(s): ; $waitSecs - seconds to try and find the image ; $findImage - the ARRAY of images to locate on the desktop ; - ARRAY[0] is set to the number of images to loop through ; ARRAY[1] is the first image ; $tolerance - 0 for no tolerance (0-255). Needed when colors of ; image differ from desktop. e.g GIF ; $resultPosition - Set where the returned x,y location of the image is. ; 1 for centre of image, 0 for top left of image ; $x $y - Return the x and y location of the image ; ; Return Value(s): On Success - Returns the index of the successful find ; On Failure - Returns 0 ; ; ;=============================================================================== Func _WaitForImagesSearch($findImage,$waitSecs,$resultPosition, ByRef $x, ByRef $y,$tolerance,$HBMP=0) $waitSecs = $waitSecs * 1000 $startTime=TimerInit() While TimerDiff($startTime) < $waitSecs for $i = 1 to $findImage[0] sleep(100) $result=_ImageSearch($findImage[$i],$resultPosition,$x, $y,$tolerance,$HBMP) if $result > 0 Then return $i EndIf Next WEnd return 0 EndFunc Func _ImageSize($sFileName) Local $aRet[2], $sExt = StringRegExpReplace($sFileName, "^.*\.", "") If (FileExists($sFileName) = 0) Or _ ((StringLen($sExt) = 3) And (StringRegExp($sExt, "(?i)(bmp|gif|jpg|png|tif|emf|wmf)") = 0)) Or _ ((StringLen($sExt) = 4) And (StringRegExp($sExt, "(?i)(tiff|jpeg)") = 0)) Then _ Return SetError(1, 0, $aRet) Local $ghGDIPDll = DllOpen("GDIPlus.dll") Local $tInput = DllStructCreate("int Version;ptr Callback;int NoThread;int NoCodecs") Local $tToken = DllStructCreate("ulong_ptr Data") DllStructSetData($tInput, "Version", 1) DllCall($ghGDIPDll, "int", "GdiplusStartup", "ptr", DllStructGetPtr($tToken), "ptr", DllStructGetPtr($tInput), "ptr", 0) Local $aImage = DllCall($ghGDIPDll, "int", "GdipLoadImageFromFile", "wstr", $sFileName, "ptr*", 0) Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageWidth", "handle", $aImage[2], "uint*", -1) $aRet[0] = $aResult[2] $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageHeight", "handle", $aImage[2], "uint*", 0) $aRet[1] = $aResult[2] DllCall($ghGDIPDll, "int", "GdipDisposeImage", "handle", $aImage[2]) DllCall($ghGDIPDll, "none", "GdiplusShutdown", "ptr", DllStructGetData($tToken, "Data")) DllClose($ghGDIPDll) Return SetError(0, 0, $aRet) EndFunc ;==>_ImageSize I'm also attaching the code to capture the image , written by Melba23. #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #Include <ScreenCapture.au3> #Include <Misc.au3> #include <WinAPISysWin.au3> #include <File.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #Include <ScreenCapture.au3> #Include <Misc.au3> #include <WinAPISysWin.au3> Global $iX1, $iY1, $iX2, $iY2, $aPos, $sMsg, $sBMP_Path Mark_Rect() Func Mark_Rect() Local $aMouse_Pos, $hMask, $hMaster_Mask, $iTemp Local $UserDLL = DllOpen("user32.dll") ; Create transparent GUI with Cross cursor $hCross_GUI = GUICreate("Test", @DesktopWidth, @DesktopHeight - 20, 0, 0, $WS_POPUP, $WS_EX_TOPMOST) WinSetTrans($hCross_GUI, "", 8) GUISetState(@SW_SHOW, $hCross_GUI) GUISetCursor(3, 1, $hCross_GUI) Global $hRectangle_GUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST) GUISetBkColor(0x000000) ; Wait until mouse button pressed While Not _IsPressed("01", $UserDLL) Sleep(10) WEnd ; Get first mouse position $aMouse_Pos = MouseGetPos() $iX1 = $aMouse_Pos[0] $iY1 = $aMouse_Pos[1] ; Draw rectangle while mouse button pressed While _IsPressed("01", $UserDLL) $aMouse_Pos = MouseGetPos() $hMaster_Mask = _WinAPI_CreateRectRgn(0, 0, 0, 0) $hMask = _WinAPI_CreateRectRgn($iX1, $aMouse_Pos[1], $aMouse_Pos[0], $aMouse_Pos[1] + 1) ; Bottom of rectangle _WinAPI_CombineRgn($hMaster_Mask, $hMask, $hMaster_Mask, 2) _WinAPI_DeleteObject($hMask) $hMask = _WinAPI_CreateRectRgn($iX1, $iY1, $iX1 + 1, $aMouse_Pos[1]) ; Left of rectangle _WinAPI_CombineRgn($hMaster_Mask, $hMask, $hMaster_Mask, 2) _WinAPI_DeleteObject($hMask) $hMask = _WinAPI_CreateRectRgn($iX1 + 1, $iY1 + 1, $aMouse_Pos[0], $iY1) ; Top of rectangle _WinAPI_CombineRgn($hMaster_Mask, $hMask, $hMaster_Mask, 2) _WinAPI_DeleteObject($hMask) $hMask = _WinAPI_CreateRectRgn($aMouse_Pos[0], $iY1, $aMouse_Pos[0] + 1, $aMouse_Pos[1]) ; Right of rectangle _WinAPI_CombineRgn($hMaster_Mask, $hMask, $hMaster_Mask, 2) _WinAPI_DeleteObject($hMask) ; Set overall region _WinAPI_SetWindowRgn($hRectangle_GUI, $hMaster_Mask) If WinGetState($hRectangle_GUI) < 15 Then GUISetState() Sleep(10) WEnd ; Get second mouse position $iX2 = $aMouse_Pos[0] $iY2 = $aMouse_Pos[1] ; Set in correct order if required If $iX2 < $iX1 Then $iTemp = $iX1 $iX1 = $iX2 $iX2 = $iTemp EndIf If $iY2 < $iY1 Then $iTemp = $iY1 $iY1 = $iY2 $iY2 = $iTemp EndIf GUIDelete($hRectangle_GUI) GUIDelete($hCross_GUI) DllClose($UserDLL) $sBMP_Path = @ScriptDir & "\Rect.bmp" _ScreenCapture_Capture($sBMP_Path, $iX1, $iY1, $iX2, $iY2, False) EndFunc ;==>Mark_Rect Please see the following links to see the original posts on the ImageSearch UDF and the usage. I hope it will help someone here.
  13. Hello, I need to find an image on screen and return it's position left, top, right, botton. I'm using the ImageSearch function but it only returns 1 or 0. Any ideas? Thanks!
  14. Hello, maybe i am just tired or i did not understand exactly how to use ImageSearch for different pictures, but i tried now a few things with my example script and only the first part is working. Explaining what i try to do, at work we have a programm running which has three different states, they are visible but sometimes the statuses of the process is not running and to avoid a long time without progress of the programm i searched to get a way to have a better visible notification as existing, so there is grey as work in progress, orange for not running and red for aborted, now when the states are changing i would like to receive a little window that is just telling the actual status. #include <ImageSearch2015.au3> #include <MsgBoxConstants.au3> #include <AutoItConstants.au3> $x1=0 $y1=0 While 1 sleep(100) $image1 = _ImageSearch("red.png", 1,$x1,$y1,0) If $image1 = 1 then SplashTextOn ( "", "RED !" , 100 , 50 , 1800 , 220 , $DLG_TEXTLEFT, "Arial" , 12 , 500 ) Sleep(1000) SplashOff() sleep(100) EndIf $image2 = _ImageSearch("orange.png", 1,$x1,$y1,0) If $image2 = 1 Then SplashTextOn ( "", "Orange !" , 100 , 50 , 1800 , 220 , $DLG_TEXTLEFT, "Arial" , 12 , 500 ) Sleep(1000) SplashOff() sleep(100) EndIf $image3 = _ImageSearch("grey.png", 1,$x1,$y1,0) If $image3 = 1 Then SplashTextOn ( "", "Grey !" , 100 , 50 , 1800 , 220 , $DLG_TEXTLEFT, "Arial" , 12 , 500 ) Sleep(1000) SplashOff() EndIf WEnd As i said before, part one to receive the state for aborted is working, so i get the splash window for this, but what do i miss for the other two? I put the While statement in for continuously running as long it is needed when the program is in use, but i believe i missed something.
  15. I have loaded FastFind into my code and it takes a snapshot and creates a BMP file from it. My issue is now I want to imagesearch from that BMP file (or snapshot memory) and look for a specific image from that image and get the coordinates from that. I have looked at all the documentation but I cannot find anything to assist me. Does anyone have any idea?
  16. Hello, global $y, $x #RequireAdmin Global $Paused HotKeySet("{NUMPAD2}", "Pause") HotKeySet("{NUMPAD8}", "End") Opt("MouseClickDownDelay", 30) #include <ImageSearch2015.au3> #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <StaticConstants.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> #include <UpDownConstants.au3> #include <Misc.au3> Sleep(6000) Sleep(3000) $search1 = _WaitForImageSearch("goo.bmp", 30, 1, $x, $y, 10) If $search1 = 1 Then MouseMove(1500, 1500, 10) Sleep(100) MouseClick("right") Sleep(300) EndIf I've this script. The problem is that it work the way it is supposed to but doesnt work on a friends pc, even tho we have the same image search in C/programms(x86)/autoit3/include and the same dll in system 32. When he starts the script on the desktop without having the "goo.bmp" file on his pc, the script finds it and right clicks the given location, while for me it doesnt and i have to open the folder with the "goo.bmp" picture in it. Im out of ideas on what could cause the problem. Any help? Thank you in advance
  17. Howdy, I've gone through a lot of au3 forums, and I once had a working Imagesearch script that I got from here. However, and i'm just totally not sure how but my imagesearch scripts aren't working anymore. I'm not new to au3 but i'm not the most experienced with it's syntax/commands. Anyways, I've looked over the big threads involving imagesearch. Does anyone have a working Imagesearch x64 for win10 that is currently working as of the date with the post. Dll's and what not is fine, just when I tell the script to run, I want to be able to find the image on the screen! Can't find a working copy so if anyone has one please send it my way lol. I've taken all the imagesearch downloads and what not and have played with them but I can't get any of them working on my end, despite others saying they're working. Thanks.
  18. Hello, I currently have a problem that deals with moving the mouse to a given location + or - a certain distance. $search1 =_WaitForImageSearch("envelope.bmp", 10, 1, $x, $y, 20) $search2 =_WaitForImageSearch("envelope2.bmp", 10, 1, $x, $y, 20) If $search1 = 1 Then Sleep(100) MouseMove($x, $y, 10) sleep(99) MouseClick("left") Sleep(99) ElseIf $search2 = 1 Then Sleep(100) MouseMove($x, $y2, 10) sleep(99) MouseClick("left") Sleep(100) Else Sleep(150) MouseMove($x2, $y, 10) Sleep(150) MouseClick("left") Sleep(150) EndIf The problem about this is that i defined $x2 = $x - 175 and $y2 = $y + 35 I got these numbers ( 175 and 35) with the autoit helper and just subtracted point where it is to the point its supposed to move but it doesnt work. is there any proper way to find the distance between 2 points in pixels? Imgsearch doesnt always work for this picture so i want it to have a backup edit: could it be that the definition of $x and $y from the previous image search arent there anymore and thats why it moves my mouse to strange places? is there a way to preserve the $x $y from the previous img search untill the next succesful one?
  19. Hi all expert autoit. I got a problem with imagesearch and pixelgetcolor. It not work for all pc. My autoit program work fine on my pc with nvidia graphic card. when i test it will another pc, which use onboard card, it not working. i think my problem is difference of graphic card. How can i fix it? how can i use pixelgetcolor with all pc?? Here my example code $color=PixelGetColor($X , $Y ) if $color="XXXXXX" then msgbox(0,"wn"," found it") else msgbox(0,"wn"," not found") EndIF
  20. Added Image...I am trying to work out Imagesearch but Its not working perfectly.After pressing Hotkey,Mouse not moving to targeted picture.I tried so hard but still not working.So i post here,need help
  21. Hi, I saw a couple topics about both mousedrag and imagesearch in background or minimized window, but none of them has the solution, and they were old topics. So I wanted to ask whether there is a way to mouse drag without the cursor to move, (I want to use mouse when mousedrag is working on a window). I don't know whether I can mix ControlMove with some other stuff or any other way? And also for the image search, is there any way to search for image (or pixel) in a background or minimized window? I thought maybe there is a au3 or dll or ... file for doing this. Another question I have: Any way to pinch zoom (two fingers) a window like "windows photo viewer" to zoom in or out? I saw something almost the same here, but not what I want. I appreciate it.
  22. If possible please add or edit the comments to explain how this works. ;includes functions from other things #include <GDIPlus.au3> #include <ScreenCapture.au3> ;hotkeys HotKeySet("{ESC}", _exit) HotKeySet("{F1}", _scan) ;global variables Global $win_title ;name of the window Global $area_x ; Global $area_y ; Global $area_w ; Global $area_h ; Global $cursor ; Global $rect_file ; Global $hbmpscreen ; Global $i= 1043 ;moves the rect Global $ii= 378 ;moves the rect Global $x=1044 ;inner rect offset Global $y=501 ;inner rect offset Global $hbmprect ;image inside rect Global $hscreen ;image whole screen _GDIPlus_Startup() ;? ;display hotkeys on screen ToolTip("Press F1 to scan | Press ESC to Exit",0,0) ;infinite loop to keep prog running While 1 Sleep(100) WEnd Func _scan() ;~ reads your screen area: _read() ;~ converts screen captured into bmp _convert() ;~ . Loads converted bmp to be read _loadBMP() ;~ compares the bmp of your scanned screen to the actual screen that is being displayed _compare() EndFunc ;reads screen Func _read() $hscreen = _ScreenCapture_CaptureWnd("", WinGetHandle($win_title), $area_x, $area_y, $area_x + $area_w, $area_y + $area_h, $cursor) EndFunc ;converts screen into bmp Func _convert() _GDIPlus_BitmapCreateFromHBITMAP($hscreen) EndFunc ;loads converted screen Func _loadBMP() _GDIPlus_BitmapCreateFromFile($rect_file) EndFunc ;compares savedBMP to current screen Func _compare() ;If( below code ) = ( below code ) Then If _GDIPlus_BitmapGetPixel($hbmpscreen, ($i + $x) - $area_x, ($ii + $y) - $area_y) = _GDIPlus_BitmapGetPixel($hbmprect, $x, $y) Then ;display message box titled found with a message of found MsgBox("","","found") ;if above is not correct then EndIf EndFunc ;exit func Func _exit() Exit EndFunc
  23. Do you have a working imagesearch.au3 with working dll? and how can i gethandle and send keyboard/mouse commands to hidden d3d window? i have tried imagesearch2015 but im getting dll error every time and tried older imagesearchs too in forum what i found. i have tried many things to send commands to hidden/background d3dwindow still nothing works. Can you help me please?
  24. Hello. I had made a bot that clicks and doing stuff. It is working fine, but when i move it to another PC ImageSearch stop working. I captured same image of a button again and i observed that they are a little bit different. How to deal with this? I wonder if i will make black and white detection might work, or not ... i don't know. The point is i am not willing to re-do photos on each and every PC i move the scripts. ClickOnImageWithToleranceFast("images/fb_about.bmp",16) Func ClickOnImageWithToleranceFast($image_path,$tolerance) If SearchForImageOnScreenWithTolerance($image_path,$tolerance) Then If $x <> 0 And $y <> 0 Then MouseMove($x+5, $y+5,0) Sleep(500) MouseClick("left") Sleep(500) EndIf EndIf EndFunc Link : https://postimg.org/gallery/z6n168ps/585debf1/# Also i have attached them. Thank you fb_about.bmp fb_about2.bmp
  25. Hello. I've been working with Imagesearch library lately and it did a good work, although I moved to a new PC and didn't copy the old files with me so I downloaded the Imagesearch from the following post hoping that it will work. It doesn't though. First time I when I use (run as subscript to my code) the Imagesearch.au3, Scite finds errors (missing spaces). Ctrl+T (scite tidy) fixes these missing spaces but the script returns the following error on every run after: _ImageSearch('search.bmp', 0, $x, $y, 0) outputs "C:\Users\Knuckles\Desktop\AutoIt\include\ImageSearch.au3" (44) : ==> Subscript used on non-accessible variable.: If $result[0] = "0" Then Return 0 If $result^ ERROR no matter if I put the searched bmp in the script folder or folder img in the script directory. Also, it doesn't matter if the searched image on screen or not, it returns the same. Can you provide me any help please? I remember having these problems 2 years ago when I first met the imagesearch library also (I fixed it somehow though in that time). Seems nothing changed. Using this version posted in the following post gives the same error: Also I run windows 10 64bit and I have no shell options for script editing, running as x86 or whatever as I used to have on windows xp/7. I went through some steps like deleting a key in registry and I even reinstalled autoit and scite but that only resulted to au3 as unrecognized file format and not in getting back the menus and the icon on au3 files. Any thoughts on this? Edit: Installing 64-bit AutoIt and using 64bit ImageSearch is no change. code.au3 FOUND WORKING: http://www.codebot.de/index.php/Thread/12713-Imagesearch-au3-funktioniert-nicht/ but why is this one working and the original aren't? :(
×
×
  • Create New...