Delphi WebBrowser调用WebSocket 服务
Posted 丹心石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi WebBrowser调用WebSocket 服务相关的知识,希望对你有一定的参考价值。
webSocket Demo
- 使用工具:WebBrowser
- 传输参数:delphi 给js 赋值JSON字符串,js 接收到后通过JSON.parse()方法转换成JSON对象,然后根据需要参数进行读取, Delphi 通过SuperObject 处理JSON数据
- 调用JSON方法:WebBrowser1.oleObject.document.parentWindow.execScript(\'js方法名\',\'JavaScript\')
- 设置js变量 :WebBroser1.oleObject.document.Script.str:=\'newvalue\'; str为js定义变量
- Delphi 触发html 中的Button 单击事件:WebBrowser1.OleObject.document.getElementById("按钮id").click;
unit uWebSocketDemo;
webSocket Demo
使用工具:WebBrowser
传输参数:delphi 给js 赋值JSON字符串,js 接收到后通过JSON.parse()方法转换成JSON对象,然后根据需要参数进行读取,
Delphi 通过SuperObject 处理JSON数据
调用JSON方法:WebBrowser1.oleObject.document.parentWindow.execScript(\'js方法名\',\'JavaScript\')
设置js变量 :WebBroser1.oleObject.document.Script.str:=\'newvalue\'; str为js定义变量
Delphi 触发html 中的Button 单击事件:WebBrowser1.OleObject.document.getElementById("按钮id").click;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
WebBrowser1: TWebBrowser;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
Private declarations
public
Public declarations
end;
var
Form1: TForm1;
implementation
$R *.dfm
uses superobject,ShellAPI;
var
url:string;
jo:TSuperObject;
path:string;
const
sStu=\'"title":"我的websocket","content":"websocket测试客户端"\';
procedure TForm1.Button1Click(Sender: TObject);
begin
webbrowser1.Navigate(url);
WebBrowser1.Silent:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
url:=ExtractFilePath(ParamStr(0))+\'demo-dip.html\';
path:=ExtractFilePath(ParamStr(0))+\'\\HOAssistant\\HOAssistant\\HOAssistant.exe\'
end;
procedure TForm1.Button2Click(Sender: TObject);
var
obj:OleVariant;
begin
WebBrowser1.OleObject.document.Script.str:=sStu;
WebBrowser1.OleObject.document.parentWindow.execScript(\'ftest()\',\'JavaScript\');
Memo1.Lines.Add(WebBrowser1.OleObject.document.Script.str);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.getElementById(\'btnlogin\').click;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.getElementById(\'btnpatient\').click;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.getElementById(\'btnbingan\').click;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.getElementById(\'btnexit\').click;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
webbrowser1.Navigate(url);
WebBrowser1.Silent:=True;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
ShellExecute(Handle,\'open\',PAnsiChar(path),nil,nil,SW_SHOWNORMAL);
end;
end.
DELPHI中的webbrowser如何有效防止内存疏漏
根据网上给出的修改文件重新编译的办法可以有效减少,但仍然未能杜绝。我做的程序仍然是过一段时间就大量占用内存,烦死了。
有没有办法彻底解决这个问题?若是要控件解决,麻烦给个控件地址,谢谢。
我没怎么写代码,一般就是打开一个链接,然后用try
wb1.OleObject.document.all.item('DDDDD').innerText:=*******;excpet end;
这类的
或者自动刷新的页面。一刷新就占用多几k到几十K的内存,晕死哦
但占用内存多,那是没办法的。。除非你用底层的WINSOCK自己写个GET HTTP 参考技术A 没听说webbrowser会造成内存泄露啊,是不是你调用了它的接口又没释放呢?检查一下你的代码吧
例如:
finally
Element._Release
end;
以上是关于Delphi WebBrowser调用WebSocket 服务的主要内容,如果未能解决你的问题,请参考以下文章
delphi中WebBrowser控件怎么模拟点击网页框架中的按钮button?