本帖最后由 starj1 于 2009-10-03 09:06:02 编辑

解决方案 »

  1.   

    没看解决方案,
    你看下DCOM方面的技术能帮到你否?
    比WEBBORWER要底层些。
      

  2.   

    从来不使用webbrowser。如果需要让web服务器听你的指挥,针对http编程(HttpWebRequest)编程就可以了。
      

  3.   

    你可以不可以先在另外一个进程登录,然后再将结果直接传递给你的webbroser的环境变量中?
      

  4.   


    那样的话,让我编程解释Html?晕了...
    不懂你指的结果是什么?另外,这个登录器的目的是:可以在登录完以后直接玩游戏,没时间的时候可以挂机.所以你的建议在这个解决方案里是不合适的.谢谢.
      

  5.   

    你的代码大致看了一下,在hardwareop。类里,取cpu温度的代码有问题,可能是查询语句问题,返回的managercollection 无法foreach
    我对wmi不熟..,具体的不好说
      

  6.   

    使用webhttprequest和使用webbrowser的本质区别:前者需要自己进行网页中的运算,比如script,后者则不需要如果目标网页的script过多过大,仅仅使用webhttpreqeust,会非常麻烦。对http协议比较熟悉的话,可以试一下这个方法:
    抓尾巴sniffer某个过程,比如摘果子的过程,看摘果子向webserver发出了什么样的请求,再根据这个请求,结合目标网页,来分析,这个请求,是否经过了网页运算,如何运算。这样可减轻分析网页的过程,毕竟很多script代码都是其他功能所需。
      

  7.   

    根据经验来看
    使用sniffer工具,抓尾巴的方法,get request很快就能搞定
    post request,100个左右的input,大概需要半天能搞定如此效率可以接受。需要技术基础:能根据所需功能对目标网页进行改写(调试时大大需要),script中级水平吧
      

  8.   


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

  9.   

     /// <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];
      

  10.   


    所有对GetCPUTemprature()的引用都可以忽略,那只是解决方案里附加的东西,不是主要的.
      

  11.   

            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#超高手说的。)
    你的代码里好象不只是这一个错误。
    我在运行时,还发现有错误。
    在程序退出时。