604
社区成员
发帖
与我相关
我的任务
分享
void __fastcall TForm1::Button1Click(Tobject *Sender)
WideString MainMid;
BSTR MainPage;
MainMid="http://www.baidu.com";
MainPage=MainMid.c_bstr();
CppWebBrowser1->Navigate(MainPage,NULL,NULL,NULL,NULL);
}
CppWebBrowser1->Free();
CppWebBrowser1->Navigate(WideString("about:blank"),NULL,NULL,NULL,NULL);
/*
和和,我也认为,这也是个旁门左道,但是经过一天的测试运行,证明致少,在对付TWebBrowser或TCPPTWebBrowser内存占用越来越大的问题上,这玩的确有了非常实际的效果。
我设计的这个程序实际上是一个纯网页游戏的外挂,这个外挂的原理很简单,你不是是个纯网页的游戏吗?我就定时取网页的html代码进行分析,然后根据需要自动后台点击html页面上的按钮或链接。
观察发现,每回刷新或新打开一个html(php)页面后,程序占用内存就会增大2个M左右(那个游戏的页面里有一些图像和java吃了内存),每一回合下来,就是10M以上,开始,我以为是我的代码的问题,有什么玩意儿new出来了却没释放,但想方,反复查代码,把能释放的全释放,最后,为了能放干净,大改特改,使用动态生成、销毁TCPPTWebBrowser,还是根本没用!
Waiting4you给出的函数当时我就潜意识感觉有点儿偏门,不大象是正规方法,我猜这种内存的回收一定还不是很完全。网上流行的说法:TWebBrowser存在缺陷,应该不是空穴来风。
不过,即然连老妖都出来了,而且没给出好的方法,估计在当前,只能这样去解决了。
*/
/*
在这儿我猜测还有一种可能,因为IE嵌入了我们的win的内核,在TWebBrowser使用过程中,我们的win另行进行了内存的分配,而我们的BCB做出的程序无法对那一部分内存进行有效的控制。
而SetProcessWorkingSetSize却能通知win将那些内存给释放。
本人的这个外挂是个可以多开的玩意,在不使用SetProcessWorkingSetSize前,单个程序在运行12小时后,每个程序吃内存都在120M以上,而现在,12小时后吃内存不到50M。今天晚上再进行12小时测试试试。
能连继挂24小时目标就算达到了,呵呵。
本来想连挂2天试试的,但在挂的过程中发现了好几个问题,正边测试边改中。
*/
/*
其实是个无聊的小网页游戏,也许挂两天就不挂了。最重要的是,通过对它的练习,更好的掌握一些编程技术。
*/