熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用VB.net2008編寫屏幕抓捕程序

2013-11-13 10:16:24  來源: .NET編程 
Visual Studio在穩定性方面增強不少筆者在使用時很少出現BUG的情況而且Visual Studio在網絡應用編程與圖像處理方面也比原來版本增強了不少開發效率有了提高本篇文章將介紹如何利用Visual Studio所提供的控件編寫一個簡單的屏幕抓捕程序本篇文章具有一定的實用性讓大家對ContextMenuStrip控件和NotifyIcon控件有所了解且在應用程序開發中需要經常用到這些控件希望對大家有所幫助  

  打開 Visual Studio 在文件 (File) 菜單上單擊新建項目 (New Project) 在新建項目 (New Project) 對話框的模板 (Templates) 窗格中單擊 Windows 應用程序(Windows Application)單擊確定 (OK) 如圖

   
  

  選擇Form窗體在Form窗體中添加ContextMenuStrip控件選中ContextMenuStrip控件輸入<抓捕當前屏幕>與<退出程序>我們需要在程序最小化時作為調用程序右鍵菜單的功能選項如圖

  
    

  隨後我們需要在Form中添加NotifyIcon控件NotifyIcon控件作為程序圖標顯示到窗體的任務欄中我們選擇NotifyIcon控件的Icon屬性選擇一個喜歡的圖標接下來最重要的一步就是進行圖標和快捷菜單的綁定了我們需要選擇NotifyIcon控件的ContextMenuStrip屬性選中菜單下拉框中的ContextMenuStrip這樣就進行綁定了如圖

  
用2008編寫屏幕抓捕程序

  好了現在界面工作我們已經完成了接下來我們需要進行輸入代碼的工作了

  首先進行聲明  

  Imports SystemRuntimeInteropServices

  Imports SystemDrawingImaging  

  Public Class Form  

   _

   Private Shared Function BitBlt(ByVal hdcDest As IntPtr ByVal nXDest As Integer ByVal nYDest As Integer ByVal nWidth As Integer ByVal nHeight As Integer ByVal hdcSrc As IntPtr _

   ByVal nXSrc As Integer ByVal nYSrc As Integer ByVal dwRop As Integer) As Boolean

   End Function  

   _

   Private Shared Function CreateDC(ByVal lpszDriver As String ByVal lpszDevice As String ByVal lpszOutput As String ByVal lpInitData As IntPtr) As IntPtr

   End Function

   Private picture As Bitmap = Nothing 以picture作為圖片格式的聲明  

  聲明Public Sub capture_window()  

  Public Sub capture_window()

   MeVisible = False

   Dim capture As IntPtr = CreateDC(DISPLAY Nothing Nothing Nothing)

     Dim get As Graphics = GraphicsFromHdc(capture)

   創建一個新的Graphics對象

   picture = New Bitmap(ScreenPrimaryScreenBoundsWidth ScreenPrimaryScreenBoundsHeight get)

   根據屏幕大小創建一個相同大小的Bitmap

   Dim get As Graphics = GraphicsFromImage(picture)

   Dim get As IntPtr = getGetHdc() 獲取屏幕的句柄

   Dim get As IntPtr = getGetHdc() 獲取位圖的句柄   

   BitBlt(get ScreenPrimaryScreenBoundsWidth ScreenPrimaryScreenBoundsHeight get _

   ) 把當前屏幕復制到位圖中

   getReleaseHdc(get) 釋放屏幕句柄

   getReleaseHdc(get) 釋放位圖句柄

   pictureSave(CapturePicturejpg ImageFormatJpeg)

   MessageBoxShow( 已經把當前截取屏幕保存到CapturePicturejpg檢查程序根目錄)

   MeVisible = True

   End Sub  

  進入 捕獲當前屏幕ToolStripMenuItem_Click事件中  

  Private Sub 捕獲當前屏幕ToolStripMenuItem_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles 捕獲當前屏幕ToolStripMenuItemClick

   capture_window() 調用函數開始捕獲程序  

   End Sub  

  進入 退出程序ToolStripMenuItem_Click事件中  

  Private Sub 退出程序ToolStripMenuItem_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles 退出程序ToolStripMenuItemClick  

   NotifyIconVisible = False

   關閉系統

   MeClose()

  End Sub

  好了現在我們運行程序進行測試一下注意如果我們不想看到Form應用程序窗體出現在任務欄中而只是想把程序圖標顯示在任務欄中請選擇Form窗體中的屬性ShowInTaskbar=False如圖

用2008編寫屏幕抓捕程序

  運行程序選中抓捕當前屏幕即可如圖圖片將會保存在你程序的根目錄中圖片名稱為CapturePicturejpg如圖所示

 

用2008編寫屏幕抓捕程序
用2008編寫屏幕抓捕程序

  程序成功運行一個簡單的屏幕捕捉程序就完成了大家有興趣的話還可以再去添加其他的功能如只針對應用程序窗體進行捕捉等使得應用程序的功能更多


From:http://tw.wingwit.com/Article/program/net/201311/13130.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.