请问在vb6中使用webbrowser的问题,很困扰

时间:2021-04-29 23:14:39
因为要使用webbrowser播放flash游戏,但是发现不知道为什么,如果后台发送鼠标点击信息或者鼠标滚轮信息,我用spy++发现有时候会隔很久flash窗口才会收到,或者在后台的时候根本就不会收到信息,一直到把webbrowser切换到前台才能收到。而且很多时候,后台鼠标点击的同时还会把flash窗口直接激活到前台来,请问这个是为什么原因?我在其他浏览器里面对同样地址的flash使用后台鼠标点击就完全没问题,就只有在webbrowser里才会发生这个事情,而且webbrowser无法使用后台截图功能

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属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图

#4


webbrowser里的控件没有句柄吧

#5


webbrowser自带有绘制内部元素的接口

#6


顶起来, 这个问题我也想知道, 只要后台鼠标消息就会造成这个问题

文本框也会呢。。呵呵

#7


引用 5 楼 xxyj6450 的回复:
webbrowser自带有绘制内部元素的接口
笛子大师来了 请问在vb6中使用webbrowser的问题,很困扰,不明白,怎么要断3次的 请问在vb6中使用webbrowser的问题,很困扰

#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属性后,就截图是一片黑色了,请问如何才可以在窗体被隐藏的时候截图

#4


webbrowser里的控件没有句柄吧

#5


webbrowser自带有绘制内部元素的接口

#6


顶起来, 这个问题我也想知道, 只要后台鼠标消息就会造成这个问题

文本框也会呢。。呵呵

#7


引用 5 楼 xxyj6450 的回复:
webbrowser自带有绘制内部元素的接口
笛子大师来了 请问在vb6中使用webbrowser的问题,很困扰,不明白,怎么要断3次的 请问在vb6中使用webbrowser的问题,很困扰

#8


webbrowser的问题不只这点,比如打开https的地址比如支付宝,就没法用documentcomplete事件判断加载完毕
如果后台点几登陆框的话,密码那里后台点几输入无效,很多问题呢

#9


现在研究了很多天,终于明白了是因为线程原因,如果webbrowser和窗体属于同一个线程,则会后很多问题出现,如果是分开线程,那么就会好许多,但是还是无法解决截图问题。

#10


现在问题又来了,我已经知道在vb中创建线程的方法,但是无法使用线程创建一个webbrowser或者一个窗体,并且让这个webbrowser或窗体由这个线程中运行,就算创建新线程执行load formX命令,系统也只是在执行这个命令的时候使用另外一个线程,但是执行完后,formX还是会有原先的线程来运行,执行load formX这个命令的那个线程就结束了,我想知道怎么才能让新创建的线程运行一个Form或者webbrowser?