在vb中怎样实现截取当前活动窗体,并以图片(bmp)形式保存。求助大神了 帮帮忙吧

如图所示,这是我做的的界面,我想点击form2上的“截取”按钮时,截取当前活动窗体(form2)

并可以像电脑保存图片这样跳出对话框来保存

希望保存得到的图片仅是当前活动窗口:

望vb大神们给予指点帮助,小弟感激不尽,如能做出必定好评,高悬赏 在线等哦

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim Xg As Boolean
 
Private Sub Command1_Click()
GbBk
End Sub
Private Sub Command2_Click()
keybd_event 18, 0, 0, 0
keybd_event vbKeySnapshot, 0&, 0&, 0&
DoEvents
keybd_event 18, 0, KEYEVENTF_KEYUP, 0
SavePicture Clipboard.GetData, "c:\abc.bmp"
End Sub
Sub GbBk()
    If Xg Then
            BorderStyle = 2
            
    Else
            BorderStyle = 0
    End If
    Xg = Not Xg
    Caption = Caption
    Move Left, Top, Width - 50, Height - 50
    Move Left, Top, Width + 50, Height + 50
End Sub

追问

非常抱歉这么慢回复你,去吃饭了,我刚才实验了一下 程序是可以的 ,真棒 ,对了 那个command1按下是干嘛的呀?我不太懂,现在就是怎么跳出保存得对话框呢?望在指教一次 我会给加分 给好评的

追答

没事,那个是调整窗体框架,你想一个没框架的面积就会小一点,大框架的面积就会大一些

追问

哦 知道了 对了 怎么跳出保存对话框呢?还有我运行这个的时候,电脑会出现毛病 它好像强制 alt键按下了 ,现在一截屏 桌面上的东西只要一点击就会跳出属性框 怎么解决呀,alt键的毛病一直跟着呀 怎么解决呢??

追答

好了,都解决了,前面忘了定义一个常量,sorry,哦对,还要引用windows common dialog才能用下面的代码

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim Xg As Boolean
Const KEYEVENTF_KEYUP = &H2
  
Private Sub Command1_Click()
GbBk
End Sub
Private Sub Command2_Click()
keybd_event 18, 0, 0, 0
keybd_event vbKeySnapshot, 0&, 0&, 0&
DoEvents
keybd_event 18, 0, KEYEVENTF_KEYUP, 0
CommonDialog1.Filter = "图像(*.bmp) | *.bmp"
Do While CommonDialog1.FileName = ""
CommonDialog1.ShowSave
Loop
SavePicture Clipboard.GetData, CommonDialog1.FileName
End Sub
Sub GbBk()
    If Xg Then
            BorderStyle = 2
             
    Else
            BorderStyle = 0
    End If
    Xg = Not Xg
    Caption = Caption
    Move Left, Top, Width - 50, Height - 50
    Move Left, Top, Width + 50, Height + 50
End Sub

追问

哦 非常感谢你 我把悬赏提高了 嘿嘿 对了 是不是这样 就可以克服alt键那个毛病了 ?我的vb里怎么没有windows common dialog 我的vb是6.0企业版的?要不你把这个控件发给我吧。 马上采纳

追答

对的,打错了,是microsoft common dialog 6.0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-27
点击form2上的“截取”按钮时。。。。此时按钮所在窗体才是活动窗体,所以理论上不可行。
相似回答
大家正在搜