Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/31/2025 in all areas

  1. 3 points
  2. Here's a script that does it with the Ctrl + Win + T hotkey. #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #AutoIt3Wrapper_Res_ProductName=WinTogleOnTop.au3 #AutoIt3Wrapper_Res_Description=Togle Window OnTop with 'Ctrl + Win + T' #AutoIt3Wrapper_Res_Fileversion=0.0.0.1 #AutoIt3Wrapper_Icon=WinTogleOnTop.ICO #include <WindowsConstants.au3> #include <WinAPISys.au3> TraySetIcon("WinTogleOnTop.ico") Opt("TrayAutoPause", 0) Global $g_ActWnd HotKeySet("#^t", "Cmd_WinTogleOnTop") ; Ctrl + Win + T" & @CRLF ;********************************** While Sleep(50) _GetActiveWindow() WEnd ;********************************** ;---------------------------------------------------------------------------------------- Func _GetActiveWindow() Local $AnyWindow = WinGetHandle("[ACTIVE]") If $g_ActWnd <> $AnyWindow Then $g_ActWnd = $AnyWindow ;ConsoleWrite("$g_ActWnd=" & $g_ActWnd & "; " & WinGetTitle($g_ActWnd) & @CRLF) EndIf EndFunc ;==>_GetActiveWindow ;---------------------------------------------------------------------------------------- Func Cmd_WinTogleOnTop() Local $iStyle = _WinAPI_GetWindowLong($g_ActWnd, $GWL_EXSTYLE) Local $iStyleTopMost = BitOR($iStyle, $WS_EX_TOPMOST) Local $aWPos = WinGetPos($g_ActWnd) If $iStyle = $iStyleTopMost Then WinSetOnTop($g_ActWnd, "", 0) ToolTip(" ", $aWPos[0], $aWPos[1], "Normal", 1) Else WinSetOnTop($g_ActWnd, "", 1) ToolTip(" ", $aWPos[0], $aWPos[1], "On top", 3) EndIf Sleep(1000) ToolTip("") EndFunc ;==>Cmd_WinTogleOnTop ;----------------------------------------------------------------------------------------
    3 points
  3. FWIW, I felt that the tool (mentioned above) would be kind of fun to make, so there you go : #include <WinAPISysWin.au3> #include <WinAPISys.au3> #include <WinAPIConstants.au3> #include <WindowsConstants.au3> #include <Misc.au3> #include <GuiMenu.au3> #include <GUIConstants.au3> #include <ColorConstants.au3> Opt("MustDeclareVars", True) Global Const $tagTITLEBARINFOEX = "int cbSize;" & $tagRECT & ";dword rgstate[6];dword rgrect[24]" Global $bRight, $hMSHook, $hMSProc, $hWnd If Not _Singleton("AutoIt SetOnTop Tool", 1) Then Exit MsgBox($MB_OK, "Error", "Tool already loaded") HotKeySet("{END}", Terminate) Example() Func Example() $hMSProc = DllCallbackRegister(MouseProc, "long", "int;wparam;lparam") $hMSHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hMSProc), _WinAPI_GetModuleHandle(0)) OnAutoItExitRegister(CleanUP) While Sleep(100) If $bRight Then $bRight = False ToggleSetOnTop() EndIf WEnd EndFunc ;==>Example Func MouseProc($nCode, $wParam, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hMSHook, $nCode, $wParam, $lParam) If ($wParam = $WM_RBUTTONDOWN Or $wParam = $WM_RBUTTONUP) And _IsPressed("11") Then $hWnd = GetWindow() If $hWnd Then $bRight = $wParam = $WM_RBUTTONUP Return 1 EndIf EndIf Return _WinAPI_CallNextHookEx($hMSHook, $nCode, $wParam, $lParam) EndFunc ;==>MouseProc Func ToggleSetOnTop() Local $iTop = BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_EXSTYLE), $WS_EX_TOPMOST) Local $aPos = MouseGetPos() Local $hGUI = GUICreate("", 200, 32, $aPos[0], $aPos[1], $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST) GUISetBkColor(0xD0D0D0) Local $idLabel = GUICtrlCreateLabel($iTop ? "Topmost OFF" : "Topmost ON", 0, 0, 200, 32, $SS_CENTERIMAGE + $SS_CENTER) GUICtrlSetFont(-1, 18, Default, Default, "Arial") GUICtrlSetColor(-1, $iTop ? $COLOR_RED : $COLOR_GREEN) GUISetState() While WinActive($hGUI) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $idLabel WinSetOnTop($hWnd, "", $iTop ? $WINDOWS_NOONTOP : $WINDOWS_ONTOP) ExitLoop EndSwitch WEnd GUIDelete() EndFunc ;==>ToggleSetOnTop Func CleanUP() _WinAPI_UnhookWindowsHookEx($hMSHook) DllCallbackFree($hMSProc) EndFunc ;==>CleanUP Func Terminate() Exit EndFunc ;==>Terminate Func GetWindow() Local Static $tPoint = DllStructCreate($tagPOINT) Local Static $tTITLEBARINFOEX = DllStructCreate($tagTITLEBARINFOEX) DllStructSetData($tTITLEBARINFOEX, "cbSize", DllStructGetSize($tTITLEBARINFOEX)) $tPoint.X = MouseGetPos(0) $tPoint.Y = MouseGetPos(1) Local $hWin = _WinAPI_GetAncestor(_WinAPI_WindowFromPoint($tPoint), $GA_ROOT) _SendMessage($hWin, $WM_GETTITLEBARINFOEX, 0, DllStructGetPtr($tTITLEBARINFOEX)) If $tTITLEBARINFOEX.top + $tTITLEBARINFOEX.bottom + $tTITLEBARINFOEX.left + $tTITLEBARINFOEX.right = 0 Then Return 0 If $tTITLEBARINFOEX.bottom <= $tTITLEBARINFOEX.top Then $tTITLEBARINFOEX.bottom = $tTITLEBARINFOEX.top + 35 If $tPoint.X >= $tTITLEBARINFOEX.left And $tPoint.X <= $tTITLEBARINFOEX.right And $tPoint.Y >= $tTITLEBARINFOEX.top And $tPoint.Y <= $tTITLEBARINFOEX.bottom Then Return $hWin EndIf Return 0 EndFunc ;==>GetWindow Latest version : 2025-02-01 07:01
    2 points
  4. ioa747

    OCR from a small area

    first of all i would like to thank @Danyfirex for this wonderful UWPOCR UDF that he offers us I noticed that when you perform OCR from a small area of the screen, it doesn't recognize it normally and can't read from it. and so I proceeded to these functions. Which work as I expected, However, I have no experience with GDIPlus. I post them, to share it with the community, and to get some hint, advice. In the example below I'm targeting the date on the bottom right of the taskbar, I have a 1920*1080 screen and 100% scale ; https://www.autoitscript.com/forum/topic/211521-ocr-from-a-small-area/?do=findComment&comment=1530475 ;~ #AutoIt3Wrapper_Run_Debug_Mode=Y #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> #include <WindowsConstants.au3> #include "UWPOCR.au3" ; * <- "https://www.autoitscript.com/forum/topic/207324-uwpocr-windows-platform-optical-character-recognition-api-implementation" _Example() ;-------------------------------------------------------------------------------------------------------------------------------- Func _Example() Local $sImageResult, $sOCRTextResult ; 1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; From my monitor capture the date of the tskbar = 1808, 1062, 1862, 1074 $sImageResult = _ScreenCapture(@ScriptDir & "\tmp_OCR_image.png", 1808, 1062, 1862, 1074) ConsoleWrite("$sImageResult=" & $sImageResult & @CRLF) ; reading text from $sImageResult $sOCRTextResult = _UWPOCR_GetText($sImageResult) ConsoleWrite("- 1) OCR Result=" & $sOCRTextResult & @CRLF) ShellExecuteWait($sImageResult) ; 2) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; capture the date and give a border with 20 pixels = 1808, 1062, 1862, 1074, 0, 20 $sImageResult = _ScreenCapture(@ScriptDir & "\tmp_OCR_image.png", 1808, 1062, 1862, 1074, 0, 20) ; reading text from $sImageResult $sOCRTextResult = _UWPOCR_GetText($sImageResult) ConsoleWrite("- 2) OCR Result=" & $sOCRTextResult & @CRLF) ShellExecuteWait($sImageResult) ; 3) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; capture the date, give a border with 20 pixels, and invert colors = 1808, 1062, 1862, 1074, 1, 20 $sImageResult = _ScreenCapture(@ScriptDir & "\tmp_OCR_image.png", 1808, 1062, 1862, 1074, 1, 20) ; reading text from $sImageResult $sOCRTextResult = _UWPOCR_GetText($sImageResult) ConsoleWrite("- 3) OCR Result=" & $sOCRTextResult & @CRLF) ShellExecuteWait($sImageResult) Sleep(500) ; 4) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; and the same from memory ConsoleWrite("Delete tmp_OCR_image=" & FileDelete($sImageResult) & @CRLF) $sOCRTextResult = _GetText(1808, 1062, 1862, 1074, 1, 20) ConsoleWrite("- 4) OCR Result=" & $sOCRTextResult & @CRLF) EndFunc ;==>_Example ; #FUNCTION# -------------------------------------------------------------------------------------------------------------------- ; Name...........: _ScreenCapture ; Description ...: Captures a region of the screen ; Syntax.........: _ScreenCapture($sFileName [, $iLeft = 0 [, $iTop = 0 [, $iRight = -1 [, $iBottom = -1 [, $iNegative = 0 [, $iBorder = 0 [, $dScale = 1 [, $iBrightness = 0 [, $iContrast = 0]]]]]]]]]) ; Parameters ....: $sFileName Full path and extension of the image file ; $iLeft [optional] X coordinate of the upper left corner of the rectangle ; $iTop [optional] Y coordinate of the upper left corner of the rectangle ; $iRight [optional] X coordinate of the lower right corner of the rectangle. If this is -1, the current screen width will be used ; $iBottom [optional] Y coordinate of the lower right corner of the rectangle. If this is -1, the current screen height will be used. ; $iNegative [optional] 1 = Negative color, 0 = Normal color ; $iBorder [optional] Draw a border araunt, The color is taken from first pixel ; $dScale [optional] Scale factor ; $iBrightness [optional] Integer in the range -255 through 255 that specifies the brightness level. ; $iContrast [optional] Integer in the range -100 through 100 that specifies the contrast level. ; Return value...: Success - Returns the full path of the image file (e.g., "C:\MyImages\captured.png") if the image is successfully captured, and saved to disk. ; Failure - Returns False if an error occurs during the capture or processing, and sets the @error flag to non-zero. ; @error - 1 Screen capture failed. ; - 2 Bitmap adjustment failed. ; - 3 Creating border bitmap failed. ; - 4 Image saving failed.aved. ; Author ........: ; Notes .........: ;-------------------------------------------------------------------------------------------------------------------------------- Func _ScreenCapture($sFileName, $iLeft = 0, $iTop = 0, $iRight = -1, $iBottom = -1, $iNegative = 0, $iBorder = 0, $dScale = 1, $iBrightness = 0, $iContrast = 0) Local $hHBitmap, $hBitmap, $hGDIPlusBitmap, $hImage, $hImageCtxt, $vRet, $iBmpW, $iBmpH, $iBorderColor Local Const $GDIP_ERROR = 0 ; error code _GDIPlus_Startup() $hHBitmap = _ScreenCapture_Capture("", $iLeft, $iTop, $iRight, $iBottom, False) If @error Then _GDIPlus_Shutdown() Return SetError(1, 0, False) EndIf Local $tSIZE = _WinAPI_GetBitmapDimension($hHBitmap) $iBmpW = $dScale * DllStructGetData($tSIZE, 'X') $iBmpH = $dScale * DllStructGetData($tSIZE, 'Y') ;Default Local $iIlluminant = 0, $iGammaR = 10000, $iGammaG = 10000, $iGammaB = 10000, $iBlack = 0, $iWhite = 10000, $iColorfulness = 0, $iTint = 0 Local $tAdj = 0 $tAdj = _WinAPI_CreateColorAdjustment($iNegative, $iIlluminant, $iGammaR, $iGammaG, $iGammaB, $iBlack, $iWhite, $iContrast, $iBrightness, $iColorfulness, $iTint) $hBitmap = _WinAPI_AdjustBitmap($hHBitmap, $iBmpW, $iBmpH, $HALFTONE, $tAdj) If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_Shutdown() Return SetError(2, 0, False) EndIf $hGDIPlusBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) _WinAPI_DeleteObject($hBitmap) If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_Shutdown() Return SetError(2, 0, False) EndIf ; Add Border If $iBorder > 0 Then $iBorderColor = _GDIPlus_BitmapGetPixel($hGDIPlusBitmap, 1, 1) ;get pixel color from 1,1 $hImage = _GDIPlus_BitmapCreateFromScan0($iBmpW + (2 * $iBorder), $iBmpH + (2 * $iBorder)) ;create an empty bitmap If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hGDIPlusBitmap) _GDIPlus_Shutdown() Return SetError(3, 0, False) EndIf $hImageCtxt = _GDIPlus_ImageGetGraphicsContext($hImage) ;get the graphics context of the bitmap If $hImageCtxt = $GDIP_ERROR Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hGDIPlusBitmap) _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() Return SetError(3, 0, False) EndIf _GDIPlus_GraphicsSetSmoothingMode($hImageCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsClear($hImageCtxt, $iBorderColor) ;clear bitmap with color white _GDIPlus_GraphicsDrawImage($hImageCtxt, $hGDIPlusBitmap, $iBorder, $iBorder) _GDIPlus_ImageDispose($hGDIPlusBitmap) Else $hImage = $hGDIPlusBitmap $hImageCtxt = $GDIP_ERROR ; to not free context EndIf $vRet = _GDIPlus_ImageSaveToFile($hImage, $sFileName) ;save bitmap to disk If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hImage) If $hImageCtxt <> $GDIP_ERROR Then _GDIPlus_GraphicsDispose($hImageCtxt) EndIf _GDIPlus_Shutdown() Return SetError(4, 0, False) EndIf If $vRet Then $vRet = $sFileName ; Cleanup resources _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hImage) If $hImageCtxt <> $GDIP_ERROR Then _GDIPlus_GraphicsDispose($hImageCtxt) EndIf _GDIPlus_Shutdown() Return $vRet EndFunc ;==>_ScreenCapture ; #FUNCTION# -------------------------------------------------------------------------------------------------------------------- ; Name...........: _GetText ; Description ...: reading text from a region of the screen ; Syntax.........: _GetText([$iLeft = 0 [, $iTop = 0 [, $iRight = -1 [, $iBottom = -1 [, $iNegative = 0 [, $iBorder = 0 [, $dScale = 1 [, $iBrightness = 0 [, $iContrast = 0 [, $sLanguageTagToUse = Default [, $bUseOcrLine = False]]]]]]]]]]]) ; Parameters ....: $iLeft [optional] X coordinate of the upper left corner of the rectangle ; $iTop [optional] Y coordinate of the upper left corner of the rectangle ; $iRight [optional] X coordinate of the lower right corner of the rectangle. If this is -1, the current screen width will be used ; $iBottom [optional] Y coordinate of the lower right corner of the rectangle. If this is -1, the current screen height will be used. ; $iNegative [optional] 1 = Negative color, 0 = Normal color ; $iBorder [optional] Draw a border araunt, The color is taken from first pixel ; $dScale [optional] Scale factor ; $iBrightness [optional] Integer in the range -255 through 255 that specifies the brightness level. ; $iContrast [optional] Integer in the range -100 through 100 that specifies the contrast level. ; $sLanguageTagToUse [optional] Gets the language being used for text recognition ; $bUseOcrLine [optional] Represents a single line of text recognized by the OCR engine and returned as part of the OcrResult. ; Return value...: Success - Returns the OCR text as a string. If no text is detected, the string may be empty "". ; Failure - Returns False if an error occurs during the capture or processing, and sets the @error flag to non-zero. ; @error - 1 Screen capture failed. ; - 2 Bitmap adjustment failed. ; - 3 Creating border bitmap failed. ; - 4 OCR recognition failed. ; Author ........: ; Notes .........: ;-------------------------------------------------------------------------------------------------------------------------------- Func _GetText($iLeft = 0, $iTop = 0, $iRight = -1, $iBottom = -1, $iNegative = 0, $iBorder = 0, $dScale = 1, $iBrightness = 0, $iContrast = 0, $sLanguageTagToUse = Default, $bUseOcrLine = False) Local $hHBitmap, $hBitmap, $hGDIPlusBitmap, $hImage, $hImageCtxt, $sOCRTextResult, $iBmpW, $iBmpH, $iBorderColor Local Const $GDIP_ERROR = 0 ; error code _GDIPlus_Startup() $hHBitmap = _ScreenCapture_Capture("", $iLeft, $iTop, $iRight, $iBottom, False) If @error Then _GDIPlus_Shutdown() Return SetError(1, 0, False) EndIf Local $tSIZE = _WinAPI_GetBitmapDimension($hHBitmap) $iBmpW = $dScale * DllStructGetData($tSIZE, 'X') $iBmpH = $dScale * DllStructGetData($tSIZE, 'Y') ;Default Local $iIlluminant = 0, $iGammaR = 10000, $iGammaG = 10000, $iGammaB = 10000, $iBlack = 0, $iWhite = 10000, $iColorfulness = 0, $iTint = 0 Local $tAdj = 0 $tAdj = _WinAPI_CreateColorAdjustment($iNegative, $iIlluminant, $iGammaR, $iGammaG, $iGammaB, $iBlack, $iWhite, $iContrast, $iBrightness, $iColorfulness, $iTint) $hBitmap = _WinAPI_AdjustBitmap($hHBitmap, $iBmpW, $iBmpH, $HALFTONE, $tAdj) If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_Shutdown() Return SetError(2, 0, False) EndIf $hGDIPlusBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) _WinAPI_DeleteObject($hBitmap) If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_Shutdown() Return SetError(2, 0, False) EndIf ; Add Border If $iBorder > 0 Then $iBorderColor = _GDIPlus_BitmapGetPixel($hGDIPlusBitmap, 1, 1) ;get pixel color from 1,1 $hImage = _GDIPlus_BitmapCreateFromScan0($iBmpW + (2 * $iBorder), $iBmpH + (2 * $iBorder)) ;create an empty bitmap If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hGDIPlusBitmap) _GDIPlus_Shutdown() Return SetError(3, 0, False) EndIf $hImageCtxt = _GDIPlus_ImageGetGraphicsContext($hImage) ;get the graphics context of the bitmap If $hImageCtxt = $GDIP_ERROR Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hGDIPlusBitmap) _GDIPlus_BitmapDispose($hImage) _GDIPlus_Shutdown() Return SetError(3, 0, False) EndIf _GDIPlus_GraphicsSetSmoothingMode($hImageCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY) _GDIPlus_GraphicsClear($hImageCtxt, $iBorderColor) ;clear bitmap with color white _GDIPlus_GraphicsDrawImage($hImageCtxt, $hGDIPlusBitmap, $iBorder, $iBorder) _GDIPlus_ImageDispose($hGDIPlusBitmap) Else $hImage = $hGDIPlusBitmap $hImageCtxt = $GDIP_ERROR ; to not free context EndIf $sOCRTextResult = _UWPOCR_GetText($hImage, $sLanguageTagToUse, $bUseOcrLine) If @error Then _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hImage) If $hImageCtxt <> $GDIP_ERROR Then _GDIPlus_GraphicsDispose($hImageCtxt) EndIf _GDIPlus_Shutdown() Return SetError(4, 0, False) EndIf ; Cleanup resources _WinAPI_DeleteObject($hHBitmap) _GDIPlus_BitmapDispose($hImage) If $hImageCtxt <> $GDIP_ERROR Then _GDIPlus_GraphicsDispose($hImageCtxt) EndIf _GDIPlus_Shutdown() Return $sOCRTextResult EndFunc ;==>_GetText ;-------------------------------------------------------------------------------------------------------------------------------- Thank you very much
    1 point
  5. I tested your code on Office 2003 (yes, yes, I still have it ). And it is working fine after removing your infinite While loop. Since your doc has 12 paragraphs, your For loop cannot exceed this limit (in your script you have put 10...)
    1 point
  6. @argumentum thanks but I tried Office 2007, and even after 4 months my fingers didn't know where anything is. So I went back to 2003.
    1 point
  7. If Not HotKeySet("#^t", "Cmd_WinTogleOnTop") Then Exit 102 ; Ctrl + Win + T" & @CRLF I had to use Y because T didn't work.
    1 point
  8. thanks @ioa747 very good example for me to learn more. thanks for everyone's effort.
    1 point
  9. Final update for this issue. Success! The key was to use an instance of a browser window (in my case FireFox) that was launched by the geckodriver.exe and NOT try to "attach" to an already running instance. After running the FireFox instance I simply used the "_WD_GetElementById" and "_WD_ElementAction" of the WebDriver UDF to click the appropriate divs (wrapped in a tags).
    1 point
  10. In case it helps OP, I use frequently without issue an old portable freeware program (2012) named "Topmost Toggle version 1.9.2.0" still found at Softpedia, here is the link . The review stipulates Win7 so I got no idea if it works on Win 10 / 11 (I guess it should work, you'll have to test) When I got any window that I want to stay on top for a while, then Ctrl + right click on the window header keeps it on top. If I don't want it on top anymore (but still open), than another Ctrl + right click on its header toggles its state. As you seem to need it accessible for any active window, then you should run "Toggle Topmost" and keep it constantly in Systray, so Ctrl + right click will be constantly checked on any window header. Hope it helps.
    1 point
  11. Hello guys. I recently saw some posts that Windows 10 provides OCR API. So I decided to create a UDF. What's UWPOCR? UWPOCR UDF is a simple library to use Universal Windows Platform Optical character recognition API. Features. Get Text From Image File. Get Text From GDI+ Bitmap. Easy to use. Usage: #include "..\UWPOCR.au3" _Example() Func _Example() Local $sOCRTextResult = _UWPOCR_GetText(FileOpenDialog("Select Image", @ScriptDir & "\", "Images (*.jpg;*.bmp;*.png;*.tif;*.gif)")) MsgBox(0,"",$sOCRTextResult) EndFunc Get Words Rect(Example): More examples here. Check UWPOCR UDF on GitHub. Saludos
    1 point
×
×
  • Create New...