在Windows下单击“Print Screen”键,会执行复制屏幕的功能。
我想在程序中实现这个功能,把当前屏幕的画面复制下来,不知该怎么做才能模仿“Print Screen”事件?

解决方案 »

  1.   

    '模拟键盘
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Const theScreen = 1
    Const theForm = 0
    Private Sub Command1_Click()
    Call keybd_event(vbKeySnapshot, theForm, 0, 0)  '若theForm改成theScreen则Copy整个Screen
    DoEvents
    Picture1.Picture = Clipboard.GetData(vbCFBitmap)
    End Sub
      

  2.   

    反了,应该是
    Const theScreen = 0
    Const theForm = 1
      

  3.   

    用GetDC获取屏幕DC,然后……天,那个GDI32 API我忘了……
      

  4.   

    另外一个:Private Declare Function GetDC Lib "user32" ( _
           ByVal hwnd As Long) As Long
    Private Declare Function BitBlt Lib "gdi32" ( _
           ByVal hDestDC As Long, _
           ByVal X As Long, _
           ByVal Y As Long, _
           ByVal nWidth As Long, _
           ByVal nHeight As Long, _
           ByVal hSrcDC As Long, _
           ByVal xSrc As Long, _
           ByVal ySrc As Long, _
           ByVal dwRop As Long) As Long
    Private Sub Form_Load()
           Me.Hide
           Me.AutoRedraw = True
           BitBlt Me.hDC, 0, 0, Screen.Width, Screen.Height, _
                         GetDC(0), 0, 0, vbSrcCopy     '抓屏
           Dim sFile   As String
           sFile = "C:\" & Format(Now, "yyyymmddhhmmss") & ".BMP"
           SavePicture Me.Image, sFile    '保存
           MsgBox "当前屏幕图像已经保存到" & sFile, 64
           End
    End Sub
      

  5.   

    多谢 viena(维也纳nn-实心木头人) !Call keybd_event(vbKeySnapshot, theForm, 0, 0)
    是不是应该把vbKeySnapshot 改为 vbKeyPrint