
正文
vb.netqq截屏 vba 屏幕截图
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb模拟QQ 截图
下面的代码是我很欣赏的编程牛人CBM666的,你看下就应该能明白意思了,需要的haunted自己修改一下,我运行过了可以运行成功,不会截到其它窗体只是打印当前窗体
友情提示:你点下打印键的时候没有提示会直接打印出窗口内容来,没有确定取消的按钮的,当初我在公司试的时候随便贴了个很烂的图就给打出来了,还被人笑了。。。
'添加 Picture1 Picture2 各别放一张图片 窗体也可加图片, 只是测试用罢了.
,Text1 随便打一些内容,(只是测试用)
'再随便加一个Picture3 用来保存图片
'Command1 抓图存图 Command2 打印
'本代码是将窗体内所有的控件与窗体一起保存到Picture3再打印出来.
Option Explicit
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 = 0 '整个Screen
Const theForm = 1 '当前活动界面
Private Sub Form_Load()
Command1.Caption = "抓取窗体"
Command2.Caption = "打 印"
Picture3.Move Screen.Width
Picture3.AutoRedraw = True
Picture3.BorderStyle = 0
Me.AutoRedraw = False
Clipboard.Clear
End Sub
Private Sub Command1_Click()
Me.Refresh
Picture3.Picture = LoadPicture()
Picture3.Width = Me.Width
Picture3.Height = Me.Height
Call keybd_event(vbKeySnapshot, 1, 0, 0)
DoEvents
Picture3.Picture = Clipboard.GetData(vbCFBitmap)
Set Picture3.Picture = Picture3.Image '此时才真正显示Picture
'SavePicture Picture3.Image, "c:\kkkw.bmp"
End Sub
Private Sub Command2_Click()
Printer.PaintPicture Picture3.Picture, 0, 0, Picture3.Width, Picture3.Height
Printer.EndDoc
End Sub
有空你搜索下CBM666的代码,绝对能给你很大收获
相关问答
Q1: vb.net 截屏 ,获取活动窗口
'模块中
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
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
'form1中
Private Sub Command1_Click()
Dim hDCtmp As Long, picWidth As Double, picHeight As Double
Dim x As Double
Dim y As Double
x = Val(Text2.Text)
y = Val(Text3.Text)
picWidth = Val(Text3.Text)
picHeight = Val(Text4.Text)
hDCtmp = GetDC(0)
BitBlt Picture1.hdc, 0, 0, picWidth, picHeight, hDCtmp, x, y, vbSrcCopy
ReleaseDC 0, hDCtmp
End Sub
目的: 将屏幕按照指定坐标和大小进行截取成图,在picture1显示
问题: 大小是相同了,为什么截取的坐标不对,只是屏幕上的左上
相信大家都用过QQ截图功能。不过很多人并没有真正掌握好它的用法。将QQ截图与其它截屏和制图软件配合使用vb.netqq截屏,会有意想不到的效果。
获取颜色的RGB值
我们在编辑图片或网页的时候vb.netqq截屏,经常需要获取某种颜色的“RGB值”vb.netqq截屏,所以很多人都安装了第三方的颜色吸取工具。其时用QQ截图键即可获取屏幕上任意颜色的RGB值。
当按下“Ctrl+Shift+A”弹出“截图”提示框时vb.netqq截屏,提示框中的“当前像素RGB”即为当前鼠标屏幕位置的颜色RGB值vb.netqq截屏,将鼠标移动到你想查看的屏幕颜色上即可获得相应的RGB值(如图1)。
图1精确截取图片大小
有时我们对要使用的截图尺寸有严格要求,比如论坛签名或QQ头像等。用QQ截图键可以按尺寸精确截取,一步到位无需再进行后期裁剪了。
按下QQ截图键,按住鼠标不放选取截取范围时,在鼠标上方会有一个信息框显示当前范围的详细信息,其中“矩形大小”就是以像素来表示的图片的尺寸大小,括号内的数字分别表示的是长和高(如图2)。松开鼠标调整截图框时,对照“矩形大小”就可以按需要的尺寸来精确截图范围,然后用鼠标点住截图框将截图框拖到要截取的图片上,双击即可获得所需尺寸的图片了。
图2图片拼贴好帮手
大部分的截图软件一次只能截取一张图片,当要截取多张图片并进行拼贴组合时,就需要一张一张截取全部保存后再进行拼贴操作,非常麻烦。
我们知道用QQ截图键截取的图片可以在任一个可以粘贴图片的程序中使用,这样只需用截图软件进行一次截图操作,剩下的图片用QQ截图键来截取,然后依次粘贴到截图软件的窗口中即可快速进行拼贴操作了,是不是很方便啊。
小提示:QQ截图键无需打开聊天窗口即可使用,截取的图片在任一可粘贴图片的程序窗口中如画图、Word等,使用“粘贴”命令即可使用
Q2: vb2015像qq那样由用户自定义截图区进行截图的代码要怎么写?
'截图时打开这个半透明全屏vb.netqq截屏的无边框窗口vb.netqq截屏,用鼠标拖选边框vb.netqq截屏,双击窗口vb.netqq截屏,调用默认图片软件显示截图。
Public Class Form2
Private Sub Form2_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDoubleClick
Me.Close()
If oldRect Nothing Then
ControlPaint.DrawReversibleFrame(oldRect, Me.BackColor, FrameStyle.Thick)
Dim img As New Bitmap(oldRect.Width, oldRect.Height)
Graphics.FromImage(img).CopyFromScreen(oldRect.X, oldRect.Y, 0, 0, oldRect.Size)
img.Save("c:\cutimg.jpg", Imaging.ImageFormat.Jpeg)
Process.Start("c:\cutimg.jpg")
End If
End Sub
Dim startPoint As Point
Dim curRect As Rectangle
Public oldRect As Rectangle
Dim onRect As Boolean
Private Sub Form2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
onRect = True
startPoint = e.Location
End If
End Sub
Private Sub Form2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If onRect Then
Using Gr As Graphics = CreateGraphics()
If oldRect Nothing Then
ControlPaint.DrawReversibleFrame(oldRect, Me.BackColor, FrameStyle.Thick)
End If
curRect = Rectangle.FromLTRB(startPoint.X, startPoint.Y, e.X, e.Y)
If curRect.Width 0 And curRect.Height 0 Then
ControlPaint.DrawReversibleFrame(curRect, Me.BackColor, FrameStyle.Thick)
oldRect = curRect
End If
End Using
End If
End Sub
Private Sub Form2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
onRect = False
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
oldRect = Nothing
End Sub
Public Sub New()
' 此调用是 Windows 窗体设计器所必需vb.netqq截屏的。
InitializeComponent()
' 在 InitializeComponent() 调用之后添加任何初始化。
ShowInTaskbar = False
Text = ""
ControlBox = False
TopMost = True
WindowState = FormWindowState.Maximized
Opacity = 0.3
End Sub
End Class
Q3: VB截取屏幕
[DllImport("user32.dll", EntryPoint = "GetDC")]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint = "ReleaseDC")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
先找到你要截图的那个窗体的 句柄 然后根据这个句柄得到改窗体的DC 创建一个bitmap 然后填充 得到的bitmap后 显示到picturebox里面
vb.netqq截屏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vba 屏幕截图、vb.netqq截屏的信息别忘了在本站进行查找喔。






