十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
将NewForm设置为全局变量就可以了,如果新建窗口比较多,就设置为数组,例如:
创新互联建站于2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、网站建设、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元泰宁做网站,已为上家服务,为泰宁各地企业和个人服务,联系电话:028-86922220
Public Class Form1
Dim NewForm(10) As Form
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
NewForm(0) = New Form
NewForm(0).Show()
End Sub
End Class
'模块中
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截图与其它截屏和制图软件配合使用,会有意想不到的效果。
获取颜色的RGB值
我们在编辑图片或网页的时候,经常需要获取某种颜色的“RGB值”,所以很多人都安装了第三方的颜色吸取工具。其时用QQ截图键即可获取屏幕上任意颜色的RGB值。
当按下“Ctrl+Shift+A”弹出“截图”提示框时,提示框中的“当前像素RGB”即为当前鼠标屏幕位置的颜色RGB值,将鼠标移动到你想查看的屏幕颜色上即可获得相应的RGB值(如图1)。
图1精确截取图片大小
有时我们对要使用的截图尺寸有严格要求,比如论坛签名或QQ头像等。用QQ截图键可以按尺寸精确截取,一步到位无需再进行后期裁剪了。
按下QQ截图键,按住鼠标不放选取截取范围时,在鼠标上方会有一个信息框显示当前范围的详细信息,其中“矩形大小”就是以像素来表示的图片的尺寸大小,括号内的数字分别表示的是长和高(如图2)。松开鼠标调整截图框时,对照“矩形大小”就可以按需要的尺寸来精确截图范围,然后用鼠标点住截图框将截图框拖到要截取的图片上,双击即可获得所需尺寸的图片了。
图2图片拼贴好帮手
大部分的截图软件一次只能截取一张图片,当要截取多张图片并进行拼贴组合时,就需要一张一张截取全部保存后再进行拼贴操作,非常麻烦。
我们知道用QQ截图键截取的图片可以在任一个可以粘贴图片的程序中使用,这样只需用截图软件进行一次截图操作,剩下的图片用QQ截图键来截取,然后依次粘贴到截图软件的窗口中即可快速进行拼贴操作了,是不是很方便啊。
小提示:QQ截图键无需打开聊天窗口即可使用,截取的图片在任一可粘贴图片的程序窗口中如画图、Word等,使用“粘贴”命令即可使用
1,用VB截取DirectX窗口内容的程序,最好能够直截取窗口的内容,不要窗口标题栏VB.NET中利用 GDI 就可以截图,DX 也不例外。 先声明 Imports System.
用CType转成你的窗口类型就可以引用了
比如你的子窗口类是MyForm
单击父窗口Button2显示它包含字符串MyPath的内容的代码如下
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox(CType(Me.ActiveMdiChild, MyForm).MyPath)
End Sub
非常简单.
先用 GetForegroundWindow 来获取当前活动窗口的句柄,然后用 GetWindowText 来获得这个句柄的标题..就可以了,
我给你写了个代码 你运行看下就明白了..
在窗体上创建一个timer控件(用来随时检测活动窗口的标题),然后复制下面的代码 运行 就看到了...哥们,最好追加点分哦~~ o(∩_∩)o...~~
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Sub Form_Load()
Timer1.Interval = 500
Timer1.Enabled = True
Me.Width = Screen.Width / 2
End Sub
Private Sub Timer1_Timer()
Dim hd As Long, tt As String
tt = Space(255)
hd = GetForegroundWindow
GetWindowText hd, tt, 256
Cls
Print "活动窗口标题是 " tt
End Sub
'在窗体上画一个Timer控件,设置其Interval属性为100
'把代码复制到Form1的代码窗口中
'获得活动窗口句柄的API
Private
Declare
Function
GetForegroundWindow
Lib
"user32"
()
As
Long
'获得窗口区域结构的API
Private
Declare
Function
GetWindowRect
Lib
"user32"
(ByVal
hwnd
As
Long,
wndRect
As
RECT)
As
Long
Private
Type
RECT
'自定义区域结构类型
x
As
Long
y
As
Long
Right
As
Long
Bottom
As
Long
End
Type
Dim
ActiveWindowRECT
As
RECT
'用於保存活动窗口区域的结构
Dim
ActiveWindowHwnd
As
Long
'活动窗口的句柄
Private
Sub
Timer1_Timer()
ActiveWindowHwnd
=
GetForegroundWindow
'获得活动窗口的句柄
GetWindowRect
ActiveWindowHwnd,
ActiveWindowRECT
'获得活动窗口的区域并保存在
ActiveWindowRECT
变量中
'在窗口上输出信息
Me.Cls
"活动窗口的坐标是("
ActiveWindowRECT.x
","
ActiveWindowRECT.y
")"
End
Sub