Forum ViSiBLe

Bem Vindo
Se registrares neste fórum, podes fazer parte da nossa comunidade.Prezamos aqui pela participação ACTIVA de cada membro.


Atençao: Nao precisa Confirma a sua conta no hotmail (Basta Registrar e Começar a participar do forum.)

Forum ViSiBLe

Bem Vindo
Se registrares neste fórum, podes fazer parte da nossa comunidade.Prezamos aqui pela participação ACTIVA de cada membro.


Atençao: Nao precisa Confirma a sua conta no hotmail (Basta Registrar e Começar a participar do forum.)

WWW.FORUMVISIBLE.COM

Temos vagas na STAFF !! Clique Aqui!

Últimos assuntos

» Bot Openkore Configurado 06/12/2017 + Tutorial
 	 Capturador de Screen shoot  Empty12/19/2017, 18:48 por MrViSiBLe

» MU LIVE SEASON 2 | INAUGURA DOMINGO 17/09
 	 Capturador de Screen shoot  Empty9/2/2017, 13:51 por MrViSiBLe

» Sorteio Perfumes - Forum ViSiBLe
 	 Capturador de Screen shoot  Empty8/25/2017, 08:27 por Convidado

» Novas Vagas Para Staff
 	 Capturador de Screen shoot  Empty8/24/2017, 15:20 por MrViSiBLe

» CSGO [Internal/External] Multi-Hack AIMBOT + TRIGGERBOT + ESP + BHOP
 	 Capturador de Screen shoot  Empty8/22/2017, 03:04 por MrViSiBLe

» REB00T 31/07/2017
 	 Capturador de Screen shoot  Empty8/22/2017, 03:01 por MrViSiBLe

» [CS:GO] HENTAIWARE 19/08/2017 | LEGIT | RAGE | ESP | GLOVES | FACEIT |
 	 Capturador de Screen shoot  Empty8/22/2017, 02:58 por MrViSiBLe

» DeviceCheats CS:GO Gratuito 31/07/2017
 	 Capturador de Screen shoot  Empty8/22/2017, 02:56 por MrViSiBLe

» [CS:GO] External - Glow ESP | Triggerbot | RCS | BunnyHop | Noflash
 	 Capturador de Screen shoot  Empty8/22/2017, 02:53 por MrViSiBLe

» [CS:GO] GLOW ESP 21/08/2017
 	 Capturador de Screen shoot  Empty8/22/2017, 02:49 por MrViSiBLe


    Capturador de Screen shoot

    MrViSiBLe
    MrViSiBLe
    Administrador
    Administrador


    Número de Mensagens : 3779
    Idade : 31
    Localização : Cuiaba
    Agradecimentos Agradecimentos : 864
    Data de inscrição : 10/12/2008

     	 Capturador de Screen shoot  Empty Capturador de Screen shoot

    Mensagem por MrViSiBLe 7/20/2010, 22:06

    achei um code tipo um capturador de screen....
    voce escolhe o metodo tipo a janela a tela toda.
    ai vc aperta ativar e print screen ou Prt Scr q vai abrir o paint com a imagem....
    bom ta aki o code e tbm tem o download do code exe pt.

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=camera.ico
    #AutoIt3Wrapper_outfile=Capturador_nocomp.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseUpx=y
    #AutoIt3Wrapper_Res_Comment=Software gratuito y email-ware: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
    #AutoIt3Wrapper_Res_Description=Capturador de pantalla personalizable
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=XimorroSoft 2009
    #AutoIt3Wrapper_Res_Language=1034
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include


    ;Opt("MustDeclareVars", 1) ;Lo quitamos para compilar
    Opt("GUICloseOnESC", 0)

    Global $WS_EX_COMPOSITED = 0x2000000 ;Un estilo que curiosamente no está en WindowsConstants.au3 ni otro parecido

    ; Constantes para cursores
    Global Const $IDC_ARROW = 32512
    Global Const $OCR_NORMAL = 32512
    Global Const $OCR_CROSS = 32515
    Global Const $OCR_APPSTARTING = 32650
    Global Const $OCR_HAND = 32649
    Global Const $OCR_IBEAM = 32513
    Global Const $OCR_NO = 32648
    Global Const $OCR_SIZEALL = 32646
    Global Const $OCR_SIZENESW = 32643
    Global Const $OCR_SIZENS = 32645
    Global Const $OCR_SIZENWSE = 32642
    Global Const $OCR_SIZEWE = 32644
    Global Const $OCR_UP = 32516
    Global Const $OCR_WAIT = 32514
    ; Fin constantes cursores

    ; Varibles para controlar el rectángulo en los métodos de captura de objeto o de rectángulo marcado por usuario.
    ;Es necesario hacerlas globales para poder utilizarlas en el evento capturado $WM_WINDOWPOSCHANGED, así como en las
    ;funciones que crean el agujero, pues ahí no podemos pasarlas como parámetros
    Global $hCtrlOld, $recAncho = 5, $hRect_GUI

    ; Mensajes descriptivos de los modos de captura
    Local $msgDesactivado = @LF & "Esperando activación"
    Local $msgRectan = "Pulse y luego marque el rectángulo arrastrando con el ratón"
    Local $msgObjeto = "Ponga el cursor" & @LF & "sobre el objeto y" & @LF & "pulse " & @LF & "( cancela )"
    Local $msgVentana = @LF & "Active ventana y" & @LF & "pulse "
    Local $msgPantalla = @LF & "Disponga entorno y pulse "


    ;Versión de S.O., porque algunas cosas son diferentes en XP o Vista (o superiores) con Aero, por ejemplo en
    ;el modo recuadro el zoom en Aero puede ver GUIs con transparencia, XP no. En Aero es más suave hacer el
    ;zoom y luego mover el GUI, en XP al revés. Cuando la función da error devuelve FALSE (además del error),
    ;es decir, es equivalente a "no hay Aero"
    Global $MODO_XP = Not _IsAeroEnable() ;(@OSVersion = "WIN_XP" Or @OSVersion = "WIN_2000")


    ;Formulario guardado en Koda en gui_principal.kxf
    Local $GUI_Principal = GUICreate("Capturador", 359, 135)
    Local $lblMail = GUICtrlCreateLabel("", 5, 120, 255, 17) ;Para poder pinchar dejando lblLicencia deshabilitada
    GUICtrlSetCursor($lblMail, 0)
    Local $lblLicencia = GUICtrlCreateLabel("Emailware XimorroSoft 2009 (ximo.soft@yahoo.es)", 5, 120, 270, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Serif")
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $lblMarco = GUICtrlCreateLabel("", 5, 44, 200, 70, $SS_SUNKEN)
    GUICtrlSetState(-1, $GUI_DISABLE) ; Si no captura eventos de ratón aunque no haga nada y no pasan a los botones
    Local $lblMarco2 = GUICtrlCreateLabel("", 213, 30, 139, 68, $SS_ETCHEDFRAME)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $lblMetodo = GUICtrlCreateLabel("Método:", 10, 16, 43, 17)
    Local $cbxMetodo = GUICtrlCreateCombo("", 53, 12, 151, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Rectángulo|Objeto|Interior ventana|Ventana|Toda la pantalla", "Rectángulo")
    Local $btnCapturar = GUICtrlCreateCheckBox("&Activar", 9, 54, 74, 50, $BS_PUSHLIKE) ; Aspecto de botón bi-estado
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") ; Negrita
    Local $lblActiv = GUICtrlCreateLabel($msgDesactivado, 86, 51, 112, 55, BitOR($SS_CENTER,$WS_BORDER))
    GUICtrlSetFont(-1, 7, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $chkCursor = GUICtrlCreateCheckbox("&Capturar cursor", 220, 8, 97, 17)
    Local $chkPortapapeles = GUICtrlCreateCheckbox("Copiar en &Portapapeles", 220, 35, 129, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Local $chkPaint = GUICtrlCreateCheckbox("Abrir en &MSPaint", 242, 53, 105, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Local $chkPNG = GUICtrlCreateCheckbox("&Guardar PNG", 220, 75, 97, 17)
    Local $btnSalir = GUICtrlCreateButton("&Salir", 284, 104, 67, 25)
    WinSetTrans($GUI_Principal, "", 0)
    GUISetState(@SW_SHOW)
    _AnimTrans($GUI_Principal, 1, 255)

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $btnSalir
    _AnimTrans($GUI_Principal, 255, 0)
    Exit

    Case $lblMail
    ;Abrimos la aplicación de correo por defecto
    Local $prev = Opt("ExpandEnvStrings", 1)
    Local $var = RegRead("HKCR\mailto\shell\open\command", "")
    SplashTextOn("Capturador", "Abriendo correo...",170,80,-1,-1,35,"",9.5,800)
    Run(StringReplace($var, "%1", "mailto: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]?subject=Capturador" & _
    "&body====
    Escribe aquí tus comentarios y sugerencias.
    " & _
    "Por favor indica desde dónde escribes (para saber cuánto ha viajado el programa)
    " & _
    "¡Gracias!
    Atentamente, XimorroSoft.
    ==="))
    Local $err = @error
    Opt("ExpandEnvStrings", $prev)
    Sleep(1000)
    SplashOff()
    If $err Then
    MsgBox(48 8192, "Capturador", "Error abriendo mail." & @LF & "Códido de error de Windows: " & $err)
    EndIf

    Case $btnCapturar
    If _chkIsChecked($btnCapturar) Then
    _CapturaActivada()
    Else
    _CapturaDesactivada()
    EndIf

    ; Copiar a portapapeles y guardar en PNG no deben estar desactivados a la vez, es casi como un
    ; RadioButton, pero no del todo porque pueden estar los dos activados simultáneamente
    Case $chkPortapapeles
    If NOT (_chkIsChecked($chkPortapapeles) OR _chkIsChecked($chkPNG)) Then
    GUICtrlSetState($chkPortapapeles, $GUI_CHECKED)
    EndIf
    If _chkIsChecked($chkPortapapeles) Then
    GUICtrlSetState($chkPaint, $GUI_ENABLE)
    Else
    GUICtrlSetState($chkPaint, $GUI_DISABLE)
    EndIf
    Case $chkPNG
    If NOT (_chkIsChecked($chkPortapapeles) OR _chkIsChecked($chkPNG)) Then
    GUICtrlSetState($chkPNG, $GUI_CHECKED)
    EndIf
    EndSwitch
    WEnd

    Func _CapturaActivada()
    GUICtrlSetData($btnCapturar, "Des&activar")
    GUICtrlSetState($cbxMetodo, $GUI_DISABLE)
    GUICtrlSetState($lblActiv, $GUI_ENABLE)
    Switch GUICtrlRead($cbxMetodo)
    Case "Rectángulo"
    GUICtrlSetData($lblActiv, $msgRectan)
    HotKeySet("{PRINTSCREEN}", "_CapturaRectan")
    Case "Objeto"
    GUICtrlSetData($lblActiv, $msgObjeto)
    _CapturaObjeto()
    Case "Interior ventana"
    GUICtrlSetData($lblActiv, $msgVentana)
    HotKeySet("{PRINTSCREEN}", "_CapturaClienteVentana")
    Case "Ventana"
    GUICtrlSetData($lblActiv, $msgVentana)
    HotKeySet("{PRINTSCREEN}", "_CapturaVentana")
    Case "Toda la pantalla"
    GUICtrlSetData($lblActiv, $msgPantalla)
    HotKeySet("{PRINTSCREEN}", "_CapturaPantalla")
    Case Else
    MsgBox(48, "Operación no realizable", "Método '" & GUICtrlRead($cbxMetodo) & "' no implementado.")
    _CapturaDesactivada()
    EndSwitch
    EndFunc

    ; Para mantener el mismo modo después de una captura
    Func _CapturaReactivada()
    Switch GUICtrlRead($cbxMetodo)
    Case "Rectángulo"
    HotKeySet("{PRINTSCREEN}", "_CapturaRectan")
    Case "Objeto"
    GUICtrlSetData($lblActiv, $msgObjeto)
    _CapturaObjeto()
    Case "Interior ventana"
    HotKeySet("{PRINTSCREEN}", "_CapturaClienteVentana")
    Case "Ventana"
    HotKeySet("{PRINTSCREEN}", "_CapturaVentana")
    Case "Toda la pantalla"
    HotKeySet("{PRINTSCREEN}", "_CapturaPantalla")
    EndSwitch
    EndFunc

    Func _CapturaDesactivada()
    GUICtrlSetState($cbxMetodo, $GUI_ENABLE)
    GUICtrlSetData($lblActiv, $msgDesactivado)
    GUICtrlSetState($lblActiv, $GUI_DISABLE)
    GUICtrlSetData($btnCapturar, "&Activar")
    GUICtrlSetState($btnCapturar, $GUI_UNCHECKED) ; Por si no se ha desactivado desde el botón
    HotKeySet("{PRINTSCREEN}") ; Devolvemos el control de la tecla a Windows
    EndFunc

    Func _CapturaRectan()
    Local $iX1, $iY1, $iX2, $iY2

    HotKeySet("{PRINTSCREEN}", "_Dummy") ; Para evitar llamadas recursivas y evitar el ScreenCopy de Windows
    if _Marca_Rectan($iX1, $iY1, $iX2, $iY2) then
    ; Capturamos imagen y copiamos al portapapeles
    Local $concursor = _chkIsChecked($chkCursor)
    Local $Hbit = _ScreenCapture_Capture("", $iX1, $iY1, $iX2, $iY2, $concursor)
    _ProcesaCaptura($Hbit)
    _CapturaReactivada()
    Else
    _CapturaReactivada()
    EndIf
    EndFunc

    Func _CapturaObjeto()
    Local $aceptado = True
    $hCtrlOld = -1

    HotKeySet("{PRINTSCREEN}", "_Dummy") ; Para evitar el ScreenCopy de Windows

    ; Deshabilitamos controles que no queremos activos, pues el usuario aún puede interactuar con el GUI
    GUICtrlSetState($btnSalir, $GUI_DISABLE)

    ; Rectángulo, es un GUI con un agujero en medio para "desrellenar" el rectángulo formado por su fondo
    $hRect_GUI = GUICreate("", 0, 0, 10, 10, $WS_POPUP, BitOr($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW))
    GUISetBkColor(0x00FF00)
    WinSetTrans($hRect_GUI, "", 200)
    _RecuadraObjeto() ; Colocamos bien el rectángulo antes de mostrarlo la primera vez
    GUISetState(@SW_SHOWNOACTIVATE, $hRect_GUI)

    ; Para poder recuadrar mientras se mueve o redimensiona una ventana reseteo $hCtrlOld en el bucle principal
    ; cuando se presiona el ratón, pero esto no funciona cuando la ventana afectada es de nuestro propio GUI, pues
    ; en ese caso el script se detiene; en este caso lo que hago es capturar el mensaje del sistema WM_WINDOWPOSCHANGED.
    GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED") ; Para poder recuadrar cuando se mueva nuestro GUI
    Local $UserDLL = DllOpen("user32.dll")
    While (Not _IsPressed("2C", $UserDLL)) AND $aceptado ; Hasta que se pulse o se cancele con
    If _IsPressed("1B", $UserDLL) Or Not _chkIsChecked($btnCapturar) Then ; Escape
    $aceptado = False
    ExitLoop
    EndIf
    Sleep(30)
    _RecuadraObjeto()
    If _IsPressed(1, $UserDLL) Then
    $hCtrlOld = -1
    EndIf
    WEnd
    ; Realizamos limpieza
    DllClose($UserDLL)
    GUIRegisterMsg($WM_WINDOWPOSCHANGED, "") ; Liberamos captura de evento
    GUIDelete($hRect_GUI)

    If $aceptado Then
    ; Tomamos extensión de la última ventana, mejor no usamos $hCtrlOld por si casualmente está a -1
    Local $mPos = _WinAPI_GetMousePos()
    Local $posObj = WinGetPos(_WinAPI_WindowFromPoint($mPos))
    ; Traducimos ancho y alto a coordenadas
    $posObj[2] = $posObj[0] $posObj[2]
    $posObj[3] = $posObj[1] $posObj[3]
    Sleep(100)

    Local $concursor = _chkIsChecked($chkCursor)
    Local $Hbit = _ScreenCapture_Capture("", $posObj[0], $posObj[1], $posObj[2], $posObj[3], $concursor)
    GUICtrlSetState($btnSalir, $GUI_ENABLE)
    _CapturaDesactivada()
    _ProcesaCaptura($Hbit)
    Else
    ; Sólo restauramos controles
    GUICtrlSetState($btnSalir, $GUI_ENABLE)
    _CapturaDesactivada()
    EndIf
    EndFunc

    Func _RecuadraObjeto()
    Local $pos = _WinAPI_GetMousePos()
    Local $hCtrl = _WinAPI_WindowFromPoint($pos)
    If $hCtrl <> 0 And $hCtrlOld <> $hCtrl And $hRect_GUI <> $hCtrl Then
    $hCtrlOld = $hCtrl
    Local $i_W, $i_H, $Todo_Rgn, $Agujero_Rgn, $Rectan_Rgn
    Local $aCtrlPos = WinGetPos($hCtrl)
    $i_W = $aCtrlPos[2]
    $i_H = $aCtrlPos[3]
    $Todo_Rgn = _WinAPI_CreateRectRgn(0, 0, $i_W, $i_H)
    $Agujero_Rgn = _WinAPI_CreateRectRgn($recAncho, $recAncho, $i_W - $recAncho, $i_H - $recAncho)
    $Rectan_Rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
    _WinAPI_CombineRgn($Rectan_Rgn, $Todo_Rgn, $Agujero_Rgn, $RGN_DIFF)
    _WinAPI_SetWindowRgn($hRect_GUI, $Rectan_Rgn)
    WinMove($hRect_GUI, "", $aCtrlPos[0], $aCtrlPos[1], $i_W, $i_H)
    WinSetOnTop($hRect_GUI, "", 1) ; Por si aparecen nuevas ventanas pop-up, recolocamos delante
    EndIf
    EndFunc

    ; Para seguir recuadrando mientras se mueve una de nuestras ventanas, excepto el propio rectángulo, claro
    Func WM_WINDOWPOSCHANGED($hWndGUI, $MsgID, $WParam, $LParam)
    If $hWndGUI = $hRect_GUI Then Return $GUI_RUNDEFMSG
    _RecuadraObjeto()
    $hCtrlOld = -1
    EndFunc

    Func _CapturaClienteVentana()
    HotKeySet("{PRINTSCREEN}", "_Dummy") ; Para evitar llamadas recursivas y evitar el ScreenCopy de Windows
    Local $hVentana = WinGetHandle("[ACTIVE]")
    Local $pos = _WinGetClientPos($hVentana)
    Local $tam = WinGetClientSize($hVentana)

    Local $concursor = _chkIsChecked($chkCursor)
    Local $Hbit = _ScreenCapture_Capture("", $pos[0], $pos[1], $pos[0] $tam[0], $pos[1] $tam[1], $concursor)
    _ProcesaCaptura($Hbit)
    _CapturaReactivada()
    EndFunc

    Func _WinGetClientPos($hVent)
    Local $Pos[2]
    Local $tpoint = DllStructCreate("int X; int Y")
    DllStructSetData($tpoint, "X", 0)
    DllStructSetData($tpoint, "Y", 0)
    _WinAPI_ClientToScreen($hVent, $tpoint)
    $Pos[0] = DllStructGetData($tpoint, "X")
    $Pos[1] = DllStructGetData($tpoint, "Y")
    return $Pos
    EndFunc

    Func _CapturaVentana()
    ; ALT PrintScreen de Windows no nos sirve porque no captura cursor
    HotKeySet("{PRINTSCREEN}", "_Dummy") ; Para evitar llamadas recursivas y evitar el ScreenCopy de Windows
    Local $hVentana = WinGetHandle("[ACTIVE]")
    Local $rectV = WinGetPos($hVentana)
    Local $concursor = _chkIsChecked($chkCursor)
    Local $Hbit = _ScreenCapture_Capture("", $rectV[0], $rectV[1], $rectV[0] $rectV[2], $rectV[1] $rectV[3], $concursor)
    _ProcesaCaptura($Hbit)
    _CapturaReactivada()
    EndFunc

    Func _CapturaPantalla()
    ; No nos sirve el PrintScreen de Windows porque no podemos controlar el cursor
    HotKeySet("{PRINTSCREEN}", "_Dummy") ; Para evitar llamadas recursivas y evitar el ScreenCopy de Windows
    Local $concursor = _chkIsChecked($chkCursor)
    Local $Hbit = _ScreenCapture_Capture("", 0, 0, @DesktopWidth, @DesktopHeight, $concursor)
    _ProcesaCaptura($Hbit)
    _CapturaReactivada()
    EndFunc

    Func _ProcesaCaptura($hBMP)
    If _chkIsChecked($chkPNG) Then _GuardaBMPenPNG($hBMP)
    If _chkIsChecked($chkPortapapeles) Then
    _BMPaPortapapeles($hBMP)
    If _chkIsChecked($chkPaint) Then
    _PegaEnPaint()
    Else
    ; Si no se pega en Paint mostramos un mensaje para que el usuario tenga alguna respuesta visual
    MsgBox(8192 64, "Capturador", "Imagen copiada en el portapapeles.")
    EndIf
    EndIf
    _WinAPI_DeleteObject($HBMP)
    EndFunc

    Func _BMPaPortapapeles($img_handler)
    _ClipBoard_Open($GUI_Principal)
    _ClipBoard_Empty()
    _ClipBoard_SetDataEx($img_handler, $CF_BITMAP)
    _ClipBoard_Close() ; ¡Hay que cerrar o lo dejamos bloqueado!
    EndFunc

    Func _PegaEnPaint()
    Local $clase = "[CLASS:MSPaintApp]"
    Run("mspaint.exe")
    If Not WinWait($clase, "", 5) Then
    MsgBox(16, "Imposible conectar con MsPaint", "Error conectando con MsPaint, proceso no encontrado.")
    Else
    If Not WinActive($clase) Then
    WinActivate($clase)
    WinWaitActive($clase)
    EndIf
    Send("^v") ; ctrl v = pegar
    EndIf
    EndFunc

    Func _GuardaBMPenPNG($HBitmap)
    Local $fich = FileSaveDialog("Guardan en...", @WorkingDir , "Imagen PNG (*.png)", 18, "captura.png", $GUI_Principal)
    If @error Then
    MsgBox(48, "Capturador", "Proceso cancelado. Imagen descartada.")
    Else
    _GDIPlus_Startup()
    Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP($HBitmap)
    _GDIPlus_ImageSaveToFile($hImage, $fich)
    _GDIPlus_ImageDispose($hImage)
    ;_WinAPI_DeleteObject($HBitmap)
    _GDIPlus_ShutDown()
    EndIf
    EndFunc

    Func _Marca_Rectan(ByRef $iX1, ByRef $iY1, ByRef $iX2, ByRef $iY2)
    ; Permite dibujar un rectángulo sobre la pantalla, devuelve TRUE si se acepta el rectángulo y FALSE
    ; si se cancela. Si TRUE, las coordenadas del rectángulo se devuelven en los parámetros.

    Local $UserDLL = DllOpen("user32.dll")
    Local $GdiDLL = DllOpen("gdi32.dll")

    ;Extensión de la que se hace zoom y multiplicador
    Local $ZoomAncho = 50, $ZoomAlto = 50, $ZoomX = 3

    ; GUI transparente ocupando toda la pantalla para capturar el ratón
    Local $GUI_fondo = GUICreate("Fondo", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP,BitOr($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW))
    WinSetTrans($GUI_fondo, "", 1) ; ¡Si se pone totalmente transparente no captura el ratón!
    GUISetCursor(3, 1) ;Cursor de cruz, sólo cambia para GUI actual
    ;Con _SetStdCursor($OCR_CROSS, $IDC_ARROW) podríamos cambiar el cursor global, pero no hace falta. En
    ;ese caso hay que restaurarlo con _RestoreDefaultSystemCursor()
    GUISetState(@SW_SHOW)

    ; Rectángulo, es un GUI con un agujero en medio para "desrellenar" el rectángulo formado por su fondo
    ; El agujero será la región a capturar
    $hRect_GUI = GUICreate("", 0, 0, 10, 10, $WS_POPUP, BitOr($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW))
    GUISetBkColor(0xFF5500)
    GUISetCursor(3, 1) ;Cursor de cruz
    If Not $MODO_XP Then WinSetTrans($hRect_GUI, "", 180)
    GUISetState(@SW_SHOWNOACTIVATE, $hRect_GUI)

    ; Esperamos primer click
    Local $rect_aceptado = True
    While 1
    If _IsPressed("1B", $UserDLL) Then ; Escape
    $rect_aceptado = False
    ExitLoop
    EndIf
    If _IsPressed("01", $UserDLL) Then ExitLoop ;Botón izdo
    Sleep(10)
    WEnd

    ;Posición inicial
    Local $aMouse_Pos = MouseGetPos()
    $iX1 = $aMouse_Pos[0]
    $iY1 = $aMouse_Pos[1]

    ;Creamos la ventana de zoom
    Local $GuiZoomAncho = $ZoomAncho * $ZoomX
    Local $GuiZoomAlto = $ZoomAlto * $ZoomX
    Local $MidZoomW = $ZoomAncho / 2, $MidZoomH = $ZoomAlto / 2
    Local $Xzoom = $iX1 4, $Yzoom = $iY1 25 ;posición del GUI
    Local $XSrc = $iX1-$MidZoomW, $YSrc = $iY1-$MidZoomH ;posición de la zona a "zoomear"
    Local $GUI_zoom = GUICreate("Zoom", $GuiZoomAncho, $GuiZoomAlto, $iX1 4, $iY1 25, _
    BitOR($WS_POPUP, $WS_THICKFRAME), BitOr($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW, $WS_EX_STATICEDGE))
    GUISetState(@SW_SHOWNOACTIVATE)

    Local $DeskDC = _WinAPI_GetDC(0) ;DC de la ventana Desktop
    Local $ZoomDC = _WinAPI_GetDC($GUI_zoom)

    ; Empezamos a dibujar el rectángulo a copiar
    Local $ratX, $ratY, $lblX1, $lblX2, $lblY1, $lblY2, $tamX, $tamY
    Local $oldRatX = $iX1, $oldRatY = $iY1 ;Para saber si el rectángulo ha cambiado
    While _IsPressed("01", $UserDLL)
    $aMouse_Pos = MouseGetPos()
    $ratX = $aMouse_Pos[0]
    $ratY = $aMouse_Pos[1]

    ; Actualización de zoom antes de mover su GUI para que vaya suave en Vista
    If Not $MODO_XP Then
    _WAPI_StretchBlt($ZoomDC, 0, 0, $GuiZoomAncho, $GuiZoomAlto, _
    $DeskDC, $XSrc, $YSrc, $ZoomAncho, $ZoomAlto, $SRCCOPY, $GdiDLL)
    EndIf
    If ($oldRatX <> $ratX OR $oldRatY <> $ratY) Then
    ;Sólo procesamos si el ratón se ha movido
    $oldRatX = $ratX
    $oldRatY = $ratY

    If $iX1 < $ratX Then
    $lblX1 = $iX1
    $lblX2 = $ratX
    Else
    $lblX1 = $ratX
    $lblX2 = $iX1
    EndIf
    If $iY1 < $ratY Then
    $lblY1 = $iY1
    $lblY2 = $ratY
    Else
    $lblY1 = $ratY
    $lblY2 = $iY1
    EndIf

    $tamX = $lblX2 - $lblX1 1
    $tamY = $lblY2 - $lblY1 1
    ToolTip($tamX & " x " & $tamY, $lblX2 4, $lblY2 4, Default, Default, 4)
    _DibujaRectan($lblX1, $lblY1, $tamX, $tamY)

    ; Movemos la ventana de zoom para que no se salga por el borde
    If ($lblX2 4 $GuiZoomAncho < @DesktopWidth) Then
    $Xzoom = $lblX2 4
    Else
    $Xzoom = $lblX1-20-$GuiZoomAncho
    EndIf
    If ($lblY2 30 $GuiZoomAlto < @DesktopHeight) Then
    $Yzoom = $lblY2 30
    Else
    $Yzoom = $lblY1-20-$GuiZoomAlto
    EndIf
    WinMove($GUI_zoom, "", $Xzoom, $Yzoom)

    ; No hacemos zoom de zonas fuera de pantalla, aunque el ratón esté en el borde
    If $ratX < $MidZoomW Then
    $XSrc = 0
    ElseIf $ratX $MidZoomW > @DesktopWidth Then
    $XSrc = @DesktopWidth-$ZoomAncho
    Else
    $XSrc = $ratX-$MidZoomW
    EndIf
    If $ratY < $MidZoomH Then
    $YSrc = 0
    ElseIf $ratY $MidZoomH > @DesktopHeight Then
    $YSrc = @DesktopHeight-$ZoomAlto
    Else
    $YSrc = $ratY-$MidZoomH
    EndIf
    EndIf

    ;En XP es más suave copiar después de mover
    If $MODO_XP Then
    _WAPI_StretchBlt($ZoomDC, 0, 0, $GuiZoomAncho, $GuiZoomAlto, _
    $DeskDC, $XSrc, $YSrc, $ZoomAncho, $ZoomAlto, $SRCCOPY, $GdiDLL)
    EndIf
    Sleep(10)
    WEnd

    ; Dejamos ajustar el recuadro de captura, se mueve con los cursores y se redimensiona con CTRL cursores
    ; Para finalizar se pulsa ENTER
    ; Tecla CONTROL = "11"
    GUISetCursor(4, 1, $GUI_fondo) ; Cursor con interrogante, en fondo...
    GUISetCursor(4, 1, $hRect_GUI) ; ...y en recuadro

    ;Ahora el control de si ha cambiado el rectángulo lo tenemos sobre la coordenada final
    Local $controlX = $lblX2
    Local $controlY = $lblY2
    While (Not _IsPressed("0D", $UserDLL)) AND $rect_aceptado ; Hasta que se pulse ENTER o se cancele
    If _IsPressed("01", $UserDLL) Then ; Botón izquierdo de ratón
    ; Esperamos a que suelte el botón
    _EsperaKeyOff("01", $UserDLL)
    GUISetState(@SW_HIDE, $GUI_zoom)
    SplashTextOn("Ayuda", "Mover: cursores" & @LF & "Tamaño: CTRL cursores" & @LF & "Aceptar: ENTER" & _
    @LF & "Cancelar: ESC" & @LF & @LF & "(Click para continuar)",170,100,-1,-1,5,"",9,800)
    _EsperaKeyOnOff("01", $UserDLL)
    SplashOff()
    GUISetState(@SW_SHOWNOACTIVATE, $GUI_zoom)
    EndIf
    If _IsPressed("25", $UserDLL) Then ; Cursor izquierda
    If Not _IsPressed("11", $UserDLL) Then $lblX1 -= 1
    $lblX2 -= 1
    ElseIf _IsPressed("27", $UserDLL) Then ; Cursor derecha
    If Not _IsPressed("11", $UserDLL) Then $lblX1 = 1
    $lblX2 = 1
    EndIf
    If _IsPressed("26", $UserDLL) Then ; Cursor arriba
    If Not _IsPressed("11", $UserDLL) Then $lblY1 -= 1
    $lblY2 -= 1
    ElseIf _IsPressed("28", $UserDLL) Then ; Cursor abajo
    If Not _IsPressed("11", $UserDLL) Then $lblY1 = 1
    $lblY2 = 1
    EndIf
    If _IsPressed("1B", $UserDLL) Then ; Escape
    $rect_aceptado = False
    EndIf
    if $lblX2 <= $lblX1 Then $lblX2 = $lblX1
    if $lblY2 <= $lblY1 Then $lblY2 = $lblY1

    If ($controlX <> $lblX2 OR $controlY <> $lblY2) Then
    $controlX = $lblX2
    $controlY = $lblY2
    $tamX = $lblX2 - $lblX1 1
    $tamY = $lblY2 - $lblY1 1
    ToolTip($tamX & " x " & $tamY, $lblX2 4, $lblY2 4, Default, Default, 4)
    _DibujaRectan($lblX1, $lblY1, $tamX, $tamY)
    EndIf
    $aMouse_Pos = MouseGetPos()
    $ratX = $aMouse_Pos[0]
    $ratY = $aMouse_Pos[1]
    ; Actualización de zoom antes de mover su GUI para que vaya suave en Vista
    If Not $MODO_XP Then
    _WAPI_StretchBlt($ZoomDC, 0, 0, $GuiZoomAncho, $GuiZoomAlto, _
    $DeskDC, $XSrc, $YSrc, $ZoomAncho, $ZoomAlto, $SRCCOPY, $GdiDLL)
    EndIf
    If ($oldRatX <> $ratX OR $oldRatY <> $ratY) Then
    ; Sólo movemos el Gui de zoom si se mueve el ratón
    $oldRatX = $ratX
    $oldRatY = $ratY
    If ($ratX 4 $GuiZoomAncho < @DesktopWidth) Then
    $Xzoom = $ratX 4
    Else
    $Xzoom = $ratX-4-$GuiZoomAncho
    EndIf
    If ($ratY 30 $GuiZoomAlto < @DesktopHeight) Then
    $Yzoom = $ratY 30
    Else
    $Yzoom = $ratY-35-$GuiZoomAlto
    EndIf
    WinMove($GUI_zoom, "", $Xzoom, $Yzoom)

    ; No hacemos zoom de zonas fuera de pantalla, aunque el ratón esté en el borde
    If $ratX < $MidZoomW Then
    $XSrc = 0
    ElseIf $ratX $MidZoomW > @DesktopWidth Then
    $XSrc = @DesktopWidth-$ZoomAncho
    Else
    $XSrc = $ratX-$MidZoomW
    EndIf
    If $ratY < $MidZoomH Then
    $YSrc = 0
    ElseIf $ratY $MidZoomH > @DesktopHeight Then
    $YSrc = @DesktopHeight-$ZoomAlto
    Else
    $YSrc = $ratY-$MidZoomH
    EndIf
    EndIf
    ;En XP es más suave copiar después de mover
    If $MODO_XP Then
    _WAPI_StretchBlt($ZoomDC, 0, 0, $GuiZoomAncho, $GuiZoomAlto, _
    $DeskDC, $XSrc, $YSrc, $ZoomAncho, $ZoomAlto, $SRCCOPY, $GdiDLL)
    EndIf
    Sleep(20)
    Wend
    ToolTip("")

    ;Posición final
    $iX1 = $lblX1
    $iY1 = $lblY1
    $iX2 = $lblX1 $tamX
    $iY2 = $lblY1 $tamY

    ; Liberamos recursos bloqueados: handlers, dlls, Device Contexts, GUIs...
    _WinAPI_ReleaseDC(0, $DeskDC)
    _WinAPI_ReleaseDC($GUI_zoom, $ZoomDC)
    GUIDelete($hRect_GUI)
    GUIDelete($GUI_fondo)
    GUIDelete($GUI_zoom)
    DllClose($UserDLL)
    DllClose($GdiDLL)
    ;_RestoreDefaultSystemCursor()

    Sleep(10) ; Damos tiempo a que se reactive la ventana que había antes de nuestra capa transparente
    return $rect_aceptado
    EndFunc

    ; En _DibujaRectan pasamos (x0,y0,ancho,alto) de la zona de captura, el rectángulo hay que dibujarlo por fuera
    Func _DibujaRectan($x, $y, $w, $h)
    Local $Todo_Rgn, $Agujero_Rgn, $Rectan_Rgn
    Local $rX2 = $w ($recAncho*2), $rY2 = $h ($recAncho*2) ;coordenadas finales del GUI (captura rectángulo)
    $Todo_Rgn = _WinAPI_CreateRectRgn(0, 0, $rX2, $rY2)
    $Agujero_Rgn = _WinAPI_CreateRectRgn($recAncho, $recAncho, $w $recAncho, $h $recAncho)
    $Rectan_Rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
    _WinAPI_CombineRgn($Rectan_Rgn, $Todo_Rgn, $Agujero_Rgn, $RGN_DIFF)
    _WinAPI_SetWindowRgn($hRect_GUI, $Rectan_Rgn)
    WinMove($hRect_GUI, "", $x-$recAncho, $y-$recAncho, $rX2, $rY2)
    WinSetOnTop($hRect_GUI, "", 1) ; Por si aparecen nuevas ventanas pop-up, recolocamos delante
    EndFunc

    Func _WAPI_StretchBlt($DestDC, $DestX, $DestY, $DestW, $DestH, $OrigDC, $OrigX, $OrigY, $OrigW, $OrigH, $RasterOP, $GdiDLL="GDI32.dll")
    DllCall($GdiDLL, "int","StretchBlt", "int",$DestDC, "int",$DestX, "int",$DestY, "int",$DestW, "int",$DestH, _
    "int",$OrigDC, "int",$OrigX, "int",$OrigY, "int",$OrigW, "int",$OrigH, "long",$RasterOP)
    EndFunc

    Func _chkIsChecked($chk)
    return BitAnd(GUICtrlRead($chk),$GUI_CHECKED) = $GUI_CHECKED
    EndFunc

    Func _EsperaKeyOn($keycode, $UserDLL='user32.dll')
    ;Espera que se presione esta tecla (o botón de ratón)
    While Not _IsPressed($keycode, $UserDLL)
    Sleep(10)
    WEnd
    EndFunc

    Func _EsperaKeyOff($keycode, $UserDLL='user32.dll')
    ;Espera a que esta tecla (o botón de ratón) no esté presionada
    While _IsPressed($keycode, $UserDLL)
    Sleep(10)
    WEnd
    EndFunc

    Func _EsperaKeyOnOff($keycode, $UserDLL='user32.dll')
    ;Espera a que esta tecla (o botón de ratón) se presione y suelte
    While Not _IsPressed($keycode, $UserDLL)
    Sleep(10)
    WEnd
    While _IsPressed($keycode, $UserDLL)
    Sleep(10)
    WEnd
    EndFunc

    Func _SetStdCursor($i_idc_cursor, $i_cursor)
    Local $newhcurs, $lResult
    $newhcurs = DllCall("user32.dll", "hwnd", "LoadCursorA", "hwnd", 0, 'int', $i_idc_cursor)
    If Not @error Then
    $lResult = DllCall("user32.dll", "int", "SetSystemCursor", "int", $newhcurs[0], "int", $i_cursor)
    If @error Then
    MsgBox(0, "Error", "Failed SetSystemCursor")
    EndIf
    Else
    MsgBox(0, "Error", "Failed LoadCursor")
    EndIf
    EndFunc

    Func _RestoreDefaultSystemCursor()
    Const $SPI_SETCURSORS = 0x57
    DllCall("user32.dll", "int", "SystemParametersInfo", "int", $SPI_SETCURSORS, "int", 0, "int", 0, "int", 0)
    EndFunc

    Func _Dummy()
    ; No hace nada. Se utiliza para dejar sin función una tecla hotkey, tanto para el programa como para Windows
    return
    EndFunc

    Func _AnimTrans($hWnd, $Desde, $Hasta, $Paso = 5, $Sleep = 5)
    If $Desde > $Hasta Then $Paso = -$Paso
    For $i = $Desde To $Hasta Step $Paso
    WinSetTrans($hWnd, '', $i)
    Sleep($Sleep)
    Next
    WinSetTrans($hWnd, '', $Hasta) ; Por si el paso del bucle no nos deja en el límite exacto
    EndFunc

    ;================================================= ==============================
    ; Function Name: _IsAeroEnable
    ; Description: Checks if aero is enabled
    ; Parameter(s): None
    ; Requirement(s): dwmapi.dll, Windows Vista
    ; Return Value(s): 0 If disabled, 1 if enabled
    ; Author(s): GtaSpider
    ; Modificado por Ximo: No devolvía bien el valor (bug de AutoIt devolviendo 0)
    ;================================================= ==============================
    Func _IsAeroEnable()
    Local $asDll = DllCall("dwmapi.dll","int","DwmIsCompositionEnable d","str","")
    If @error Then Return SetError(@error,0,False)
    Return Asc($asDll[1]) = 1
    EndFunc


    Downloads
    como deve ter aparecido aqueles emoticons....
    download:[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Sabe oq ta em vermelho?parece q e sugestao pa qm crior o programa e so editar la...
    o codigo n e meu n so to colocando aki pra quem quiser ai.
    otros mirrors:
    MultiUpload:Multiupload.com - upload your files to multiple file hosting sites!
    2shared:[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Megauupload:[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Ou:

    Citação:


    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Multiupload.com - upload your files to multiple file hosting sites!
    RapidShare: 1-CLICK Web hosting - Easy Filehosting

    100%
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    MEGAUPLOAD - The leading online storage and file delivery service

    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Deposit Files

    100%
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Hotfile.com: One click file hosting

    87%
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    zSHARE - Capturador.rar

    100%
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Capturador.rar - Powered by Multiupload.com - BADONGO

    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    Download Capturador.rar for free on uploading.com

    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
    2shared - download Capturador.rar
    [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]





    dps eu do uma ajeitada aki

      Data/hora atual: 5/20/2024, 11:47