1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hỏi đáp Xin Hỏi về Cách Chụp Màn hình

Thảo luận trong 'Thảo luận chung - Hỏi đáp' bắt đầu bởi CanTrungSo, 18/1/19.

  1. CanTrungSo

    CanTrungSo Thành viên mới
    • 3/6

    Tham gia ngày:
    16/11/18
    Bài viết:
    8
    Đã được thích:
    2
    Xin chào Mọi Người , mọi người chỉ em hướng đi với ạ.
    1- Code Em chụp màn hình "Program Manager" thiếu mất thanh task bar ,em tìm hoài ko bik lỗi do đâu
    Mã (AutoIt):
    #include <WinAPISysWin.au3>
    #include <WinAPISysWin.au3>
    #include <WinAPIGdiDC.au3>
    #include <WinAPIGdi.au3>

    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>
    #include <GuiConstantsEx.au3>
    #include <ScreenCapture.au3>
    #include <WinApi.au3>


    Local $hWnd = WinGetHandle("Program Manager")
    _WinCapture($hWnd)
    Func _WinCapture($hWnd)
        Local $iH, $iW, $hDC, $hCDC, $memBmp

        Local $pos = ControlGetPos($hWnd, "", "")
        Local $iWidth = $pos[2]
        Local $iHeight = $pos[3]
        If $iWidth = -1 Then $iWidth = _WinAPI_GetWindowWidth($hWnd)
        If $iHeight = -1 Then $iHeight = _WinAPI_GetWindowHeight($hWnd)

        $hDC = _WinAPI_GetDC($hWnd)
        $memDC = _WinAPI_CreateCompatibleDC($hDC)
        $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
        _WinAPI_SelectObject($memDC, $memBmp)

        DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "hwnd", $memDC, "int", 0)
        _WinAPI_BitBlt($memDC, 0, 0, $iW, $iH, $hDC, 0, 0, $SRCCOPY)

        _GDIPlus_Startup()
        Local $hBMP = _GDIPlus_BitmapCreateFromHBITMAP($memBmp)
        Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)
        _WinAPI_DeleteObject($hDC)
        _WinAPI_ReleaseDC($hWnd, $hDC)
        _WinAPI_DeleteDC($memDC)
        _WinAPI_DeleteObject($memBmp)
        _WinAPI_DeleteDC($hDC)

        $sPath = @ScriptDir & '\capture.bmp'
        _WinAPI_SaveHBITMAPToFile($sPath, $hHBITMAP)
        ShellExecute($sPath)

        Return $hBMP
    EndFunc   ;==>_WinCapture
     
  2. yutijang

    yutijang Thành viên năng động
    • 28/34

    Tham gia ngày:
    1/7/18
    Bài viết:
    110
    Đã được thích:
    61
    Bởi vì "Program Manager" có handle riêng và taskbar có handle riêng, "Program Manager" không bao gồm thanh taskbar.
    Bạn có thể thử với Local $hWnd = WinGetHandle("[CLASS:Shell_TrayWnd]") để chụp riêng taskbar.
     
    CanTrungSo1 thích bài này.
  3. CanTrungSo1

    CanTrungSo1 Thành viên mới
    • 3/6

    Tham gia ngày:
    20/11/18
    Bài viết:
    7
    Đã được thích:
    2
    Đúng rồi nhỉ , em lại ko để ý nó có Hwnd riêng , vãi thiệt.
     

Chia sẻ trang này

Đang tải...