我最近接触webbrowers 这个控件比较多,感觉用起来比较顺手吧。可以做很多操作。
貌似很多网络模拟有时候都内置这个控件或者类似的控件,但这样子速度就不能跟那些单纯用API 构建数据包比了。
我一般网页模拟都会用自己封装的WININET API进行访问。
webbrower控件可以加载本地html ,这个东西就非常好了。我们可以提取网页一些js 结合html 进行各种调用,这样就完全得到沃恩想要东西,可以任意作何。
我们可以加载我么需要js进行各种调用。
注意我们使用时候,一定要webbrower控件加载html加载完毕,如果没有加载完毕就调用一个方法会失败。这个我测试好久才方向。
我们可以在html构建一个特许函数用来被客户端任意调用,先看一下这个js例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<html> <head> <title> hello world </title> <script type= "text/javascript"
src= "raphael.js" ></script>
</head> <body> <script>
function hh(a)
{
//alert(a);
var f1=( new
Function(a));
return
f1();
}
</script> </body> <html> |
客户端调用
1
2
3
4
5
6
|
CComVariant comKey2; CComVariant func2 = Pro.c_str(); spScript.Invoke1(L "hh" ,&func2,&comKey2);
string InfDecKey= _com_util::ConvertBSTRToString( comKey2.bstrVal); |
客户端只要传入字符串就可以构建成任意函数,这个相当的灵活。
我们webbrows 加载一次后就不需要再加载,速度基本比原始调用没有任何差别了。
看网上一些写的博客,对自己项目开发有一些帮助,还是感谢那些经常写博客人,这样就会减少别人走一些弯路,所以以后我自己也要多写一些技术的积累。