myspacee Posted June 11, 2008 Share Posted June 11, 2008 hello to all,search for a long time to extract code from wonderfull CaptureIt without result. Its 'Selection capture' is exactly what i need to help my user to archive, after cut, tons of images.want this resizable window to build small tool to snapshot portion of images that we have....can anyone can give me an example of this type of selection window ?thank you for any help,m. Link to comment Share on other sites More sharing options...
Kiti Posted June 11, 2008 Share Posted June 11, 2008 (edited) Try this: #include <GDIPlus.au3> #include <ScreenCapture.au3> Opt("MustDeclareVars", 1) Global $hBitmap, $hImage Global $sString=" Created with AutoIt " ; Initialize GDI+ library _GDIPlus_StartUp() ; Capture screen $hBitmap = _ScreenCapture_Capture(@MyDocumentsDir & '\AutoItImage.bmp') ; Show image Run("MSPaint.exe " & '"' & @MyDocumentsDir & '\AutoItImage.bmp"') Tell me if it was of any help You can also specify the area of the screen you want to capture. And if you just want to take a small piece of that script, just search for "selection" in the source file Edited June 11, 2008 by Kiti Think outside the box.My Cool Lego Technic Website -- see walking bipeds and much more!My YouTube account -- see cool physics experimentsMy scripts:Minesweeper bot: Solves advanced level in 1 second (no registry edit), very improved GUI, 4 solving stylesCan't go to the toilet because of your kids closing your unsaved important work? - Make a specific window uncloseableCock Shooter Bot -- 30 headshots out of 30 Link to comment Share on other sites More sharing options...
Malkey Posted June 11, 2008 Share Posted June 11, 2008 From http://www.autoitscript.com/forum/index.ph...st&p=529021I extracted the followingexpandcollapse popup#include <WinAPI.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <String.au3> #include <misc.au3> #include <ScreenCapture.au3> ;========== Instructions ==== ;Press Spacebar then press Ecs key to exit ; Press Ctrl key - Makes Bitmap of the window, sub-window or desktop the mouse is over. If ; the mouse is over the transparent resizable rectangle, the area under ; the rectangle is used to make the bitmap. ; ========> End of Instructions === Const $DIB_RGB_COLORS = 0 Global $GUI, $CopyWin, $PixelArray, $CopyWin, $e, $d, $PixelsReady = 0, $Start = 0 Global Const $WM_LBUTTONDOWN = 0x0201 ; Drag Window 1 of 3 addin Opt("GUIResizeMode", 1) Opt("WinTitleMatchMode", 2) $GUI = GUICreate("Template", 18, 18, -1, -1, BitOR($WS_POPUP, $WS_SIZEBOX, $WS_CLIPCHILDREN), $WS_EX_TOPMOST) WinSetTrans("Template", "", 100) GUIRegisterMsg($WM_LBUTTONDOWN, "_WinMove") ; Drag Window 2 of 3 addin While Not _IsPressed("1B") ;Esc to Exit If ((_IsPressed("12") And _IsPressed("01")) Or ($Start = 0)) Then ;Alt + Left Mouse Button - Start rectangle $Start = 1 GUISetState(@SW_SHOW, $GUI) While (Not _IsPressed("20")) ; Spacebar $CopyWin = WinGetPos("Template") If _IsPressed("11") Then Save2BmpShift() ; Ctrl key Sleep(10) WEnd EndIf If _IsPressed("11") Then Save2BmpShift() ; Shift key Makes bitmap Sleep(10) WEnd Func Save2BmpShift() Local $aMPos, $GuisInfo $aMPos = MouseGetPos() $GuisInfo = _WinInfoFromPoint($aMPos[0], $aMPos[1]) If $GuisInfo[0] = "Template" Then $apos = WinGetPos("Template") _ScreenCapture_Capture("temp.bmp", $apos[0], $apos[1], $apos[0] + $apos[2], $apos[1] + $apos[3], False) Else _GDIPlus_Startup() If $GuisInfo[1] = $GuisInfo[3] Or $GuisInfo[3] = "Shell_TrayWnd" Then $hWnd = $GuisInfo[2] $apos = WinGetPos("[ACTIVE]") $tPoint = DllStructCreate("int X;int Y") DllStructSetData($tPoint, "X", $apos[0]) DllStructSetData($tPoint, "Y", $apos[1]) DllCall("User32.dll", "int", "ScreenToClient", "hwnd", $hWnd, "ptr", DllStructGetPtr($tPoint)) ;_WinAPI_ScreenToClient($hWnd, $tPoint) $x = DllStructGetData($tPoint, "X") $y = DllStructGetData($tPoint, "Y") $Width = $apos[2] $Height = $apos[3] Else $hWnd = $GuisInfo[2] $pos = ControlGetPos($GuisInfo[4], "", _WinAPI_GetWindowLong($GuisInfo[2], 0xFFFFFFF4)) $x = 0 $y = 0 $Width = $pos[2] $Height = $pos[3] EndIf $hWnd = $GuisInfo[2] $hDC = _WinAPI_GetDC($hWnd) $memDC = _WinAPI_CreateCompatibleDC($hDC) $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height) _WinAPI_SelectObject($memDC, $memBmp) ;~ Func _WinAPI_BitBlt($hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $iROP) _WinAPI_BitBlt($memDC, 0, 0, $Width, $Height, $hDC, $x, $y, $SRCCOPY) $hImage = _GDIPlus_BitmapCreateFromHBITMAP($memBmp) _GDIPlus_ImageSaveToFile($hImage, 'temp.bmp') _GDIPlus_ImageDispose($hImage) _WinAPI_ReleaseDC($hWnd, $hDC) _WinAPI_DeleteDC($memDC) _WinAPI_DeleteObject($memBmp) _GDIPlus_Shutdown() EndIf ShellExecute('temp.bmp') EndFunc ;==>Save2BmpShift ;Return : $GuisInfo[0] = Window Text ; $GuisInfo[1] = Class Name ; $GuisInfo[2] = Handle of windowWnd ; $GuisInfo[3] = Owner Class Name ; $GuisInfo[4] = Handle of Owner Window ; A modified Siao Function Func _WinInfoFromPoint($nX, $nY) Local $tStrBuff, $pStrBuff, $aRet, $hWnd, $Info[5] $tStrBuff = DllStructCreate("char[150]") $pStrBuff = DllStructGetPtr($tStrBuff) $aRet = DllCall("user32.dll", "hwnd", "WindowFromPoint", "uint", $nX, "uint", $nY) $Info[2] = $aRet[0] ;$hWnd $aRet = DllCall("user32.dll", "int", "GetClassName", "hwnd", $Info[2], "ptr", $pStrBuff, "int", 100) $Info[1] = DllStructGetData($tStrBuff, 1) ; ClassName DllStructSetData($tStrBuff, 1, "") DllCall("user32.dll", "int", "GetWindowText", "hwnd", $Info[2], "ptr", $pStrBuff, "int", 100) $Info[0] = DllStructGetData($tStrBuff, 1) ; Window Text DllStructSetData($tStrBuff, 1, "") $aRet = DllCall("user32.dll", "hwnd", "GetAncestor", "hwnd", $Info[2], "uint", 2) ;$GA_ROOT = 2 $Info[4] = $aRet[0] ; Handle of Owner Window $aRet = DllCall("user32.dll", "int", "GetClassName", "hwnd", $Info[4], "ptr", $pStrBuff, "int", 100) $Info[3] = DllStructGetData($tStrBuff, 1) ;Owner ClassName DllStructSetData($tStrBuff, 1, "") ;ConsoleWrite("text= " &$Info[0] & @CRLF) Return $Info EndFunc ;==>_WinInfoFromPoint ; Drag Window 3 of 3 addin Func _WinMove($hWnd, $Command, $wParam, $lParam) If BitAND(WinGetState($hWnd), 32) Then Return $GUI_RUNDEFMSG ;DllCall("user32.dll", "long", "SendMessage", "hwnd", $HWnd, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0) DllCall("user32.dll", "int", "SendMessage", "hWnd", $hWnd, "int", $WM_NCLBUTTONDOWN, "int", $HTCAPTION, "int", 0) Return 1 EndFunc ;==>_WinMoveRead instructions near top of scriptYou may be able to adapt the above script to suit your needs. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now