捕捉截圖的桌面程式地在Visual Basic中在一個簡單的方法
阿新 • • 發佈:2020-08-08
介紹 這個程式碼片段說明了如何捕捉桌面或任何視窗與最小編碼BMP檔案。它也演示了一個簡潔的方式儲存裝置上下文(DC)硬碟上的檔案。 程式碼的解釋 捕獲視窗中,我們可以利用建立在Windows API函式。得到一個可用的函式列表在此API,使用API瀏覽器工具,可以新增到Visual studio外掛管理器。這裡是一些函式的列表從API使用: GetWindowDc -檢索裝置上下文的直流CreateCompatibleDc -在記憶體中建立裝置上下文BitBlt執行畫素級資料傳輸從一個直流到其他 如何使用API函式在Visual Basic嗎? API函式必須在使用之前宣告。最好的方法是宣告所需的所有功能模組檔案,以便它們可以訪問任何形式。宣告的例子: 隱藏,複製Code
Private Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long) As Long
宣告的語法的其他功能,請使用“API檢視器”工具。 程式碼演算法在簡短的解釋 計算視窗的寬度和高度複製檢索裝置上下文視窗建立一個新的裝置上下文的稱為直流(DC)使用API函式(CreateCompatibleDC)在記憶體中建立一個位圖物件使用API在新建立的DCCopy影象資料從記憶體視窗DC DC使用API函式BitBlt從點陣圖物件,建立Ole圖片物件使用VB函式saveimage Olepicture儲存到檔案 隱藏,收縮,複製Code
Public Function GetWindowScreenshot_ (WndHandle As Long, SavePath As String, Optional BringFront As Integer = 1) As Long ' ' Function to create screeenshot of specified window and store at specified path ' On Error GoTo ErrorHandler Dim hDCSrc As Long Dim hDCMemory As Long Dim hBmp AsLong Dim hBmpPrev As Long Dim WidthSrc As Long Dim HeightSrc As Long Dim Pic As PicBmp Dim IPic As IPicture Dim IID_IDispatch As guid Dim rc As RECT Dim pictr As PictureBox 'Bring window on top of all windows if specified If BringFront = 1 Then BringWindowToTop WndHandle 'Get Window Size GetWindowRect WndHandle, rc WidthSrc = rc.Right - rc.Left HeightSrc = rc.Bottom - rc.Top 'Get Window device context hDCSrc = GetWindowDC(WndHandle) 'create a memory device context hDCMemory = CreateCompatibleDC(hDCSrc) 'create a bitmap compatible with window hdc hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc) 'copy newly created bitmap into memory device context hBmpPrev = SelectObject(hDCMemory, hBmp) 'copy window window hdc to memory hdc Call BitBlt(hDCMemory, 0, 0, WidthSrc, HeightSrc, _ hDCSrc, 0, 0, vbSrcCopy) 'Get Bmp from memory Dc hBmp = SelectObject(hDCMemory, hBmpPrev) 'release the created objects and free memory Call DeleteDC(hDCMemory) Call ReleaseDC(WndHandle, hDCSrc) 'fill in OLE IDispatch Interface ID With IID_IDispatch .data1 = &H20400 .data4(0) = &HC0 .data4(7) = &H46 End With 'fill Pic with necessary parts With Pic .Size = Len(Pic) 'Length of structure .Type = vbPicTypeBitmap 'Type of Picture (bitmap) .hBmp = hBmp 'Handle to bitmap .hPal = 0& 'Handle to palette (may be null) End With 'create OLE Picture object Call OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic) 'return the new Picture object SavePicture IPic, SavePath GetWindowScreenshot = 1 Exit Function ErrorHandler: GetWindowScreenshot = 0 End Function
更圖形相關的程式碼 更多的易於使用的和免費的程式碼片段在VB 6斷開連線;。 下載原始碼和演示應用程式 演示應用程式的完整原始碼可以從這裡下載。 本文轉載於:http://www.diyabc.com/frontweb/news2340.html