有没有精通WebBrowser和异步的高手?请进

starj1 2009-10-01 09:11:26
写网页游戏登录器的时候,不执行脚本的时候一点事都没有.但开始挂机以后,执行几次脚本后就出错.
出错的地方比较古怪,因为出错的位置和信息让我没法理解和真正定位.

出错的地方在Control.Invoke()方法调用的地方,我并没有使用任何调用参数,但出错的信息却是Index out range...

现把整个解决方案打包上传,请高手不吝指教.
http://download.csdn.net/source/1710912

压缩包里已包含有游戏ID和脚本.
谢谢!

解决后自己说要要多少分,只要我有.
...全文
367 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
starj1 2009-10-10
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 yuxuanji 的回复:]
调试时foreach 报异常,看了看这个方法的所有引用,就发现一个地方用到,而且只用了第一个索引。
上面的方法貌似没必要遍历所有CPU
[/Quote]

所有对GetCPUTemprature()的引用都可以忽略,那只是解决方案里附加的东西,不是主要的.
starj1 2009-10-10
  • 打赏
  • 举报
回复
zanfeng:
谢谢!
足球中国 2009-10-10
  • 打赏
  • 举报
回复
private int GetLabelIndex(System.Text.RegularExpressions.Regex reLabel, string[] sScriptContent, string sLabel)
{
int I = -1;
while (I < sScriptContent.Length)
{
System.Text.RegularExpressions.Match match = reLabel.Match(sScriptContent[I]);
if (match != null)
if (match.Groups["Label"].Value == sLabel)
break;
}
return I;
}

这个函数报的错。错误因为你搞了个-1。

不是多大的错误。不过你的开发有问题。
try catch用的太少了。
五行代码一个断言,在最底端抛出错误。(一个C#超高手说的。)
你的代码里好象不只是这一个错误。
我在运行时,还发现有错误。
在程序退出时。
starj1 2009-10-09
  • 打赏
  • 举报
回复
再顶上去下...
wxd024 2009-10-09
  • 打赏
  • 举报
回复
帮顶
LutzMark 2009-10-09
  • 打赏
  • 举报
回复
 /// <summary>
/// 取得所有CPU的温度
/// </summary>
/// <returns></returns>
public Int32[] GetCPUTemprature()
{
System.Management.ManagementObjectCollection moc = mos.Get();
System.Collections.ArrayList alT = new System.Collections.ArrayList();
foreach (System.Management.ManagementObject mo in mos.Get())
alT.Add((Convert.ToInt32(mo.GetPropertyValue("CurrentTemperature")) - 2732) / 10);
Int32[] iTemperature = new Int32[alT.Count];
alT.CopyTo(iTemperature);
return iTemperature;
}


调试时foreach 报异常,看了看这个方法的所有引用,就发现一个地方用到,而且只用了第一个索引。
上面的方法貌似没必要遍历所有CPU
    
//取得CPU温度
int iCPUTemerature = hoCPUTemperature.GetCPUTemprature()[0];


椅子 2009-10-07
  • 打赏
  • 举报
回复
根据经验来看
使用sniffer工具,抓尾巴的方法,get request很快就能搞定
post request,100个左右的input,大概需要半天能搞定

如此效率可以接受。

需要技术基础:能根据所需功能对目标网页进行改写(调试时大大需要),script中级水平吧
椅子 2009-10-07
  • 打赏
  • 举报
回复
使用webhttprequest和使用webbrowser的本质区别:

前者需要自己进行网页中的运算,比如script,后者则不需要

如果目标网页的script过多过大,仅仅使用webhttpreqeust,会非常麻烦。

对http协议比较熟悉的话,可以试一下这个方法:
抓尾巴

sniffer某个过程,比如摘果子的过程,看摘果子向webserver发出了什么样的请求,再根据这个请求,结合目标网页,来分析,这个请求,是否经过了网页运算,如何运算。

这样可减轻分析网页的过程,毕竟很多script代码都是其他功能所需。

真相重于对错 2009-10-07
  • 打赏
  • 举报
回复
你的代码大致看了一下,在hardwareop。。。。类里,取cpu温度的代码有问题,可能是查询语句问题,返回的managercollection 无法foreach
我对wmi不熟..,具体的不好说

24K純帥 2009-10-07
  • 打赏
  • 举报
回复
偶也来顶下。。
starj1 2009-10-07
  • 打赏
  • 举报
回复
补充一下,点挂机前先把人物移动到铜钱的位置上才不会出错.
starj1 2009-10-07
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 zanfeng 的回复:]
试了好长时间没有出错。
也不太明白你的错误是怎么产生的??
脚本点过好象并没有看到有什么用处??
[/Quote]

问一下,你是在什么环境下测试的?

挂机你点的是:操作--高级操作--挂机--和林铜钱吗?
足球中国 2009-10-07
  • 打赏
  • 举报
回复
试了好长时间没有出错。
也不太明白你的错误是怎么产生的??
脚本点过好象并没有看到有什么用处??
starj1 2009-10-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 hdt 的回复:]
你的代码大致看了一下,在hardwareop。。。。类里,取cpu温度的代码有问题,可能是查询语句问题,返回的managercollection 无法foreach
我对wmi不熟..,具体的不好说
[/Quote]

我在2005环境里使用Hardwareop那个类没问题的.如果出现问题可以把这个类的引用删掉再调试,不会影响解决方案的最终目标.谢谢.

[Quote=引用 20 楼 yizia 的回复:]
根据经验来看
使用sniffer工具,抓尾巴的方法,get request很快就能搞定
post request,100个左右的input,大概需要半天能搞定

……[/Quote]

我对sniffer七窍通了六窍……
starj1 2009-10-06
  • 打赏
  • 举报
回复
晕死,帮人不少,要人帮总是那么少的人肯帮........
dsamsofter 2009-10-06
  • 打赏
  • 举报
回复
mark!
starj1 2009-10-06
  • 打赏
  • 举报
回复
是我的解决方案太过简单,以致于让高手不屑于出手?
netstray 2009-10-06
  • 打赏
  • 举报
回复
学习学习
lnwuyaowei 2009-10-06
  • 打赏
  • 举报
回复
关注.
starj1 2009-10-06
  • 打赏
  • 举报
回复
还有高手没有啊?急死了...
加载更多回复(9)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧