我有這個小片劇本的,但是當我在使用PrintWindow它只有返回一個黑色的捕獲:有沒有辦法使用PrintWindow和控件? (使用的AutoIt)
PrintWindow()正在罰款的窗口句柄,但它與控制手柄不是。
(或者是有辦法來捕獲只在中間的窗口或東西的底部,而不需要獲取完整的窗口和切割嗎?)
AutoIt腳本:
Local $hWnd = ControlGetHandle("[CLASS:Notepad]","","Edit1")
Local $pos = ControlGetPos($hWnd,"","")
;MsgBox($MB_OK, "OK", $pos[0])
Local $Width = $pos[2]
Local $Height = $pos[3]
Local $hDC = _WinAPI_GetDC($hWnd)
Local $memDC = _WinAPI_CreateCompatibleDC($hDC)
Local $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height)
_WinAPI_SelectObject ($memDC, $memBmp)
;DllCall("User32.dll","int","PrintWindow","hwnd",$hWnd,"hwnd",$memDC,"int",0)
;_WinAPI_BitBlt($hDC, 0, 0, $Width, $Height, $memDC, 0,0, $SRCCOPY)
_WinAPI_BitBlt($memDC, 0, 0, $Width, $Height, $hDC, 0,0, $SRCCOPY) ;this is working now!
_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)
謝謝你,我修復了我的代碼,但是我仍然有一個黑色的位圖,沒有任何可見的東西,我的函數PrintWindow在窗口句柄下工作正常,當我添加控制句柄時它不工作。 – shuji 2014-11-20 23:55:58
hdc參數需要聲明爲hwnd我不知道爲什麼和在BitBlt調用之後,我的記事本編輯控件正在填充黑色。 – shuji 2014-11-21 00:16:25
嘗試使用以下示例將'memBmp'呈現爲文件:[this](http://msdn.microsoft.com/en-us/library/windows/desktop/dd145119(v = vs.85).aspx )和[this](http://msdn.microsoft.com/en-us/library/windows/desktop/dd183402(v = vs.85).aspx)。簡單的「Result.bmp」就足夠了,只要確保擴展名是'.bmp'!這會告訴我們'PrintWindow'是否運行良好,因爲我懷疑編輯控件可能是問題所在...... – AlwaysLearningNewStuff 2014-11-21 01:03:36