Delphi7中WebBrowser控件的bug及解决方案 .
来源:互联网 发布:程序员 必备 硬件 编辑:程序博客网 时间:2024/06/05 14:26
最近笔者在开发泛东协同管理系统客户端的时候,使用了Delphi中的WebBrowser控件,相信这个控件,是使用最广泛的控件之一,几乎所有与Internet相关的产品,都离不开这个控件。但是这Delphi中的WebBrowser控件,在使用过程中,发现三个Bug。
1、如果打开的页面中,有通过javascript关闭页面的,只会把控件关闭,包含控件的窗口仍然存在,并且手工关闭窗口时,出现问题;
2、打开的页面,通过鼠标选定的内容,不能复制,无论是通过右键菜单复制,还是通过Ctrl+C快捷键复制,都不可以;
3、打开有WebBrowser控件的窗口,关闭窗口之后,内存得不到释放(此Bug在其他语言中也存在)。
以上三个问题,是必须解决的。通过查找资料及自己的试验,终于找到了解决办法,将解决方案总结如下:
问题1解决方案:
先声明消息处理函数:
procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
在form create时
Application.OnMessage := ApplicationMessage;
函数内容如下:
procedure tfrmhtmlbrowser.ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
var
wb: tembeddedwb;
begin
WB := GetVisibleWebBrowser; //取当前webbrowser控件
if (Msg.message = WM_CLOSE) and (Msg.hwnd = Wb.Handle) then
begin
Self.Close ();//关闭webbrowser后,把相应的窗口关闭
end
else
inherited;
end;
问题2解决方案:
引用:uses Activex;
把以下代码放在有WebBrowser控件的窗口最后一个End前面:
initialization
oleinitialize(nil);
finalization
oleuninitialize;
问题3解决方案:
修改Delphi的控件源码:OleCtrls.pas
修改此文件中的函数:GetIDispatchProp、GetIUnknownProp
修改如下:
function TOleControl.GetIDispatchProp(Index: Integer): IDispatch;
var
Temp: TVarData;
begin
GetProperty(Index, Temp);
//Result := IDispatch(Temp.VDispatch);
Pointer(Result) := Temp.VDispatch;
end;
function TOleControl.GetIUnknownProp(Index: Integer): IUnknown;
var
Temp: TVarData;
begin
GetProperty(Index, Temp);
//Result := IUnknown(Temp.VUnknown);
Pointer(Result) := Temp.VUnknown;
end;
修改之后,重新编译。
以上是Delphi中WebBrowser控件Bug的解决办法,希望对大家有帮助!
- Delphi7中WebBrowser控件的bug及解决方案
- Delphi7中WebBrowser控件的bug及解决方案 .
- Delphi中WebBrowser控件的3个bug及解决方案
- <总结>delphi WebBrowser控件的使用中出现的bug
- delphi7找不到TBDEClientDataSet控件的解决方案
- delphi7找不到TBDEClientDataSet控件的解决方案
- delphi7找不到TBDEClientDataSet控件的解决方案
- Delphi7中存储unicode的BUG?
- Delphi7中存储unicode的BUG
- delphi7及控件安装
- 修改WebBrowser控件的内核解决方案
- Delphi7.0破解及常用三方控件的安装
- Winform中WebBrowser控件的使用技巧
- c#中WebBrowser控件的使用方法
- C#中WebBrowser控件的版本问题
- C#项目中WebBrowser控件的应用
- 关于 WinForm中webbrowser控件的使用
- 【.Net码农】修改WebBrowser控件的内核解决方案
- C++中继承的成员变量的覆盖/重写
- 如果在IIS中没有将虚拟目录配置为应用程序,则可能导致此错误
- SQL学习之三
- Delphi7 Webbrowser制作网页表单自动提交器按步分析(1)
- codeforces134 div1 B
- Delphi7中WebBrowser控件的bug及解决方案 .
- 大数据时代
- Android测试教程(17):Monkey 命令行工具
- 6410接IIC芯片24c02电路图
- Eclipse快捷键指南
- java 魔方小程序。只拧红、蓝、白三色。大概8秒内复原。拧1亿次左右
- C/C++数组名与指针区别深入探索
- hdu 1002 A + B Problem II 万能大数模板再次成功应用
- Android UI设计原则