Leaderboard
Popular Content
Showing content with the highest reputation since 11/26/2024 in Files
-
Version v3.5
11,698 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! 🚀 ___________________________3 points -
Version v1.0
265 downloads
MemoryUDF - AutoIt Memory Management & Assembly Library A comprehensive AutoIt User Defined Function (UDF) library for advanced memory manipulation and inline assembly execution. This library provides powerful tools for reading/writing process memory, pointer chain traversal, pattern scanning, and assembly code injection. Features Memory Operations Process Memory Access: Read/write memory from external processes Pointer Chain Support: Navigate complex pointer structures with x86/x64 compatibility Module Management: Get base addresses and sizes of loaded modules Memory Protection: Change memory protection flags Memory Utilities: Copy, fill, compare, and dump memory regions Assembly & Code Injection Inline Assembly: Compile and execute machine code directly Code Injection: Inject assembly code into remote processes Function Hooking: Hook and unhook functions with jump patches Code Cave Creation: Create NOP sleds for code modification Assembly Helpers: Generate common x86 instructions programmatically Pattern Scanning & Search Pattern Scanning: Search for byte patterns with wildcard support String Search: Find ASCII/Unicode strings in memory (case-sensitive/insensitive) Value Search: Search for integers, floats, and hex sequences AOB Scanning: Array of Bytes scanning with wildcard support Region Scanning: Scan entire module memory regions Advanced Features Memory Snapshots: Compare memory states to detect changes Array Operations: Read/write arrays of values efficiently String Operations: Handle null-terminated strings (ASCII/Unicode) Memory Freezing: Continuously write values to addresses Page Information: Query memory page properties Requirements AutoIt Version: 3.3.14+ Operating System: Windows (x86/x64) Required DLLs: Kernel32.dll, Psapi.dll, User32.dll Privileges: SeDebugPrivilege recommended for external process access Installation Download MemoryUDF.au3 Include in your AutoIt script: #include "MemoryUDF.au3" Quick Start Basic Memory Reading ; Enable debug privilege for external process access _Memory_SetPrivilege("SeDebugPrivilege", True) ; Open process handle Local $ahHandle = _Memory_Open("notepad.exe") If Not @error Then ; Read a 4-byte integer from memory Local $iValue = _Memory_Read($ahHandle, 0x12345678, "int") ConsoleWrite("Value: " & $iValue & @CRLF) ; Close handle when done _Memory_Close($ahHandle) EndIf Pointer Chain Navigation Local $ahHandle = _Memory_Open("AppX.exe") If Not @error Then ; Get module base address Local $iModuleBase = _Memory_GetModuleBaseAddress($ahHandle, "AppX.dll") ; Define pointer chain offsets Local $aOffsets[3] = [0x28, 0x1D8, 0x6C0] ; Read value through pointer chain Local $iValue = _Memory_ReadPointer($ahHandle, $iModuleBase + 0x123456, $aOffsets, "int") ConsoleWrite("Battery: " & $iValue & @CRLF) _Memory_Close($ahHandle) EndIf Assembly Code Execution ; Execute inline assembly (MOV EAX, 42; RET) Local $iResult = _ASM_QuickExecute("B82A000000C3") ConsoleWrite("Assembly result: " & $iResult & @CRLF) ; Output: 42 Pattern Scanning Local $ahHandle = _Memory_Open("AppX.exe") If Not @error Then Local $iModuleBase = _Memory_GetModuleBaseAddress($ahHandle, "AppX.exe") ; Search for byte pattern with wildcards Local $iAddress = _Memory_PatternScan($ahHandle, $iModuleBase, 0x100000, "8B 0D ?? ?? ?? ?? 85 C9") If Not @error Then ConsoleWrite("Pattern found at: 0x" & Hex($iAddress) & @CRLF) EndIf _Memory_Close($ahHandle) EndIf Core Functions Memory Management _Memory_Open($vProcess, $iAccess, $bInherit) - Open process handle _Memory_Close($ahHandle) - Close process handle _Memory_Read($ahHandle, $iAddress, $sType) - Read memory value _Memory_Write($ahHandle, $iAddress, $vData, $sType) - Write memory value _Memory_ReadPointer($ahHandle, $iBaseAddress, $aOffsets, $sType) - Read through pointer chain _Memory_WritePointer($ahHandle, $iBaseAddress, $aOffsets, $vData, $sType) - Write through pointer chain Module Operations _Memory_GetModuleBaseAddress($ahHandle, $sModule) - Get module base address _Memory_GetProcessBaseAddress($ahHandle) - Get main executable base address _Memory_GetProcessModules($ahHandle) - List all process modules _Memory_GetModuleSize($ahHandle, $sModule) - Get module size Assembly Functions _ASM_Compile($sHexCode) - Compile hex machine code to executable memory _ASM_Execute($pCode, $iParam1, $iParam2, $iParam3, $iParam4) - Execute compiled code _ASM_Free($pCode) - Free compiled code memory _ASM_QuickExecute($sHexCode) - Compile and execute in one call _ASM_Inject($ahHandle, $sHexCode, $bAutoFree) - Inject code into remote process Pattern Scanning _Memory_PatternScan($ahHandle, $iStartAddress, $iSize, $sPattern) - Find first pattern match _Memory_PatternScanAll($ahHandle, $iStartAddress, $iSize, $sPattern, $iMaxResults) - Find all matches _Memory_StringSearch($ahHandle, $iStartAddress, $iSize, $sString, $bUnicode, $bCaseSensitive) - Search for strings _Memory_IntegerSearch($ahHandle, $iStartAddress, $iSize, $iValue, $sType) - Search for integer values _Memory_FloatSearch($ahHandle, $iStartAddress, $iSize, $fValue, $bDouble) - Search for float values Assembly Helpers _ASM_CreateJump($iFrom, $iTo, $bShort) - Generate JMP instruction _ASM_CreateCall($iFrom, $iTo) - Generate CALL instruction _ASM_CreatePush($iValue) - Generate PUSH instruction _ASM_CreateMov($iRegister, $iValue) - Generate MOV instruction _ASM_CreateNOP($iCount) - Generate NOP sled _ASM_CreateRet($iPopBytes) - Generate RET instruction Function Hooking _ASM_HookFunction($ahHandle, $iTargetAddress, $iHookAddress, $iNOPCount) - Hook function _ASM_UnhookFunction($ahHandle, $iTargetAddress, $sOriginalBytes) - Restore original function Utility Functions _Memory_Protect($ahHandle, $iAddress, $iSize, $iProtection) - Change memory protection _Memory_ReadString($ahHandle, $iAddress, $iMaxLength, $bUnicode) - Read null-terminated string _Memory_WriteString($ahHandle, $iAddress, $sString, $bUnicode, $bNullTerminate) - Write string _Memory_ReadArray($ahHandle, $iAddress, $iCount, $sType) - Read array of values _Memory_WriteArray($ahHandle, $iAddress, $aArray, $sType) - Write array of values _Memory_Copy($ahHandle, $iSourceAddress, $iDestAddress, $iSize) - Copy memory region _Memory_Fill($ahHandle, $iAddress, $iSize, $iByte) - Fill memory with byte value _Memory_Compare($ahHandle, $iAddress1, $iAddress2, $iSize) - Compare memory regions _Memory_DumpRegion($ahHandle, $iAddress, $iSize) - Dump memory to hex string Data Types Supported data types for memory operations: "byte" - 1 byte (0-255) "word", "short" - 2 bytes "int", "dword" - 4 bytes (default) "int64", "uint64" - 8 bytes "float" - 4-byte floating point "double" - 8-byte floating point "ptr" - Pointer size (4 bytes on x86, 8 bytes on x64) Constants Process Access Rights $PROCESS_ALL_ACCESS - Full access rights $PROCESS_VM_READ - Read memory access $PROCESS_VM_WRITE - Write memory access $PROCESS_VM_OPERATION - Memory operation access Memory Protection $PAGE_EXECUTE_READWRITE - Execute, read, and write access $MEM_COMMIT - Commit memory pages $MEM_RESERVE - Reserve memory pages $MEM_RELEASE - Release memory pages Assembly Registers 8-bit: $AL, $CL, $DL, $BL, $AH, $CH, $DH, $BH 16-bit: $AX, $CX, $DX, $BX, $SP, $BP, $SI, $DI 32-bit: $EAX, $ECX, $EDX, $EBX, $ESP, $EBP, $ESI, $EDI 64-bit: $RAX, $RCX, $RDX, $RBX, $RSP, $RBP, $RSI, $RDI, $R8-$R15 Error Handling All functions use AutoIt's @error system for error reporting: @error = 0 - Success @error > 0 - Error occurred (check function documentation for specific error codes) Always check @error after function calls: Local $iValue = _Memory_Read($ahHandle, $iAddress, "int") If @error Then ConsoleWrite("Error reading memory: " & @error & @CRLF) Else ConsoleWrite("Value: " & $iValue & @CRLF) EndIf Best Practices Enable Debug Privilege: Call _Memory_SetPrivilege("SeDebugPrivilege", True) before accessing external processes Handle Cleanup: Always call _Memory_Close() to free resources Check Errors: Verify @error after each function call Use Appropriate Types: Choose the correct data type for your memory operations Validate Addresses: Ensure memory addresses are valid before access Test Patterns: Verify pattern strings are correctly formatted with spaces Security Considerations This library requires elevated privileges for external process access Memory manipulation can cause application crashes or system instability Always validate input parameters and memory addresses Use appropriate error handling to prevent unexpected behavior Be cautious when injecting code into critical system processes Compatibility Architecture: Supports both x86 and x64 processes AutoIt: Compatible with AutoIt 3.3.14 and later versions Windows: Works on Windows Vista and later versions Processes: Can access both 32-bit and 64-bit processes (with appropriate AutoIt version) Author Dao Van Trong - TRONG.PRO License This UDF is provided as-is for educational and development purposes. Use responsibly and in accordance with applicable laws and regulations.3 points -
3 points
-
Version 1.2
16 downloads
JsonC UDF Enhanced - AutoIt JSON Library An enhanced JSON library for AutoIt using the JSON-C library, featuring a high-level API, path-based queries, and powerful utility functions. 📋 Table of Contents Features Requirements Installation Quick Start API Documentation Core Functions High-Level API Path-Based Queries Utility Functions Examples Error Handling Performance Credits License ✨ Features 1. High-Level API _JsonC_Parse: Parse JSON strings to AutoIt Maps/Arrays (easy to work with!) _JsonC_Generate: Convert AutoIt data to JSON strings with formatting options _JsonC_GeneratePretty: Pretty-print JSON output 2. Path-Based Queries _JsonC_Get: Get values by path (e.g., "user.address.city" or "items[0].name") _JsonC_Set: Set values by path (creates nested structures automatically) _JsonC_Delete: Delete values by path _JsonC_Has: Check if a path exists 3. Utility Functions _JsonC_Keys: Get all keys from a Map/Object _JsonC_Values: Get all values from a Map/Object or Array _JsonC_IsValid: Validate JSON strings _JsonC_GetTypeStr: Get human-readable type names 4. Optimizations Auto-loading DLL on first use Improved error handling with meaningful error codes Better memory management Support for both x86 and x64 architectures 📦 Requirements AutoIt: Version 3.3.16.0 or higher DLL Files: json-c.dll (for x64 systems) json-c_x86.dll (for x86 systems) JSON-C Library: Based on version 0.18-20240915 🚀 Installation Download the UDF: Copy JSONc_UDF.au3 to your AutoIt includes directory or project folder. Download DLL Files: Place the appropriate DLL files in your script directory: json-c.dll (64-bit) json-c_x86.dll (32-bit) Include in Your Script: #include "JSONc_UDF.au3" Architecture Setup (Optional): #AutoIt3Wrapper_UseX64=y ; Use 64-bit version 🎯 Quick Start Parse JSON String #include "JSONc_UDF.au3" ; Parse JSON Local $sJson = '{"name":"John","age":30,"email":"john@example.com"}' Local $mData = _JsonC_Parse($sJson) ; Access data ConsoleWrite("Name: " & $mData["name"] & @CRLF) ; Output: John ConsoleWrite("Age: " & $mData["age"] & @CRLF) ; Output: 30 ConsoleWrite("Email: " & $mData["email"] & @CRLF) ; Output: john@example.com ; Cleanup _JsonC_Shutdown() Generate JSON String #include "JSONc_UDF.au3" ; Create data structure Local $mUser[] $mUser["name"] = "Alice" $mUser["age"] = 25 $mUser["active"] = True ; Convert to JSON Local $sJson = _JsonC_Generate($mUser) ConsoleWrite($sJson & @CRLF) ; Output: {"name":"Alice","age":25,"active":true} ; Pretty print Local $sPrettyJson = _JsonC_GeneratePretty($mUser) ConsoleWrite($sPrettyJson & @CRLF) Path-Based Queries #include "JSONc_UDF.au3" Local $sJson = '{"user":{"name":"Bob","address":{"city":"New York","zip":"10001"}}}' Local $mData = _JsonC_Parse($sJson) ; Get nested values ConsoleWrite(_JsonC_Get($mData, "user.name") & @CRLF) ; Output: Bob ConsoleWrite(_JsonC_Get($mData, "user.address.city") & @CRLF) ; Output: New York ; Set nested values _JsonC_Set($mData, "user.phone", "555-1234") ; Check if path exists If _JsonC_Has($mData, "user.email") Then ConsoleWrite("Email exists!" & @CRLF) Else ConsoleWrite("Email not found!" & @CRLF) EndIf 📖 API Documentation Core Functions _JsonC_Startup($sDll_Filename = "") Loads the json-c.dll library. Parameters: $sDll_Filename - [Optional] DLL path or empty string for auto-detect Returns: Success: DLL filename Failure: Empty string and sets @error = 1 Example: If Not _JsonC_Startup() Then MsgBox(16, "Error", "Failed to load JSON-C DLL!") Exit EndIf _JsonC_Shutdown() Unloads json-c.dll and performs cleanup. Example: _JsonC_Shutdown() High-Level API _JsonC_Parse($sJsonString) Parse JSON string into AutoIt data structure (Map for objects, Array for arrays). Parameters: $sJsonString - JSON formatted string Returns: Success: AutoIt data structure (Map[], Array[], String, Number, Boolean, Null) Failure: Empty string and sets @error: @error = 1: DLL not loaded or load failed @error = 2: Parse error (invalid JSON) @error = 3: Memory allocation error Example: Local $mData = _JsonC_Parse('{"name":"John","age":30}') If @error Then ConsoleWrite("Parse error!" & @CRLF) Else ConsoleWrite($mData["name"] & @CRLF) ; Output: John EndIf _JsonC_Generate($vData, $iFlags = $JSON_C_TO_STRING_PLAIN) Convert AutoIt data structure to JSON string. Parameters: $vData - AutoIt data structure (Map, Array, String, Number, Boolean, Null) $iFlags - [Optional] Formatting flags: $JSON_C_TO_STRING_PLAIN - Plain, no whitespace (default) $JSON_C_TO_STRING_SPACED - Spaced $JSON_C_TO_STRING_PRETTY - Pretty-printed with 2 spaces $JSON_C_TO_STRING_PRETTY_TAB - Pretty-printed with tabs Returns: Success: JSON formatted string Failure: Empty string and sets @error: @error = 1: DLL not loaded @error = 2: Conversion error Example: Local $mData[] $mData["name"] = "John" $mData["age"] = 30 Local $sJson = _JsonC_Generate($mData) ConsoleWrite($sJson & @CRLF) ; {"name":"John","age":30} _JsonC_GeneratePretty($vData, $bUseTabs = False) Convert AutoIt data structure to pretty-printed JSON string. Parameters: $vData - AutoIt data structure $bUseTabs - [Optional] Use tabs instead of 2 spaces (default: False) Returns: Success: Pretty-printed JSON string Failure: Empty string and sets @error Example: Local $sPrettyJson = _JsonC_GeneratePretty($mData) ConsoleWrite($sPrettyJson & @CRLF) _JsonC_IsValid($sJsonString) Validate if a string is valid JSON. Parameters: $sJsonString - String to validate Returns: True if valid JSON False otherwise Example: If _JsonC_IsValid($sJsonString) Then ConsoleWrite("Valid JSON!" & @CRLF) Else ConsoleWrite("Invalid JSON!" & @CRLF) EndIf Path-Based Queries _JsonC_Get($vData, $sPath, $vDefault = Null) Get value from JSON data by path (supports dot notation and array indices). Parameters: $vData - JSON data (Map/Array from _JsonC_Parse) $sPath - Path to value (e.g., "user.address.city" or "items[0].name") $vDefault - [Optional] Default value if path not found (default: Null) Returns: Value at path, or $vDefault if not found Example: ; Simple path $sName = _JsonC_Get($mData, "user.name") ; Array index $sFirstItem = _JsonC_Get($mData, "items[0]") ; With default value $sEmail = _JsonC_Get($mData, "user.email", "N/A") _JsonC_Set(ByRef $vData, $sPath, $vValue) Set value in JSON data by path (creates intermediate objects if needed). Parameters: $vData - [ByRef] JSON data to modify $sPath - Path where to set value (e.g., "user.name" or "items[0].name") $vValue - Value to set Returns: True on success False on failure Example: ; Set simple value _JsonC_Set($mData, "user.name", "John") ; Set nested value (auto-creates structure) _JsonC_Set($mData, "user.address.city", "New York") ; Set array element _JsonC_Set($mData, "items[0].price", 19.99) _JsonC_Delete(ByRef $vData, $sPath) Delete value from JSON data by path. Parameters: $vData - [ByRef] JSON data $sPath - Path to delete Returns: True if deleted False if path not found Example: _JsonC_Delete($mData, "user.email") _JsonC_Has($vData, $sPath) Check if path exists in JSON data. Parameters: $vData - JSON data (Map/Array) $sPath - Path to check Returns: True if path exists False otherwise Example: If _JsonC_Has($mData, "user.email") Then ConsoleWrite("Email exists!" & @CRLF) EndIf _JsonC_GetTypeStr($vData, $sPath = "") Get the type of value at path as a string. Parameters: $vData - JSON data $sPath - [Optional] Path to value (default: "" = root) Returns: Type name: "Map", "Array", "String", "Int64", "Double", "Bool", "Keyword", or "Unknown" Example: ConsoleWrite(_JsonC_GetTypeStr($mData, "user.age") & @CRLF) ; Output: Int64 Utility Functions _JsonC_Keys($vData, $sPath = "") Get all keys from a Map/Object. Parameters: $vData - JSON data $sPath - [Optional] Path to object (default: "" = root) Returns: Array of keys, or empty array if not a Map Example: Local $aKeys = _JsonC_Keys($mData) For $sKey In $aKeys ConsoleWrite($sKey & @CRLF) Next _JsonC_Values($vData, $sPath = "") Get all values from a Map/Object or Array. Parameters: $vData - JSON data $sPath - [Optional] Path to object/array (default: "" = root) Returns: Array of values, or empty array if not a Map/Array Example: Local $aValues = _JsonC_Values($mData, "user") For $vValue In $aValues ConsoleWrite($vValue & @CRLF) Next 💡 Examples Example 1: Working with Hardware Data #include "JSONc_UDF.au3" ; Load hardware data from JSON file Local $sJsonFile = @ScriptDir & "\hardware_data.json" Local $sJsonContent = FileRead($sJsonFile) ; Parse JSON Local $mHardware = _JsonC_Parse($sJsonContent) ; Access CPU information If _JsonC_Get($mHardware, "intelCPU.available", False) Then ConsoleWrite("CPU Package Temp: " & _JsonC_Get($mHardware, "intelCPU.packageTemp") & "°C" & @CRLF) ConsoleWrite("Core Count: " & _JsonC_Get($mHardware, "intelCPU.coreCount") & @CRLF) EndIf ; Access GPU information Local $aGPUs = _JsonC_Get($mHardware, "amdRadeonGPUs") If IsArray($aGPUs) And UBound($aGPUs) > 0 Then Local $mFirstGPU = $aGPUs[0] ConsoleWrite("GPU Name: " & $mFirstGPU["name"] & @CRLF) ConsoleWrite("GPU Temp: " & $mFirstGPU["temperature"] & "°C" & @CRLF) EndIf ; Cleanup _JsonC_Shutdown() Example 2: Creating and Modifying JSON #include "JSONc_UDF.au3" ; Create a new data structure Local $mConfig[] $mConfig["appName"] = "MyApp" $mConfig["version"] = "1.0.0" ; Add nested settings _JsonC_Set($mConfig, "settings.theme", "dark") _JsonC_Set($mConfig, "settings.language", "en") _JsonC_Set($mConfig, "settings.notifications", True) ; Add array of recent files Local $aRecentFiles[3] = ["file1.txt", "file2.txt", "file3.txt"] $mConfig["recentFiles"] = $aRecentFiles ; Generate pretty JSON Local $sJson = _JsonC_GeneratePretty($mConfig) ConsoleWrite($sJson & @CRLF) ; Save to file FileWrite(@ScriptDir & "\config.json", $sJson) _JsonC_Shutdown() Example 3: Working with Arrays #include "JSONc_UDF.au3" Local $sJson = '[{"name":"Alice","age":25},{"name":"Bob","age":30},{"name":"Charlie","age":35}]' Local $aUsers = _JsonC_Parse($sJson) ; Iterate through users For $i = 0 To UBound($aUsers) - 1 Local $mUser = $aUsers[$i] ConsoleWrite("User " & ($i + 1) & ": " & $mUser["name"] & " (Age: " & $mUser["age"] & ")" & @CRLF) Next _JsonC_Shutdown() Example 4: Error Handling #include "JSONc_UDF.au3" ; Validate JSON before parsing Local $sJson = '{"name":"John","age":30}' If Not _JsonC_IsValid($sJson) Then MsgBox(16, "Error", "Invalid JSON!") Exit EndIf ; Parse with error checking Local $mData = _JsonC_Parse($sJson) If @error Then ConsoleWrite("Parse error code: " & @error & @CRLF) Exit EndIf ; Safe value retrieval with default Local $sEmail = _JsonC_Get($mData, "email", "no-email@example.com") ConsoleWrite("Email: " & $sEmail & @CRLF) _JsonC_Shutdown() ⚠️ Error Handling The UDF uses AutoIt's @error macro for error reporting: Common Error Codes @error = 1: DLL not loaded or DLL call failed @error = 2: Parse error (invalid JSON) or conversion error @error = 3: Memory allocation error Best Practices Always check return values: Local $mData = _JsonC_Parse($sJson) If @error Then ConsoleWrite("Error: " & @error & @CRLF) EndIf Use _JsonC_IsValid() before parsing: If _JsonC_IsValid($sJson) Then $mData = _JsonC_Parse($sJson) EndIf Provide default values with _JsonC_Get(): Local $sValue = _JsonC_Get($mData, "path", "default") Always call _JsonC_Shutdown() when done: _JsonC_Shutdown() ⚡ Performance Benchmarks Parse: ~0.5ms for 1KB JSON Generate: ~0.3ms for 1KB data Path Query: ~0.05ms per query Tips for Optimal Performance Reuse parsed data instead of parsing repeatedly Use plain format ($JSON_C_TO_STRING_PLAIN) for faster generation Cache path queries if accessing the same paths multiple times Batch modifications before generating JSON 🙏 Credits Original Author: Sean Griffin (JSON_C.au3) Enhanced By: Dao Van Trong - TRONG.PRO JSON-C Library: json-c/json-c (v0.18-20240915) Special Thanks The AutoIt community for continuous support JSON-C developers for the robust C library 📄 License This UDF is provided "as-is" without warranty of any kind. You are free to use, modify, and distribute this code in your projects. The underlying JSON-C library is licensed under the MIT License. See the JSON-C repository for details. 🔗 Links JSON-C GitHub: https://github.com/json-c/json-c Author Website: TRONG.PRO 📞 Support If you encounter any issues or have questions: Check the Examples section Review the API Documentation Examine the included example file: EG_hardware_data.au3 Made with ❤️ for the AutoIt Community2 points -
Version 1.6.3.0
18,784 downloads
Extensive library to control and manipulate Microsoft Active Directory. Threads: Development - General Help & Support - Example Scripts - Wiki Previous downloads: 30467 Known Bugs: (last changed: 2020-10-05) None Things to come: (last changed: 2020-07-21) None BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort2 points -
Version 1.7.0.2
11,003 downloads
Extensive library to control and manipulate Microsoft Outlook. This UDF holds the functions to automate items (folders, mails, contacts ...) in the background. Can be seen like an API. There are other UDFs available to automate Outlook: OutlookEX_GUI: This UDF holds the functions to automate the Outlook GUI. OutlookTools: Allows to import/export contacts and events to VCF/ICS files and much more. Threads: Development - General Help & Support - Example Scripts - Wiki BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort KNOWN BUGS (last changed: 2020-02-09) None2 points -
Version 1.6.1.0
3,088 downloads
Extensive library to control and manipulate Microsoft Task Scheduler Service. Please check this site for the implementation status! Please check the History.txt file in the archive for the changelog. Please check the WIKI for details about how to use the UDF. BTW: If you like this UDF please click the "I like this" button. This tells me where to next put my development effort KNOWN BUGS (last changed: 2021-02-03) None Things to come (last changed: 2021-02-03) None2 points -
Version 3.4
1,667 downloads
The CodeScannerCrypterBundle (ca. 2.9 MB unzipped) contains the following UDFs and utilities: CodeScanner: analyse AutoIt script structure and content, identify potential issues, generate MCF data files CodeCrypter: front-end GUI for the MCF library, for script encryption (without storing the decryption key(s) in the script!) MetaCodeFile UDF (MCF library): for analysis and user-defined alterations of AutoIt script structure and content MCFinclude.au3: #include this UDF in any AutoIt script that you wish CodeCrypter to process CryptoNG, by TheXman; encryption UDF using Bcrypt dll calls (32/64-bit; various algorithms) StoreCCprofile.au3/readCSdatadump.au3/helloworld.au3: auxiliary utilities and example script HowToCodeCrypt.pdf: a simple guide in five steps CodeCrypterFAQ.pdf: questions and answers, partly based upon exchanges in the CodeCrypter thread. MetaCodeTutorial.pdf: the MCF engine explained; useful for encryption, GUI translation, code translation, and much more... Please follow the links for additional information.2 points -
Version 2.3
30 downloads
HardwareMonitor UDF for AutoIt A comprehensive AutoIt User Defined Function (UDF) library for hardware monitoring on Windows systems. This library provides access to CPU, GPU, storage, RAM, battery, and motherboard sensors through a simple AutoIt interface. 📦 Package Contents HardwareMonitor.dll - Native C++ monitoring library (x64) HardwareMonitor_x86.dll - Native C++ monitoring library (x86) The x86 driver is a conversion from x64 (may not work, x64 version is recommended) HardwareMonitor.au3 - AutoIt UDF wrapper with 88 functions test_udf.au3 - Comprehensive test script demonstrating all features ⚠️ IMPORTANT PREREQUISITE Install PawnIO Driver from official source BEFORE using this library! While the DLL includes an embedded driver as fallback, the official driver provides: ✅ Better stability and reliability ✅ Proper digital signature ✅ Persistent installation (no re-extraction needed) See Quick Start section for installation instructions. 🌟 Features Supported Hardware Intel CPU - Temperature monitoring for package and individual cores AMD CPU - Tctl temperature and CCD (Core Complex Die) monitoring NVIDIA GPU - Complete monitoring including temperature, clocks, fan, usage, memory, and power AMD Radeon GPU - Temperature, usage, fan speed monitoring with manual fan control Storage Drives - Temperature monitoring for HDD/SSD/NVMe drives via SMART RAM - Memory usage, speed, voltage, and module information Battery - Comprehensive battery status for laptops (charge, health, capacity, cycles) Motherboard - Super I/O chip monitoring (71 chips supported: ITE, Nuvoton, Winbond, Fintek) Key Capabilities ✅ 88 Functions - Complete hardware monitoring API ✅ JSON Export - Export all hardware data in JSON format ✅ Real-time Monitoring - Live sensor data updates ✅ Fan Control - Manual fan speed control for AMD Radeon GPU and motherboard ✅ Kernel-mode Access - Uses PawnIO driver for low-level hardware access ✅ No Dependencies - Self-contained DLL with embedded resources 📋 Requirements AutoIt 3.3.16.0+ (x64 recommended) Windows 7/8/10/11 Administrator Rights (required for driver installation and hardware access) PawnIO Driver (⚠️ RECOMMENDED: Install official driver first - see installation guide below) 🚀 Quick Start PawnIO Driver Installation (Recommended) ⚠️ Important: For best performance and reliability, install the official PawnIO driver before using this library. Download PawnIO Driver from official source: GitHub: https://github.com/namazso/PawnIO.Setup/releases Or build from source: https://github.com/namazso/PawnIO Install the driver: REM Run as Administrator sc create PawnIO binPath= "%ProgramFiles%\PawnIO\PawnIO.sys" type= kernel start= demand sc start PawnIO Verify installation: sc query PawnIO Should show STATE: RUNNING Why install official driver? ✅ Better stability - Official driver is tested and signed ✅ Consistent behavior - Same driver version across all apps ✅ Easier updates - Update driver independently ✅ Shared resource - Multiple applications can use same driver ⚠️ Embedded driver is fallback only - Extracted to temp, may have permission issues Library Installation Download the latest release Extract files to your project directory Include the UDF in your script: #include "HardwareMonitor.au3" Basic Usage #include "HardwareMonitor.au3" ; Initialize the library If Not _HWMon_Startup() Then MsgBox(0, "Error", "Failed to initialize HardwareMonitor: " & _HWMon_GetLastError()) Exit EndIf ; Check PawnIO driver status (recommended) If Not _HWMon_IsPawnIOInstalled() Then MsgBox(48, "Warning", "PawnIO driver not installed!" & @CRLF & @CRLF & _ "Some features may not work (Intel/AMD CPU temp, motherboard)." & @CRLF & @CRLF & _ "Please install official PawnIO driver from:" & @CRLF & _ "https://github.com/namazso/PawnIO.Setup/releases") EndIf ; Get CPU temperature Local $fTemp = _HWMon_Intel_GetPackageTemp() ConsoleWrite("CPU Temperature: " & $fTemp & "°C" & @CRLF) ; Get GPU information Local $iGPUCount = _HWMon_NVIDIA_GetGPUCount() If $iGPUCount > 0 Then Local $sName = _HWMon_NVIDIA_GetGPUName(0) Local $fGPUTemp = _HWMon_NVIDIA_GetGPUTemp(0) ConsoleWrite("GPU: " & $sName & " - " & $fGPUTemp & "°C" & @CRLF) EndIf ; Export all data to JSON Local $sJSON = _HWMon_GetAllInfoJSON() FileWrite("hardware_data.json", $sJSON) ; Cleanup _HWMon_Shutdown() 📚 Function Reference Core Functions (7) Function Description _HWMon_Startup([$sDLLPath]) Initialize the library _HWMon_Shutdown() Cleanup and close the library _HWMon_IsInitialized() Check if library is initialized ⭐NEW⭐ _HWMon_IsPawnIOInstalled() Check if PawnIO driver is available ⭐NEW⭐ _HWMon_GetModuleInfo() Get available hardware modules info _HWMon_GetLastError() Get last error message JSON Export (1) Function Description _HWMon_GetAllInfoJSON() Export all hardware data in JSON format Intel CPU Functions (4) Function Description _HWMon_Intel_GetCoreCount() Get number of CPU cores _HWMon_Intel_GetPackageTemp() Get CPU package temperature _HWMon_Intel_GetCoreTemp($iCoreIndex) Get individual core temperature _HWMon_Intel_GetAllCoreTemps() Get all core temperatures as array AMD CPU Functions (3) Function Description _HWMon_AMD_GetTctlTemp() Get AMD Tctl temperature _HWMon_AMD_GetCCDCount() Get number of CCDs _HWMon_AMD_GetCCDTemp($iCCDIndex) Get CCD temperature NVIDIA GPU Functions (13) Function Description _HWMon_NVIDIA_GetGPUCount() Get number of NVIDIA GPUs _HWMon_NVIDIA_GetGPUName([$iGPUIndex]) Get GPU name _HWMon_NVIDIA_GetGPUTemp([$iGPUIndex]) Get GPU temperature _HWMon_NVIDIA_GetCoreClock([$iGPUIndex]) Get core clock frequency (MHz) _HWMon_NVIDIA_GetMemoryClock([$iGPUIndex]) Get memory clock frequency (MHz) _HWMon_NVIDIA_GetShaderClock([$iGPUIndex]) Get shader clock frequency (MHz) _HWMon_NVIDIA_GetFanSpeed([$iGPUIndex]) Get fan speed (RPM) _HWMon_NVIDIA_GetFanSpeedPercent([$iGPUIndex]) Get fan speed (%) _HWMon_NVIDIA_GetGPUUsage([$iGPUIndex]) Get GPU usage (%) _HWMon_NVIDIA_GetMemoryUsage([$iGPUIndex]) Get memory controller usage (%) _HWMon_NVIDIA_GetVideoEngineUsage([$iGPUIndex]) Get video engine usage (%) _HWMon_NVIDIA_GetMemoryTotal([$iGPUIndex]) Get total VRAM (bytes) _HWMon_NVIDIA_GetMemoryUsed([$iGPUIndex]) Get used VRAM (bytes) _HWMon_NVIDIA_GetMemoryFree([$iGPUIndex]) Get free VRAM (bytes) _HWMon_NVIDIA_GetPowerUsage([$iGPUIndex]) Get power usage (Watts) AMD Radeon GPU Functions (7) Function Description _HWMon_AMDRadeon_GetGPUCount() Get number of AMD GPUs _HWMon_AMDRadeon_GetGPUName([$iGPUIndex]) Get GPU name _HWMon_AMDRadeon_GetGPUTemp([$iGPUIndex]) Get GPU temperature _HWMon_AMDRadeon_GetGPUUsage([$iGPUIndex]) Get GPU usage (%) _HWMon_AMDRadeon_GetFanSpeed([$iGPUIndex]) Get fan speed (RPM) _HWMon_AMDRadeon_GetFanSpeedPercent([$iGPUIndex]) Get fan speed (%) _HWMon_AMDRadeon_SetFanSpeed($iGPUIndex, $iPercent) Set fan speed (0=auto, 30-100%) _HWMon_AMDRadeon_ResetFanToAuto($iGPUIndex) Reset fan to automatic control Storage Functions (4) Function Description _HWMon_Storage_GetDriveCount() Get number of drives _HWMon_Storage_GetDriveModel($iDriveIndex) Get drive model name _HWMon_Storage_GetDriveType($iDriveIndex) Get drive type (HDD/SSD/NVMe) _HWMon_Storage_GetDriveTemp($iDriveIndex) Get drive temperature RAM Monitor Functions (11) Function Description _HWMon_RAM_Initialize() Initialize RAM monitor _HWMon_RAM_Update() Update RAM data _HWMon_RAM_GetTotalMemory() Get total memory (bytes) _HWMon_RAM_GetUsedMemory() Get used memory (bytes) _HWMon_RAM_GetAvailableMemory() Get available memory (bytes) _HWMon_RAM_GetMemoryLoad() Get memory load (%) _HWMon_RAM_GetMemorySpeed() Get RAM speed (MHz) _HWMon_RAM_GetMemoryVoltage() Get RAM voltage (V) _HWMon_RAM_GetModuleCount() Get number of RAM modules _HWMon_RAM_GetModuleInfo($iModuleIndex) Get module info string Battery Monitor Functions (15) Function Description _HWMon_Battery_IsAvailable() Check if battery is available ⭐NEW⭐ _HWMon_Battery_Initialize() Initialize battery monitor _HWMon_Battery_Update() Update battery data _HWMon_Battery_IsPresent() Check if battery is present _HWMon_Battery_GetStatus() Get battery status string _HWMon_Battery_GetChargeLevel() Get charge level (%) _HWMon_Battery_GetDesignCapacity() Get design capacity (mWh) _HWMon_Battery_GetFullChargeCapacity() Get full charge capacity (mWh) _HWMon_Battery_GetCurrentCapacity() Get current capacity (mWh) _HWMon_Battery_GetHealthPercent() Get battery health (%) _HWMon_Battery_GetVoltage() Get voltage (V) _HWMon_Battery_GetChargeRate() Get charge/discharge rate (W) _HWMon_Battery_GetTimeRemaining() Get time remaining (minutes) _HWMon_Battery_GetTimeToFullCharge() Get time to full charge (minutes) _HWMon_Battery_GetCycleCount() Get battery cycle count Note: _HWMon_Battery_GetManufacturer() has been removed in v2.3.0 (was non-functional). Use WMI if needed: SELECT * FROM Win32_Battery Motherboard Monitor Functions (14) Function Description _HWMon_Motherboard_Initialize() Initialize motherboard monitor _HWMon_Motherboard_Update() Update motherboard data _HWMon_Motherboard_IsDetected() Check if Super I/O chip detected _HWMon_Motherboard_GetChipName() Get Super I/O chip name _HWMon_Motherboard_GetTemperatureCount() Get number of temperature sensors _HWMon_Motherboard_GetTemperature($iIndex) Get temperature value _HWMon_Motherboard_GetTemperatureName($iIndex) Get temperature sensor name _HWMon_Motherboard_GetVoltageCount() Get number of voltage sensors _HWMon_Motherboard_GetVoltage($iIndex) Get voltage value _HWMon_Motherboard_GetVoltageName($iIndex) Get voltage sensor name _HWMon_Motherboard_GetFanCount() Get number of fan sensors _HWMon_Motherboard_GetFanSpeed($iIndex) Get fan speed (RPM) _HWMon_Motherboard_GetFanName($iIndex) Get fan sensor name _HWMon_Motherboard_SetFanSpeed($iIndex, $iPercent) Set fan speed (0=auto, 30-100%) _HWMon_Motherboard_SetFanToAuto($iIndex) Reset fan to automatic control _HWMon_Motherboard_IsFanManualMode($iIndex) Check if fan is in manual mode 💡 Examples Example 1: Monitor CPU Temperature #include "HardwareMonitor.au3" _HWMon_Startup() While True Local $fTemp = _HWMon_Intel_GetPackageTemp() ToolTip("CPU: " & Round($fTemp, 1) & "°C") Sleep(1000) WEnd Example 2: Monitor Multiple GPUs #include "HardwareMonitor.au3" _HWMon_Startup() Local $iGPUCount = _HWMon_NVIDIA_GetGPUCount() ConsoleWrite("Found " & $iGPUCount & " NVIDIA GPU(s)" & @CRLF) For $i = 0 To $iGPUCount - 1 Local $sName = _HWMon_NVIDIA_GetGPUName($i) Local $fTemp = _HWMon_NVIDIA_GetGPUTemp($i) Local $fUsage = _HWMon_NVIDIA_GetGPUUsage($i) Local $fPower = _HWMon_NVIDIA_GetPowerUsage($i) ConsoleWrite("GPU " & $i & ": " & $sName & @CRLF) ConsoleWrite(" Temperature: " & $fTemp & "°C" & @CRLF) ConsoleWrite(" Usage: " & $fUsage & "%" & @CRLF) ConsoleWrite(" Power: " & $fPower & "W" & @CRLF) Next _HWMon_Shutdown() Example 3: Control AMD GPU Fan Speed #include "HardwareMonitor.au3" _HWMon_Startup() ; Set fan to 50% _HWMon_AMDRadeon_SetFanSpeed(0, 50) ConsoleWrite("Fan set to 50%" & @CRLF) Sleep(5000) ; Reset to automatic _HWMon_AMDRadeon_ResetFanToAuto(0) ConsoleWrite("Fan reset to auto" & @CRLF) _HWMon_Shutdown() Example 4: Export All Hardware Data #include "HardwareMonitor.au3" _HWMon_Startup() ; Get all hardware info as JSON Local $sJSON = _HWMon_GetAllInfoJSON() ; Save to file FileWrite(@ScriptDir & "\hardware_report.json", $sJSON) ConsoleWrite("Hardware report saved!" & @CRLF) _HWMon_Shutdown() Example 5: Battery Monitoring (Laptop) #include "HardwareMonitor.au3" _HWMon_Startup() ; Check if battery is available first (NEW in v2.3.0) If _HWMon_Battery_IsAvailable() And _HWMon_Battery_Initialize() Then If _HWMon_Battery_IsPresent() Then Local $fCharge = _HWMon_Battery_GetChargeLevel() Local $sStatus = _HWMon_Battery_GetStatus() Local $fHealth = _HWMon_Battery_GetHealthPercent() Local $iCycles = _HWMon_Battery_GetCycleCount() ConsoleWrite("Battery Status: " & $sStatus & @CRLF) ConsoleWrite("Charge Level: " & $fCharge & "%" & @CRLF) ConsoleWrite("Health: " & $fHealth & "%" & @CRLF) ConsoleWrite("Cycle Count: " & $iCycles & @CRLF) Else ConsoleWrite("No battery detected (Desktop system)" & @CRLF) EndIf EndIf _HWMon_Shutdown() 🔧 Supported Super I/O Chips (71 Total) The motherboard monitor supports 71 Super I/O chips from major manufacturers: ITE - IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8771E, IT8772E, IT8792E, and more Nuvoton - NCT6771F, NCT6776F, NCT6779D, NCT6791D, NCT6792D, NCT6793D, NCT6795D, NCT6796D, NCT6797D, NCT6798D, and more Winbond - W83627DHG, W83627EHF, W83627HF, W83627THF, W83667HG, W83687THF, and more Fintek - F71858, F71862, F71869, F71882, F71889ED, F71889AD, and more ⚠️ Important Notes PawnIO Driver Behavior ⚠️ RECOMMENDED APPROACH: Install official PawnIO driver first (see Quick Start section) The library checks for PawnIO driver in this order: Official driver service (RECOMMENDED) Installed via: sc create PawnIO ... Always used if available Best performance and stability Pre-installed driver file Location: %ProgramFiles%\PawnIO\PawnIO.sys (x64) or PawnIO_x86.sys (x86) Used if service not running but file exists DLL will attempt to load it Embedded driver (FALLBACK ONLY) Extracted from DLL resources if above methods fail Saved to %ProgramFiles%\PawnIO\ (requires admin) or temp folder ⚠️ Less reliable, may have permission issues Why official driver is better: ✅ Digitally signed and verified ✅ Persistent across reboots ✅ Shared between applications ✅ Easier to update and maintain ✅ No extraction delays ✅ Works without admin rights (after installation) Fan Control Safety When using fan control functions, be aware: 0% = Automatic mode (recommended) 1-29% = Clamped to 30% (safety minimum) 30-100% = Actual speed >100% = Clamped to 100% Always monitor temperatures when using manual fan control! Administrator Rights Administrator rights are required for: PawnIO driver installation (one-time setup) Driver service start (if not set to auto-start) Initial hardware access (MSR, Super I/O chip detection) Recommended setup: Install PawnIO driver as Administrator (one time) Set driver to auto-start: sc config PawnIO start= auto Regular users can then use the library without admin rights If using embedded driver (not recommended): Admin rights required on every run (to extract and load driver) Driver extracted to temp folder (slower, cleaned up periodically) May fail due to antivirus or permission issues Compatibility Intel CPU: Requires MSR (Model Specific Register) support AMD CPU: Ryzen and newer recommended NVIDIA GPU: Requires NVAPI support AMD Radeon GPU: Requires ADL (AMD Display Library) support Motherboard: Requires compatible Super I/O chip 📝 Testing A comprehensive test script is included: #include "test_udf.au3" This will test all 88 functions and generate a detailed report in test_udf.au3.txt. 🐛 Troubleshooting PawnIO Driver Issues (Most Common) ⚠️ If CPU temperature or motherboard features don't work: Check if PawnIO driver is installed: sc query PawnIO Should show STATE: RUNNING Install official PawnIO driver if not installed: REM Download from "https://github.com/namazso/PawnIO.Setup/releases" first REM Then run as Administrator: sc create PawnIO binPath= "%ProgramFiles%\PawnIO\PawnIO.sys" type= kernel start= demand sc start PawnIO Common PawnIO errors: Error 1275: Driver blocked by Windows → Disable Secure Boot or sign the driver Error 5: Access denied → Run as Administrator Error 1060: Service not found → Driver not installed correctly Error 1058: Cannot start disabled service → Run sc config PawnIO start= demand Verify driver file exists: dir "%ProgramFiles%\PawnIO\PawnIO.sys" Check Windows Event Viewer: Open Event Viewer → Windows Logs → System Look for PawnIO-related errors Using embedded driver (not recommended): DLL will try to extract driver if official not found Requires Administrator rights on every run May fail due to antivirus or security policies Solution: Install official driver instead! "Failed to initialize" error Run as Administrator (required for first run or if PawnIO not installed) Check if DLL exists in correct path Verify Windows version compatibility (Win 7/8/10/11) Install official PawnIO driver (see above) "Motherboard not detected" Ensure PawnIO driver is installed and running Your motherboard may use an unsupported Super I/O chip Check DebugView for detection logs Some laptops don't expose Super I/O chips "Battery not present" on laptop Battery may be removed Some laptops don't expose battery info Try updating ACPI drivers 📄 License This project is provided as-is for educational and personal use. 👤 Author Dao Van Trong - TRONG.PRO 🔗 Version Version 2.3.0 - Complete hardware monitoring with 88 functions 📊 Statistics Total Functions: 88 (83 base + 5 Intel extended) Core Functions: 7 (includes initialization checks) Battery Functions: 15 (includes availability check) Supported CPUs: Intel (Core series), AMD (Ryzen series) Supported GPUs: NVIDIA (NVAPI), AMD Radeon (ADL) Supported Super I/O Chips: 71 models Code Lines: 1800+ lines of AutoIt code Test Coverage: 100% (all functions tested) Made with ❤️ for the AutoIt community1 point -
1 point
-
Version 6.1.6.6
7,014 downloads
zPlayer is a standalone, intuitive, and fully functional media player. Built to suit my purpose, it is customizable to your taste. zPlayer is powered by winmm.dll, an integral part of Windows. Features No 3rd Party Dependencies: Utilizes only Windows components and standard AutoIt UDFs. Universal Playback: Supports all digital media formats, provided proper codecs are installed. Independent Video Window: Separate video window with a minimal GUI for music. Versatile Loading Options: Load files, folders, or an audio CD for playback. Marquee Style Display: Long file names are displayed in smooth, infinite marquee style. Smart Playlists: Automatically generated playlists and easy-to-make custom playlists. Hidden Playlist: Playlist is hidden by default but available on demand in shuffled or sorted formats. Context Menus: Options include Play This File, File Properties, Search Internet, Go to This Folder, Move Playlist Item, and Remove from Playlist. Interactive Interface: Double-click any item to play it, search strings in the playlist, and use hotkeys for most functions. Playback Controls: Forward, backward, pause, and change folder. Repeat Functions: A-B repeat, current file repeat, and multiple-file repeat. Volume Control: Increase, decrease, or mute sound volume, synchronized with Windows volume mixer. Unmutes audio device on startup. Playback Environment Save: Save playback environment on session termination and resume in the next session. Resume Playback: Option to resume playback from where it was left off, with audio fade-in. Efficient Performance: Very low CPU and memory usage. Technical Information The script runs or compiles in x64 mode. To change this setting, comment out #AutoIt3Wrapper_UseX64=Y. The attached zPlayer.exe was compiled in x64 mode and is not flagged by Windows Defender as malicious. Compiling to x86 may result in false positive flags by Windows Defender. Feedback If you find an error, please download the latest version, as it may already be corrected. Otherwise, I would appreciate it if you could kindly let me know. zPlayer-NoUI.au3 The download section includes zPlayer-NoUI.au3. This is an abbreviated version of zPlayer, which is a music player controlled by hotkeys only, without a GUI. Note: zPlayer was tested to work in Windows 10 and 11. It should work in Windows 7, too. I would like to know if there is any compatibility problem.1 point -
1 point
-
209 downloads
3.3.17.1 (July 08, 2025) (Beta) AutoIt: UDFs: - Fixed: Typo in variable name in Date.au3 introduced in previous beta. 3.3.17.0 (June 29, 2025) (Beta) AutoIt: - Changed: Windows 7/Server 2008 is now the minimum OS version required due to dev environment changes. - Added #3891: DllCall() performance optimisation. - Added: Standard Windows Fonts List for Win10/Win11. - Added #3906: GUICtrlCreateXXX creation in example assign to $idXXX to reflect Ctrl type. - Added: FileGetAttrib() retrieve Join folder (J) as created by FileCreateNTFSLink(). - Added: Split WindowsConstants.u3 in WindowsNotifsConstants.au3, WindowsStylesConstants.au3 and WindowsSysColor.au3. - Added: #3984: GUICtrlSetGraphic() doc precision. - Fixed: Doc Chr(0) handling inside functions. - Fixed #3923: Doc typo in "Send Key List". - Fixed: Regression #3135 handle leak (Thanks Nano, Rudi, Nine). - Fixed #3925: Doc With ... EndWith using DllStruct Type. - Fixed: Links in Tutorials example code (thanks argumentum). Au3info: - Added: Display mouse coordinate mode. - Fixed #3917: Crash under Win7. SciTE-Lite: - Fixed: Folding Fix for #Preprocessor foldblock when followed by a CommentBlock. UDFs: - Added: script examples when running under Win11 with new notepad.exe. - Added: _GUICtrlTreeView_GetItemByIndex() can retrieve handle of the list of main item ($hItem= -1). - Added: _IsPressed() can be called with numeric value as in "WinAPIsvkeysConstants.au3". - Added #3909: _DebugReportData() to report Array column formatted. - Added: libExamples referring MemoWrite() now refer to _MemoWrite() defined in Extras\HelpFileInternals.au3. - Added: _WinAPI_WaitSystemIdle(), _WinAPI_QueryDiskUsage(), _WinAPI_QueryProcessorUsage(), _WinAPI_QueryProcessCycleTime() - Added: Doc _WinAPI_GetWindowSubclass() example (Thanks pixelSearch). - Added: _WinAPI_GetKeyboardLayout() default value for the running thread. - Added: _WinAPI_GetUserDefaultLCID() example. - Added: _WinAPI_GetKeyboardLayoutLocale(). - Added: _WinAPI_GetKeyboardState() example (Thanks AutoXenon). - Added #3932: Try to use file in HelpFile\Extras instead of @ScriptDir. - Added #3934: _WinAPI_SetTimer() example. - Added: _IsPressed() can wait on one of several keys. - Added: _WinAPI_SendInput(). - Added #3960: _Div() integer division. - Added #3963: _WinAPI_OpenEvent(). - Added: _GDIPlus_ImageSaveToFile() doc precision for compression level. - Added: _WinAPI_GetCursorSize() and _WinAPI_SetCursorSize(). - Added: $FOLDERID_Documents Constants in APIShellExConstants.au3. - Added: Support _GUIToolTip*() to be used to external process. - Added: Support _GUICtrlHeader*() to be used to external process. - Added: Support _GUICtrlStatusBar*() to be used to external process. - Added #3988: _WinAPI_GetSystemPowerStatus() return Battery status saver. - Added #3985: _ArrayDisplay() + $WS_EX_TOPMOST. - Added #3991: _SQLite_ForeignKeys() and Add a parameter in _SQLite_Open() to set it also. - Added #3990: _IsPressed() return in @extended if the key is still pressed. - Added: _DebugSetup(..., 1) does not interact with script being debug, Report infos copied to clipboard - Added: _WinAPI_SetWindowTheme() example to demonstrate Checkbox or Radio controls coloring. - Added #3997: _WinAPI_RegisterShellHookWindow() example improvement. - Added #3999: _WinAPI_OemToChar() performance improvement. - Added #3946: _ChooseFont() updated defaults (thanks argumentum). - Added: _DateDiff(), _DateAdd() using array for [days, hours, minutes, seconds]. - Added: _DebugSetup() Type 6, same as 1 but a timeout to close the report log windows. - Fixed #3894: _WinAPI_GetProcessName() returns incorrect result when process ID is invalid. - Fixed: "Then SetError()" in several standard UDF. - Fixed #3921: Missing _GUICtrlStatusBar_SetParts() examples. - Fixed: Doc typo $GPIP_ERR* >> $GDIP_ERR*. - Fixed #3926: _GUICtrlTreeView_SetChildren() not set/reset chidren flag. - Fixed: _WinAPI_DisplayStruct() elements containing chr(124). - Fixed #3945: StringRegExp() /s include VT. - Fixed #3949: _ArrayDisplay() does show multiple subscript of an array. - Fixed #3954: links in libfunction constants. - Fixed: missing doc description $iSubItem = - 1 in _GUICtrlListView_SetItemText(). - Fixed #3959: _WinAPI_ShellUserAuthenticationDlg() example. - Fixed #3975: unrelated link in Pcre doc. - Fixed #3903: _GuiCtrlTab_GetItem() does work on external process. - Fixed #3992: _WinAPI_DwmSetWindowAttribute() does not support all MSDN attributes. - Fixed #4001: _GUICtrlListView_*() example ($tagNMITEMACTIVATE). - Fixed #4003: _ArrayPush() doc precision. - Fixed: _GUICtrlButton_SetSplitInfo() example crash. - Fixed: Support of Notepad under Win11 for _DebugSetup(). - Fixed #4022: Various doc duplicated words. - Fixed #4031: _DebugArrayDisplay() buttons display. - Fixed: _DebugArrayDisplay() not executed if @error on entering ($ARRAYDISPLAY_CHECKERROR if no display wanted on @error). - Fixed #4033: _DateTimeSplit() setting $aTimePart[0] whem no time defined. - Fixed #4024: _DebugSetup(,, 5) (notepad window) not working under Windows 11. - Fixed: _WinAPI_IsElevated() @extended return value (Thanks Argumentum). - Fixed #4039: _GUICtrlTreeView_Delete() with $hWnd. - Fixed #4038: _GUICtrlRichEdit_StreamToFile() extra new paragraph. - Fixed #4029: _Date_Time_SystemTimeToDateTimeStr() Wrong output. - Fixed #4040: _GUICtrlRichEdit_SetZoom() parameter limitation bug. - Fixed #4041: _GUICtrlStatusBar_SetIcon() not shown.1 point -
Version v2.4.0
1,740 downloads
Encryption / Decryption / Hashing / Signing Purpose Cryptography API: Next Generation (CNG) is Microsoft's long-term replacement for their CryptoAPI. Microsoft's CNG is designed to be extensible at many levels and cryptography agnostic in behavior. Although the Crypt.au3 UDF lib that is installed with AutoIt3 still works well, the advapi32.dll functions that it uses have been deprecated. In addition the Crypt.au3 UDF lib, as it is currently written, has a very limited ability to decrypt AES data that was not encrypted using Crypt.au3 functions. That is because Crypt.au3 functions do not allow you to specify an actual key or initialization vector (IV). It only lets you specify data to be used to derive a key and uses a static IV. This UDF was created to offer a replacement for the deprecated functions used by Crypt.au3. According to Microsoft, deprecated functions may be removed in future release. It was also created to allow more flexibility and functionality in encryption/decryption/hashing/signing and to expand the ability for users to implement cryptography in their scripts. Description This UDF implements some of Microsoft's Cryptography API: Next Generation (CNG) Win32 API functions. It implements functions to encrypt/decrypt text and files, generate hashes, derive keys using Password-Based Key Derivation Function 2 (PBKDF2), create and verify signatures, and has several cryptography-related helper functions. The UDF can implement any encryption/decryption algorithms and hashing algorithms that are supported by the installed cryptography providers on the PC in which it is running. Most, if not all, of the "magic number" values that you would commonly use to specify that desired algorithms, key bit lengths, and other magic number type values, are already defined as constants or enums in the UDF file. To flatten the learning curve, there is an example file that shows examples of all of the major functionality. This example file is not created to be an exhaustive set of how to implement each feature and parameter. It is designed to give you a template or guide to help you hit the ground running in terms of using the functions. I have tried to fully document the headers of all of the functions as well as the code within the functions themselves. As of v1.4.0, there is also a Help file that includes all of the functions, with examples. Current UDF Functions Algorithm-Specific Symmetric Encryption/Decryption Functions _CryptoNG_AES_CBC_EncryptData _CryptoNG_AES_CBC_DecryptData _CryptoNG_AES_CBC_EncryptFile _CryptoNG_AES_CBC_DecryptFile _CryptoNG_AES_ECB_EncryptData _CryptoNG_AES_ECB_DecryptData _CryptoNG_AES_GCM_EncryptData _CryptoNG_AES_GCM_DecryptData _CryptoNG_3DES_CBC_EncryptData _CryptoNG_3DES_CBC_DecryptData _CryptoNG_3DES_CBC_EncryptFile _CryptoNG_3DES_CBC_DecryptFile Generic Symmetric Encryption/Decryption Functions _CryptoNG_EncryptData _CryptoNG_DecryptData _CryptoNG_EncryptFile _CryptoNG_DecryptFile Hashing Functions _CryptoNG_HashData _CryptoNG_HashFile _CryptoNG_PBKDF2 Asymmetric (Public/Private Key) Cryptography Functions _CryptoNG_ECDSA_CreateKeyPair _CryptoNG_ECDSA_SignHash _CryptoNG_ECDSA_VerifySignature _CryptoNG_RSA_CreateKeyPair _CryptoNG_RSA_CreateKeyPairEx _CryptoNG_RSA_EncryptData _CryptoNG_RSA_DecryptData _CryptoNG_RSA_SignHash _CryptoNG_RSA_VerifySignature Misc / Helper Functions _CryptoNG_CryptBinaryToString _CryptoNG_CryptStringToBinary _CryptoNG_GenerateRandom _CryptoNG_EnumAlgorithms _CryptoNG_EnumRegisteredProviders _CryptoNG_EnumKeyStorageProviders _CryptoNG_LastErrorMessage _CryptoNG_Version Related Links Cryptography API: Next Generation - Main Page Cryptography API: Next Generation - Reference Cryptography API: Next Generation - Primitives Cryptography API: Next Generation - Cryptographic Algorithm Providers1 point -
Version 2.0.0
1,257 downloads
On one/multiple big sheet(s) you get users (columns) and groups (rows). The list is sorted descending by number of members so you get the users with most groups and the groups with most members on top of the page. You can filter by (multiple) samaccountname(s), department or you can create your own LDAP query filter. You can filter the resulting list of groups using a Regular Expression. Version 2.0 uses maps so at the moment it requires the latest beta version of AutoIt! BTW: If you like this tool please click the "I like this" button. This tells me where to next put my development effort1 point -
OnDebugMsgBox
Parsix reacted to argumentum for a file
Version 2.2024.1.26
961 downloads
..a more flexible way to handle a This UDF, declared as the first ( or close to the top ) in a script, will catch the dreaded "AutoIt Error" MsgBox and prettify it, or just plain hide it. Is optional. Also add an EventLog Entry ( or not, is optional ). Add an entry in a log file ( or not, is optional ). Run another program to do something about the mishap ( or not, is optional ). There is an example of usage in the ZIP along with an example of the other program that handles the aftermath.1 point -
Version 1.0.1.2
841 downloads
Small example script to Protect Tabs in chrome + close other tabs and duplicates Local $sFilePath = @ScriptDir & "\ChromeProtectedTabs.exe" ;Close other tabs not containg these key words or duplicates Local $sProtectedTabs = "msdn, developer, autoit, Gmail, amazon, DuckDuckGo, YouTube" Run($sFilePath & " " & $sProtectedTabs)1 point -
Dbug - another debugger for AutoIt
ioa747 reacted to valdemar1977 for a file
Version 2018.05.24
3,308 downloads
Dbug is graphical debugger for AutoIt. Project started by @Heron in 2009 and now supported by @asdf8 and @valdemar1977. Features Debug the complete script or just parts of it Display run status (line number of currently executed function) GUI default always-on-top in the upper right corner for comfortable debugging WM_NOTIFY and WM_COMMAND hook to prevent interference with possible message handlers Display scope, type and value of variables, expressions, macro's and constants (global AND function local) Execute commands in an immediate window. Can be expressions, functions and assignments Detailed display of array, struct and object variables Dynamic display of variable value in the source code (under cursor) Array table viewer with ability to view the sub-arrays, the correct handling of macro @Error, @Extended and other changes OEM and ANSI console output Conditional breakpoints Saving settings and debugging state and much more... How to use Extract from downloaded archive _Dbug.au3 to your Autoit include dir Add #include <_Dbug.au3> in to your code and run code Before compile or buid comment or remove #include <_Dbug.au3> from your code1 point