10 个解决方案
#1
后来我用另外一个程序加载webbrowser就发现恢复正常了,但是如果webbrowser被设置为隐藏的话就无法截图
#2
关于webbrowser还有很多疑问,如果webbrowser被设置为visiable属性后,则无法打开连接,网页里所带的flash的句柄也得不到了,还有就是如果窗体大小比webbrowser大小小,那么webbrowser的客户区dc根本无法显示完整,无法完全更新重画所有客户区,只能重画显示出来的那部分客户区
#3
我使用下面的程序来后台截图webbrowser的画面
Dim pp As RECT
pp.Left = 0
pp.Top = 0
pp.Right = 1136
pp.Bottom = 656
Hw = GetFlashHw2
InvalidateRect Hw, pp, 1
MsgBox RedrawWindow(Hw, pp, 0, &H10 Or &H100 Or &H2 Or 1 Or 4)
UpdateWindow Hw
Picture1.Width = WebBrowserForm.WebBrowser1.Width: Picture1.Height = WebBrowserForm.WebBrowser1.Height
Call PrintWindow(Hw, Picture1.hDC, 0)
Picture1.Refresh
SavePicture Picture1.Image, App.Path + "\SilenceNet.Bmp"
如果webbrowserform这个窗体是可见的时候。截图是正确的,但是当webbrowserform被我设置为visiable=false属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图
Dim pp As RECT
pp.Left = 0
pp.Top = 0
pp.Right = 1136
pp.Bottom = 656
Hw = GetFlashHw2
InvalidateRect Hw, pp, 1
MsgBox RedrawWindow(Hw, pp, 0, &H10 Or &H100 Or &H2 Or 1 Or 4)
UpdateWindow Hw
Picture1.Width = WebBrowserForm.WebBrowser1.Width: Picture1.Height = WebBrowserForm.WebBrowser1.Height
Call PrintWindow(Hw, Picture1.hDC, 0)
Picture1.Refresh
SavePicture Picture1.Image, App.Path + "\SilenceNet.Bmp"
如果webbrowserform这个窗体是可见的时候。截图是正确的,但是当webbrowserform被我设置为visiable=false属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图
#4
webbrowser里的控件没有句柄吧
#5
webbrowser自带有绘制内部元素的接口
#6
顶起来, 这个问题我也想知道, 只要后台鼠标消息就会造成这个问题
文本框也会呢。。呵呵
文本框也会呢。。呵呵
#7
笛子大师来了
,不明白,怎么要断3次的
#8
webbrowser的问题不只这点,比如打开https的地址比如支付宝,就没法用documentcomplete事件判断加载完毕
如果后台点几登陆框的话,密码那里后台点几输入无效,很多问题呢
如果后台点几登陆框的话,密码那里后台点几输入无效,很多问题呢
#9
现在研究了很多天,终于明白了是因为线程原因,如果webbrowser和窗体属于同一个线程,则会后很多问题出现,如果是分开线程,那么就会好许多,但是还是无法解决截图问题。
#10
现在问题又来了,我已经知道在vb中创建线程的方法,但是无法使用线程创建一个webbrowser或者一个窗体,并且让这个webbrowser或窗体由这个线程中运行,就算创建新线程执行load formX命令,系统也只是在执行这个命令的时候使用另外一个线程,但是执行完后,formX还是会有原先的线程来运行,执行load formX这个命令的那个线程就结束了,我想知道怎么才能让新创建的线程运行一个Form或者webbrowser?
#1
后来我用另外一个程序加载webbrowser就发现恢复正常了,但是如果webbrowser被设置为隐藏的话就无法截图
#2
关于webbrowser还有很多疑问,如果webbrowser被设置为visiable属性后,则无法打开连接,网页里所带的flash的句柄也得不到了,还有就是如果窗体大小比webbrowser大小小,那么webbrowser的客户区dc根本无法显示完整,无法完全更新重画所有客户区,只能重画显示出来的那部分客户区
#3
我使用下面的程序来后台截图webbrowser的画面
Dim pp As RECT
pp.Left = 0
pp.Top = 0
pp.Right = 1136
pp.Bottom = 656
Hw = GetFlashHw2
InvalidateRect Hw, pp, 1
MsgBox RedrawWindow(Hw, pp, 0, &H10 Or &H100 Or &H2 Or 1 Or 4)
UpdateWindow Hw
Picture1.Width = WebBrowserForm.WebBrowser1.Width: Picture1.Height = WebBrowserForm.WebBrowser1.Height
Call PrintWindow(Hw, Picture1.hDC, 0)
Picture1.Refresh
SavePicture Picture1.Image, App.Path + "\SilenceNet.Bmp"
如果webbrowserform这个窗体是可见的时候。截图是正确的,但是当webbrowserform被我设置为visiable=false属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图
Dim pp As RECT
pp.Left = 0
pp.Top = 0
pp.Right = 1136
pp.Bottom = 656
Hw = GetFlashHw2
InvalidateRect Hw, pp, 1
MsgBox RedrawWindow(Hw, pp, 0, &H10 Or &H100 Or &H2 Or 1 Or 4)
UpdateWindow Hw
Picture1.Width = WebBrowserForm.WebBrowser1.Width: Picture1.Height = WebBrowserForm.WebBrowser1.Height
Call PrintWindow(Hw, Picture1.hDC, 0)
Picture1.Refresh
SavePicture Picture1.Image, App.Path + "\SilenceNet.Bmp"
如果webbrowserform这个窗体是可见的时候。截图是正确的,但是当webbrowserform被我设置为visiable=false属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图
#4
webbrowser里的控件没有句柄吧
#5
webbrowser自带有绘制内部元素的接口
#6
顶起来, 这个问题我也想知道, 只要后台鼠标消息就会造成这个问题
文本框也会呢。。呵呵
文本框也会呢。。呵呵
#7
笛子大师来了
,不明白,怎么要断3次的
#8
webbrowser的问题不只这点,比如打开https的地址比如支付宝,就没法用documentcomplete事件判断加载完毕
如果后台点几登陆框的话,密码那里后台点几输入无效,很多问题呢
如果后台点几登陆框的话,密码那里后台点几输入无效,很多问题呢
#9
现在研究了很多天,终于明白了是因为线程原因,如果webbrowser和窗体属于同一个线程,则会后很多问题出现,如果是分开线程,那么就会好许多,但是还是无法解决截图问题。
#10
现在问题又来了,我已经知道在vb中创建线程的方法,但是无法使用线程创建一个webbrowser或者一个窗体,并且让这个webbrowser或窗体由这个线程中运行,就算创建新线程执行load formX命令,系统也只是在执行这个命令的时候使用另外一个线程,但是执行完后,formX还是会有原先的线程来运行,执行load formX这个命令的那个线程就结束了,我想知道怎么才能让新创建的线程运行一个Form或者webbrowser?