Jump to content

Search the Community

Showing results for tags 'screen_capture'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Categories

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

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 2 results

  1. Snip is a CLI screen-capture tool. See below for the command-line usage. The compiled executable is HERE -- it comes bundled with my TSK task viewer (q.v.). A cool feature of Snip is that it has a "burst" mode for taking multiple, rapid-fire screenshots, great for capturing video stills. Usage: SNIP.exe: Screen-Capture Utility [CLD rev.2021-03-26] Usage: SNIP [["]window_title["]|["]sub$tring["]|PID|hWnd] [/D d:\path] [/MAX] [/Q] [/R n] [/I m] default = current window default PNG location = C:\Users\CLD\Screenshots Options (relaxed order): /D [[d:]\path] PNG location: current directory [alternate directory] /MAX Maximize target window before capture /Q Quiet -- do not display screenshot /R n Repeat screenshot n times (burst) [implies /Q] default n = 5 /I m Interval between repeats, in milliseconds [implies /R] default = 100 ms (intervals are approximate) SNIP /?|/H Show this Help Source code: #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=snip.exe #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Change2CUI=n #AutoIt3Wrapper_Run_Au3Stripper=y #AutoIt3Wrapper_AU3Check_Parameters=-w 3 -w 4 -w 5 -w 6 -d #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ------------------------------------------ Screen-Capture Utility [CLD rev.2021-03-26] Usage ----- Snip [window_title] [d:\path] .... Default window_title is current window Default d:\path is %HOMEDIR%%HOMEPATH%\Screenshots Image is saved in .PNG format Image (.png) is saved to %HOMEDIR%%HOMEPATH%\Screenshots ------------------------------------------ #ce #include <MsgBoxConstants.au3> #include <Misc.au3> #include <ScreenCapture.au3> #include <StringConstants.au3> AutoItSetOption("WinTitleMatchMode", -2) Global $sCMline = $CmdLineRaw If StringInStr($sCMline, "/?") Or StringInStr($sCMline, "/h") Then _ Exit _ShowHelp() Global $sCW = WinGetTitle("[active]") Global $sWn = "[active]" If $CmdLine[0] > 0 Then If StringInStr($CmdLine[1], "/") <> 1 Then $sWn = $CmdLine[1] EndIf If StringIsDigit($sWn) Then Global $aWinList = WinList() Global $hTmp = _GetHwndFromPID($sWn) If $hTmp Then $sWn = $hTmp EndIf If StringInStr($sWn, "0x") = 1 Then If StringIsXDigit(StringTrimLeft($sWn, 2)) Then $sWn = HWnd($sWn) EndIf If Not WinExists($sWn) Then _ Exit MsgBox(0, @ScriptName, "No window title with """ & $sWn & """") Global $sProgDir = @UserProfileDir & "\Screenshots" If StringInStr($sCMline, "/d") Then $sProgDir = _GetArgValue($sCMline, "/d") If Not $sProgDir Then $sProgDir = "." EndIf If StringRight($sProgDir, 1) = "\" Then $sProgDir = StringTrimRight($sProgDir, 1) If Not FileExists($sProgDir) Then DirCreate($sProgDir) Global $iIter = 1, $iIntv = 100 If StringInStr($sCMline, "/i") Or StringInStr($sCMline, "/r") Then $iIter = _GetArgValue($sCMline, "/r") If Not $iIter Then $iIter = 5 $iIntv = _GetArgValue($sCMline, "/i") EndIf If Not StringIsDigit($iIter) Then $iIter = 1 If Not StringIsDigit($iIntv) Then $iIntv = 100 Global $iX = 0 #cs $WIN_STATE_EXISTS (1) = Window exists $WIN_STATE_VISIBLE (2) = Window is visible $WIN_STATE_ENABLED (4) = Window is enabled $WIN_STATE_ACTIVE (8) = Window is active $WIN_STATE_MINIMIZED (16) = Window is minimized $WIN_STATE_MAXIMIZED (32) = Window is maximized #ce Global $hWnd = WinGetHandle($sWn) Global $iWMn = BitAND(WinGetState($hWnd), 16) Global $iWMx = BitAND(WinGetState($hWnd), 32) WinActivate($hWnd) WinWaitActive($hWnd, "", 10) If StringInStr($sCMline, "/max") Then WinSetState($hWnd, "", @SW_MAXIMIZE) Global $sFn For $i = 1 To $iIter $sFn = $sProgDir & "\Snip-" & @YEAR & @MON & @MDAY & "T" & @HOUR & @MIN & @SEC If $iIter > 1 Then $sFn &= StringFormat("%03u", @MSEC) $sFn &= ".png" _SnipIt($sFn) Sleep($iIntv) Next If $iWMx <> 32 Then WinSetState($hWnd, "", @SW_RESTORE) If $iWMn = 16 Then WinSetState($hWnd, "", @SW_MINIMIZE) If StringInStr($sCMline, "/i") + StringInStr($sCMline, "/q") + StringInStr($sCMline, "/r") = 0 Then ShellExecute("nircmdc.exe", "clipboard copyimage " & $sFn, _ @ScriptDir, "Open", @SW_HIDE) ShellExecute($sFn) Else WinActivate($sCW) WinSetState("[active]", "", @SW_SHOW) EndIf Exit ; Function definitions ; -------------------- Func _SnipIt($sFname) _ScreenCapture_CaptureWnd($sFname, $hWnd) Local $t = TimerInit() While Not FileExists($sFn) Sleep(20) If TimerDiff($t) > 10000 Then _ Exit MsgBox(0, @ScriptName, StringTrimRight(@ScriptName, 4) & " timed out") WEnd EndFunc ;==>SnipIt Func _GetArgValue($sCmL, $sArg) ; Get value (if any) following /SWitch (arg) Local $sVal = "", $sSep = StringLeft($sArg, 1) Local $iLft = StringLen($sArg) - 1 + StringInStr($sCmL, $sArg) If $iLft > StringLen($sArg) - 1 Then $sVal = StringTrimLeft($sCmL, $iLft) If StringInStr($sVal, $sSep) Then $sVal = _ StringLeft($sVal, StringInStr($sVal, $sSep) - 1) If $sVal Then $sVal = _ StringStripWS($sVal, 3) Return $sVal EndFunc ;==>_GetArgValue Func _GetHwndFromPID($PID) Local $hWnd = 0 Local $stPID = DllStructCreate("int") For $i = 1 To $aWinList[0][0] If $aWinList[$i][0] <> "" Then DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $aWinList[$i][1], "ptr", DllStructGetPtr($stPID)) If DllStructGetData($stPID, 1) = $PID Then Return $aWinList[$i][1] EndIf Next Return $hWnd EndFunc ;==>_GetHwndFromPID Func _ShowHelp() Local $sTxt = StringUpper(StringTrimRight(@ScriptName, 4)) & StringLower(StringRight(@ScriptName, 4)) & ": Screen-Capture Utility [CLD rev.2021-03-26]" & @CRLF & @CRLF & "Usage:" & @CRLF & @CRLF & StringUpper(StringTrimRight(@ScriptName, 4)) & " [[""]window_title[""]|[""]sub$tring[""]|PID|hWnd] [/D d:\path] [/MAX] [/Q] [/R n] [/I m]" & @CRLF & " default = current window" & @CRLF & " default PNG location = " & @UserProfileDir & "\Screenshots" & @CRLF & "Options (relaxed order):" & @CRLF & "/D [[d:]\path] PNG location: current directory [alternate directory]" & @CRLF & "/MAX Maximize target window before capture" & @CRLF & "/Q Quiet -- do not display screenshot" & @CRLF & "/R n Repeat screenshot n times (burst) [implies /Q]" & @CRLF & " default n = 5" & @CRLF & "/I m Interval between repeats, in milliseconds [implies /R]" & @CRLF & " default = 100 ms (intervals are approximate)" & @CRLF & @CRLF & StringUpper(StringTrimRight(@ScriptName, 4)) & " /?|/H Show this Help" _SplashEsc($sTxt, 1200, 600) EndFunc ;==>_ShowHelp Func _SplashEsc($sTxt, $iWid = 800, $iHgt = 400) ; #include <Misc.au3> Local $hDLL = DLLOpen("user32.dll") SplashTextOn(@ScriptName & " | Esc quits", $sTxt, $iWid, $iHgt, -1, -1, 54, "Cascadia Mono Regular", 14) While 1 If _IsPressed("1B", $hDLL) Then SplashOff() ExitLoop EndIf WEnd DLLClose($hDLL) Return EndFunc ;==>_SplashEsc
  2. Morning all, I run the following script in order to capture & save select areas of the screen via the command prompt i.e. via a series of command line inputs once the program is compiled as an executable. Include <ScreenCapture.au3> ;Local $dir =$CmdLine[6] Local $title = $CmdLine[1] Local $left = $CmdLine[2] Local $top = $CmdLine[3] Local $right = $CmdLine[4] Local $bottom = $CmdLine[5] _ScreenCapture_Capture(@ScriptDir & $title, $left, $top, $right, $bottom) If Not (@error == 0) Then ConsoleWrite("failed") Else ConsoleWrite("done") EndIf I am struggling to understand how the Screen_Capture function in AutoIt really works. For example, the function works very well when I return the following line into my command prompt: However the function does not work for: The application appears to work for a very select number of pixel combinations only. In short, I want to know why this is the case, am I missing something important? Moreover, is the Screen_Capture function set up such that it will capture the image in the format specified, or merely convert e.g. jpeg into the desired format as specified by .png or .bmp extension for example. What is the native file type of the function and if conversion does take place, what is the maximum resolution possible via this function? I want to use Screen_Capture as it allows for pixel selection, which will render my work more efficient, I do not want to revert to whole-screen capture solutions. Thanks in advance, Joseph
×
×
  • Create New...