Jump to content

_screencapture


Aceguy
 Share

Recommended Posts

any ideas what im doing wrong..

#include <ScreenCapture.au3>
#include <WinAPI.au3>

Local $hGUI
$hGUI = GUICreate("Screen Capture", 500, 500)
$pic = _ScreenCapture_Capture("", 0, 0, 100, 100)
$pic1 = _GDIPlus_BitmapCreateFromHBITMAP($pic)
GUICtrlCreatePic($pic1, 0, 0)
GUISetState(@SW_SHOW)
Sleep(2000)
_WinAPI_DeleteObject($pic1)
Edited by Aceguy
Link to comment
Share on other sites

  • Moderators

aceguy,

I am not an expert in GDI, but I think it is a bit more complicated than that if you want to use the bitmap from memory: :huggles:

#include <ScreenCapture.au3>

$pic = _ScreenCapture_Capture("", 0, 0, 500, 500)

$hGUI = GUICreate("Screen Capture", 500, 500)

$hPic = GUICtrlCreatePic("", 0, 0)
_SetBitmapToCtrl($hPic, $pic)

GUISetState(@SW_SHOW)

While 1
    If GUIGetMsg() = -3 Then ExitLoop
WEnd

_WinAPI_DeleteObject($pic)

Exit

; Shamelessly lifted from Zednas Resources UDF

Func _SetBitmapToCtrl($CtrlId, $hBitmap)

    Local Const $STM_SETIMAGE = 0x0172
    Local Const $STM_GETIMAGE = 0x0173
    Local Const $IMAGE_BITMAP = 0
    Local Const $SS_BITMAP = 0x0E
    Local Const $GWL_STYLE = -16

    Local $hWnd = GUICtrlGetHandle($CtrlId)
    If $hWnd = 0 Then
        Return SetError(1, 0, 0)
    EndIf
    Local $Style = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
    If @error Then
        Return SetError(2, 0, 0)
    EndIf
    _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, BitOR($Style, $IMAGE_BITMAP))
    If @error Then
        Return SetError(3, 0, 0)
    EndIf
    Local $hPrev = _SendMessage($hWnd, $STM_SETIMAGE, $IMAGE_BITMAP, 0)
    If $hPrev Then
        _WinAPI_DeleteObject($hPrev)
    EndIf
    _SendMessage($hWnd, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap)
    If @error Then
        Return SetError(4, 0, 0)
    EndIf
    $hPrev = _SendMessage($hWnd, $STM_GETIMAGE, $IMAGE_BITMAP, 0)
    If (@error) Or ($hBitmap = $hPrev) Then
        $hBitmap = 0
    EndIf

EndFunc   ;==>_SetBitmapToCtrl

Moreover, I have always found it gives a better quality image to save the screencapture to a temp file first - it also simplifies the code a lot: :D

#include <ScreenCapture.au3>

$pic = _ScreenCapture_Capture(@TempDir & "\Pic.bmp", 0, 0, 500, 500)

$hGUI = GUICreate("Screen Capture", 500, 500)

$hPic = GUICtrlCreatePic(@TempDir & "\Pic.bmp", 0, 0, 500, 500)

GUISetState(@SW_SHOW)

While 1
    If GUIGetMsg() = -3 Then
        FileDelete(@TempDir & "\Pic.bmp")
        Exit
    EndIf
WEnd

I hope this helps. :

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...