前天发的贴子,截取一个应用程序窗口,但该窗口部分被遮住。参照 www.fengyuan.com网上的例子已经解决。
谢谢大家的支持,这个问题已经已经解决,但是窗口如果被最小化后,还是不能截图,在不把窗口还原的情况下,有没有什么办法截图?
关于MoveWindow、SetWidowPos把窗口移到屏幕外面,我都已经试过了,可惜的是这两个API都必须先把窗口还原后才能移动,有没有办法不还原窗口又能截图的好办法?
谢谢大家的支持,这个问题已经已经解决,但是窗口如果被最小化后,还是不能截图,在不把窗口还原的情况下,有没有什么办法截图?
关于MoveWindow、SetWidowPos把窗口移到屏幕外面,我都已经试过了,可惜的是这两个API都必须先把窗口还原后才能移动,有没有办法不还原窗口又能截图的好办法?
解决方案 »
- 求助!登录密码,写注册表问题!
- SOCKET接收到一段中文后,直接写入到文件显示正常,但是在程序里面使用确是乱码?
- 写木马到底用mfc好还是api好?
- MFC基础
- DrawDibDraw 显示问题
- 怎么取得图象放大(缩小)的后的数据?
- 能不能只改变程序中的窗口标题栏的高度而不影响系统(即其它程序窗口的标题栏高度不受影响)?(很急!)
- 我不知道如何动态改变控件在窗体的位置和大小?
- 求助,DLL字符串返回问题
- kali linux 在wingide5的情况下只能看到这个
- ******用单线程模拟多任务程序*******
- INSTALL SHIELD怎么才能把那个INSTALL SHIELD的字符去掉呢?
说明一点,我的主程序在退出时自动释放钩子、释放DLL。为什么还会出现这个问题,高手们,帮帮我,急!!!!!!!!!!!!!!!!!!!!
你新建一个工程,放入下面几行代码运行看看,当你用鼠标点击窗口就可以抓图了Private Declare Function GetDesktopWindow Lib "user32" () 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 Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Click()
Dim saveTime As Long
Me.WindowState = 1
saveTime = GetTickCount
Do
DoEvents
Loop While GetTickCount - saveTime < 100
Me.AutoRedraw = True
BitBlt Me.hDC, 0, 0, Screen.Width / 15, Screen.Height / 15, _
GetWindowDC(GetDesktopWindow), 0, 0, vbSrcCopy
Me.Refresh
Me.WindowState = 0
End Sub
呵呵,不过我还是很感谢你!
希望我们能一起研究研究这个课题!
第二个问题你的DLL没有在其他进程中创建窗口什么的吧?如果创建了必须要关闭掉之后,才能释放DLL。我遇到过这种问题。
第二个问题你的DLL没有在其他进程中创建窗口什么的吧?如果创建了必须要关闭掉之后,才能释放DLL。我遇到过这种问题。----------------------------------------------------------------------------------DLL里面没有创建窗口
或者打印之前判断一下窗口是否最小化,如果是就提示用户或者强制将窗口恢复,在打印.--------------------------------------------------------------------------------我的目的就是不要将窗口打开,而进行截图!