搜索
查看: 36410|回复: 41

模拟键盘鼠标玩网游的过程(待续)

    [复制链接]

10

主题

172

帖子

1010

积分

四级会员

男人,表里如一

Rank: 6Rank: 6

积分
1010
QQ
发表于 2010-11-30 22:52:32 | 显示全部楼层 |阅读模式
本帖最后由 ak47xxx 于 2010-12-31 08:55 编辑

近来从股市里退出了,开始做网游的外挂。在这把过程记录下来,与大家共分享。不会CE,不会OD,所以我只能选择用模拟键盘鼠标的方法来实现我的自动化。这过程肯定很慢也很累,因为我是初次涉足。知识面不够,慢慢摸索,慢慢记录。
先记录下,以后慢慢补充,算是学习笔记吧。
目标已经确定,新内测的网游《梦幻聊斋》。   随便占个坑,怎么说也是此版的第一帖啊。

========12月1日记录========
今天开始学习如何找到游戏窗口的窗口句柄、进程ID和线程ID。虽然可以直接用工具就能获取,不过考虑到将来制作出来的程序供别人使用时,别人不可能也配备有相对的工具,所以需要学习如何写好代码,由程序自行获取对应的值。
参考了范例中的WINSPY,在经过十几次的出错和修改后,得出代码如下:

  1. import win.ui;
  2. import winex;
  3. /*DSG{{*/
  4. var winform = win.form(parent=...; text="aardio Form";right=335;bottom=247 )
  5. winform.add(
  6. edit4={ bottom=184;color=0;right=328;left=160;top=160;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );z=8;text="edit4";edge=1;cls="edit" };
  7. edit5={ bottom=144;right=328;left=152;top=128;font=LOGFONT( name="宋体";h=-12 );z=11;text="edit5";edge=1;cls="edit" };
  8. edit={ bottom=56;right=312;left=152;top=40;font=LOGFONT( name="宋体";h=-12 );z=2;text="edit";edge=1;cls="edit" };
  9. static={ bottom=64;color=0;right=128;left=24;top=40;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );transparent=1;align="center";text="窗口句柄:";z=1;cls="static" };
  10. static2={ bottom=96;color=0;right=112;left=24;top=72;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );transparent=1;align="center";text="线程ID:";z=3;cls="static" };
  11. static4={ bottom=184;color=0;right=160;left=8;top=160;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );z=9;text="查找窗口文本:";transparent=1;cls="static" };
  12. static3={ bottom=128;color=0;right=112;left=24;top=104;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );transparent=1;align="center";text="进程ID:";z=4;cls="static" };
  13. edit3={ bottom=120;right=312;left=152;top=104;font=LOGFONT( name="宋体";h=-12 );z=6;text="edit3";edge=1;cls="edit" };
  14. button={ bottom=232;color=0;text="获取";left=144;top=200;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );z=7;right=264;cls="button" };
  15. static5={ transparent=1;bottom=152;color=0;right=120;left=16;top=128;font=LOGFONT( name="宋体";h=-19;out=3;family=2;weight=700;clip=2;quality=1 );z=10;text="窗口标题:";cls="static" };
  16. edit2={ bottom=88;right=312;left=152;top=72;font=LOGFONT( name="宋体";h=-12 );z=5;text="edit2";edge=1;cls="edit" }
  17. )
  18. /*}}*/
  19. winform.button.oncommand = function(id,event){
  20. czck=function(ab){
  21. for hwnd in winex.each( "",string.upper(ab),, ) {
  22. hwndtab={}
  23. table.push(hwndtab,hwnd); //此处主要是考虑到万一查询的文本被多个窗口标题包含,则需要全部保存。
  24.          //后期准备考虑用列表的方式把它们显示出来供用户自己选择具体程序
  25. }
  26. }
  27. czck(tostring(winform.edit4.text))//使用tostring强制转换成字符,这里虽然想不到意外的情况,但备用着也好。
  28.          //有空再加个容错来预防函数出错的情况

  29. if(#hwndtab!=0){
  30. var hwnd = tonumber(hwndtab[1],16);//此处用tonumber来把窗口句柄值转成16进制的,可是失败了,原因等高手指点。
  31. win.msgbox(hwnd,"aardio")
  32. var str = win.getText(hwnd,50) ;//取窗口标题的指令
  33. if(str){
  34.   winform.edit5.text = string.replace(str,"[\r\n]","")
  35. } //此处显示窗口完全标题供确认

  36. var tid,pid = win.getThreadProcessId(hwndtab[1])//此命令取tid(Thread)和pid(ProcessId)的值

  37. winform.edit.text,winform.edit2.text,winform.edit3.text="","","";//此处清空上次查询结果

  38. winform.edit.text,winform.edit2.text,winform.edit3.text=hwnd,tid,pid;//显示本次查询结果

  39.   }
  40. else {
  41. win.msgbox("没有找到符合文本的窗口","aardio")
  42.   }   
  43. }
  44. winform.show()
  45. win.loopMessage();
复制代码

===========12月3日记录============
这两天,感觉自己真的很受打击。呵,上次写的代码,经过再次的学习,发现自己走了弯路了。不过暂时不想管了。
这次完成的是喊话功能。WINEX库看了十多遍,才把代码摸索出来。中间因为知识不丰富的原因,走了几段弯路。不过总算把代码完成了。
代码如下:

  1. //喊话按键事件
  2. winform.button2.oncommand = function(id,event){
  3. //win.msgbox( winform.button2.text );
  4. hwnd=tonumber(winform.edit.text,16)
  5. //winex.sendString("555555555555555555",hwnd)
  6. //此命令无法发送。为何?
  7. winex.say2(winform.edit6.text,hwnd)
  8. winex.say("这游戏就是这样混,一点意思都没有。",hwnd)
  9. win.setForeground(hwnd)//原来遇到的问题就是没有设置激活窗口,结果后面的ENTER没有效果,害我白须三根。。
  10.                                         //另外,win.setActive 在我这里没有效果,不知道哪出错了。

  11. win.delay(100)
  12. key.press("ENTER",hwnd)
  13. /*经过学习,刚才又发现,其实是我没有学到家,如果直接使用winex.key.click(hwnd,"ENTER"),就可以直接实现后台喊话了。没必要设置激活窗口,这个功能方便我们最小化窗口后自己做自己的事,让游戏一直自动喊话,呵,还是基础问题啊。*/
  14. }
复制代码
短短的几句代码啊,充分说明了 知识的重要性。另外在学习的过程中也认识到自己 查找句柄 的代码写得过于啰嗦了。其实没必要那么烦的。
下一步,准备完善这个喊话功能,让它实现读取列表,类似于人家的循环喊话功能。。。。。此外,如何选择频道喊话,这个估计现在我的水平还没有办法实现。先放着。

另外再请问个问题:
用win.setTopmost 可以把窗口设置为“总在最前”的状态,但如果我想取消这个状态呢?应该再用什么命令来取消呢?(答案就是再次输入 win.setTopmost(hwnd,flase)。。。。)

==========12月6日=============
首先,感觉进行到这里,功课开始变得难起来了。下一步就是面对:“如何移动?如何选怪?如何点怪?如何判断战斗界面切换?”等内容了。还是得慢慢来,一点一点的摸索。
其次,完成上次没完成的功能:
1、把循环喊话内容增加到列表。 这个就是很简单的winform.listbox.add();附带着增加两个按键,一是删除单条内容的winform.listbox.delete(),另外一个就是清空全部内容的按键:winform.listbox.clear();
2、循环读取listbox的内容并喊话

  1. for(i=1;ab;1){//此处ab也可以通过程序外部输入来限定循环喊话次数
  2. if(#winform.listbox.items!=""){
  3. for(i=1;#winform.listbox.items;1){
  4. winex.say(winform.listbox.items[ i ],hwnd)
  5. win.delay(2000)//游戏对喊话有时间间隔限定
  6. }
  7. }

  8. }
复制代码

==========12月31日=============
呵,很久没来更新,主要是工作多了点,再加上卡在过程上了,喊话功能实现了,简单的移动到指点NPC的功能也实现了。但目前 找怪 的功能还没能实现。还在努力摸索中。这段时间主要是在完善喊话工具并做推广。再加上期末,事挺多的。

加强学习吧。

评分

参与人数 1银币 +4 收起 理由
0ximi + 4 很给力!

查看全部评分

专心成长,努力发达,认真花钱,享受快乐
回复

使用道具 举报

52

主题

1340

帖子

7326

积分

荣誉会员

Rank: 8Rank: 8

积分
7326
发表于 2010-11-30 23:32:38 | 显示全部楼层

{:lol}怎么说也要占个沙发坐,支持一个,多分享!

怎么说也要占个沙发坐,支持一个,多分享!
回复

使用道具 举报

40

主题

565

帖子

3044

积分

新手入门

超级初学者

积分
3044
发表于 2010-12-1 00:45:16 | 显示全部楼层

OD是Olldbg,CE是什么?soft-ICE? 我还在研究自动交易呢,没钱可以先把系统做起来。 希望你的网游外挂顺利

OD是Olldbg,CE是什么?soft-ICE?
我还在研究自动交易呢,没钱可以先把系统做起来。
希望你的网游外挂顺利
http://echong.taobao.com 各类话费充值,请多支持!
回复

使用道具 举报

4

主题

108

帖子

638

积分

荣誉会员

Rank: 8Rank: 8

积分
638
发表于 2010-12-1 00:59:34 | 显示全部楼层

股市只能做兼职。希望能看到你的网游编程过程

股市只能做兼职。希望能看到你的网游编程过程
回复

使用道具 举报

40

主题

565

帖子

3044

积分

新手入门

超级初学者

积分
3044
发表于 2010-12-1 01:10:13 | 显示全部楼层

{:lol}刚刚抢占了第二贴

刚刚抢占了第二贴
http://echong.taobao.com 各类话费充值,请多支持!
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2010-12-1 08:48:52 | 显示全部楼层

也同样关注,同样不懂ce和od 你现在着手在做了么?

也同样关注,同样不懂ce和od
你现在着手在做了么?
我是菜鸟...
回复

使用道具 举报

40

主题

565

帖子

3044

积分

新手入门

超级初学者

积分
3044
发表于 2010-12-1 09:52:30 | 显示全部楼层

[i=s] 本帖最后由 fantasynew 于 2010-12-1 09:53 编辑 [/i] 想起以前玩网游的日子,用按键刷钱,用FPE监测内存地址

本帖最后由 fantasynew 于 2010-12-1 09:53 编辑

想起以前玩网游的日子,用按键刷钱,用FPE监测内存地址
http://echong.taobao.com 各类话费充值,请多支持!
回复

使用道具 举报

42

主题

125

帖子

900

积分

三级会员

Rank: 4

积分
900
发表于 2010-12-1 09:52:51 | 显示全部楼层

[i=s] 本帖最后由 zsbad123 于 2010-12-1 09:54 编辑 [/i] 我研究过游戏外挂一段时间,研究了一下OD和CE,不过OD现在用的

本帖最后由 zsbad123 于 2010-12-1 09:54 编辑

我研究过游戏外挂一段时间,研究了一下OD和CE,不过OD现在用的版本很容易给游戏封了,找不到什么其他软件分析内存,弄得我半途而废,用模拟键盘鼠标,很难实现后台操作的
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2010-12-1 11:31:51 | 显示全部楼层

[b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=1412&ptid=206][color=Olive]z

回复 zsbad123 的帖子

像盛大的疯狂赛车这样的游戏 连前台的模拟按键都不行
你有什么好的解决方法么?
我是菜鸟...
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:35:45 | 显示全部楼层

[i=s] 本帖最后由 vqimwr 于 2010-12-1 11:36 编辑 [/i] 我现在也在干这个,关注。 我直接web模拟的。 我想把web模拟

本帖最后由 vqimwr 于 2010-12-1 11:36 编辑

我现在也在干这个,关注。
我直接web模拟的。
我想把web模拟控制搞完了后,再挂fiirefox或者chrome。(参考这个zsbad123:《经过努力终于左手拿筷子也可以象右手一样轻松,谢谢老大提醒》 http://bbs.aardio.com/thread-198-1-1.html
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:42:05 | 显示全部楼层

[i=s] 本帖最后由 vqimwr 于 2010-12-1 11:48 编辑 [/i] [color=Orange][font=微软雅黑][b]

本帖最后由 vqimwr 于 2010-12-1 11:48 编辑




表示一下诚意,把代码贴出来。只完成了一点点,见笑了。


import win;
import win.ui;
import win.ui.menu
import win.ole
import key
/*DSG{{*/
var winform = win.form(parent=...; bottom=479;scroll=1;right=783;text="hero" )
winform.add(  )
/*}}*/

import web.form;

//创建web窗体
var wb = web.form( winform
    ,
//可输入_UIFLAG_ 前缀的常量自定义外观
    ,//可输入_DLCTL_ 前缀的常量以控制下载行为
    );
winform.hitmax()


//打开目标网站
wb.go("http://secure.verycd.com/signin?ak=50hero&sid=s1.verycd.9wee.com")
//显示窗体
winform.show(true)
wb.wait();
win.delay(100)
io.open()
   
////////////////////////////////////////////////////////////////!函数定义区开始  
fnSearchByInnerTEXT=function(text="",tag="a") begin
    count=0
//forin循环的次数,多查几次,呵呵,其实一次应该可以了,但是有时候不成功,不知道为何,bug?
    do{
        
for( index,ele in  wb.eachAll(tag) ){
            
if(ele.innerTEXT=text){
               
return ele;
               
break ;
            }
        }
        count=count+1
        win.delay(200)
    }
while(not ele and count<1)
   
return null;
end;//根据innerTEXT查找ele!

fnSearchByInnerHTML=
function(text="",tag="a") begin
    count=0
//forin循环的次数,多查几次,呵呵
    do{
        
for( index,ele in  wb.eachAll(tag) ){
            
if(ele.innerHTML=text){
               
return ele;
               
break ;
            }
        }
        count=count+1
    }
while(not ele and count<2)
   
return null;
end;//根据innerHTML查找ele!

fnSearchByValue=
function(text="",tag="a") begin
    count=0
//forin循环的次数,多查几次,呵呵
    do{
        
for( index,ele in  wb.eachAll(tag) ){
            
if(ele.value=text){
               
return ele;
               
break ;
            }
        }
        count=count+1
    }
while(not ele and count<2)
   
return null;
end;//根据value查找ele!



点评

学习下!  发表于 2012-2-3 17:48
谢谢无私共享,学习下。  发表于 2010-12-1 20:15
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:42:41 | 显示全部楼层

[color=#000000][font=微软雅黑] fnSearchByAnyAtt=[/font][/color][color=#0000ff][font


fnSearchByAnyAtt=
function(text="",tag="a") begin
    ele=fnSearchByInnerTEXT(text,tag)
   
if(ele){return ele;}
   
    ele=fnSearchByValue(text,tag)
   
if(ele){return ele;}
   
    ele=fnSearchByInnerHTML(text,tag)   
   
if(ele){return ele;}
   
   
//win.msgboxTimeout("fnSearchByAny无法查询","标题",3000)
    return null;
end;//根据未知属性查找ele
//------------------------------------------------------

fnLogin=
function(username="aardio",password="123456") begin
    wb.getEle(
"username").value=username
    wb.getEle(
"password").value=password

    ele=
null
    ele=wb.getEle(
"login_submit") //查找登陆按钮               
    if(ele){
        ele.click()
        wb.wait()
        win.delay(100)
        
return true;
    }
//找到登陆按钮
    else {
        
return false;
    }
//没有找到登陆按钮
end;//登陆!

fnQuiteGame=
function() begin
    wb.go(
"http://secure.verycd.com/3rdServices/50hero")
    wb.wait()
    win.delay(100)
    ele=fnSearchByInnerTEXT(
"退出",)
   
if(ele){
        ele.fireEvent(
"onclick")
        wb.wait()
        win.delay(10)
        winform.close()     
        
return true;
    }
   
return false;
end; //登出并关闭!
//-------------------------------------------------------

fnState=
function() begin
/*<span name="text_stat" id="text_stat" class="highlight"&gt; <span style="color: rgb(47, 120, 63);">正常</span></span>*/
    ele=wb.getEle(
"text_stat")
   
if(ele){ return ele.innerTEXT}
   
else {return null;}   
end;//查询state(死亡?正常?修炼中?战斗中?…………),返回文字!

fnCanMove=
function(state) begin
   
select(state) {
   
case "正常","虚弱"{return true;}
   
case "修炼中","战斗中","死亡" {return false;}
   
else {return false; }
    }
end;

点评

真棒: 5.0
真棒: 5
  发表于 2011-10-31 11:13
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:43:28 | 显示全部楼层

[color=#000000][font=微软雅黑]fnGetBonus=[/font][/color][color=#0000ff][font=微软雅



fnGetBonus=function() begin
    ele=wb.getEle(
"quick_button_mission")//查找(任务)按钮
    if(not ele){return 1;     }
    ele.fireEvent(
"onclick") //点击任务按钮
    wb.wait()
    win.delay(500)
    ..io.print(
"fnGetBonus step: 1/6 ok")
    ele=
null
   
//--------------------------------   
    ele=wb.getEle("switch_menu_role_mission") //查找(当前任务)
    if(not ele){return 2;}      
    ele.fireEvent(
"onclick");
    wb.wait();
    win.delay(500)
    ..io.print(
"fnGetBonus step: 2/6 ok")
    ele=
null   
   
//--------------------------------
/*<a class="purple" onclick="view_mission ( 'day', 41002, true )" style="float: right; margin-right: 5px;" href="javascript:void(0);">领取奖励</a>*/

    ele=fnSearchByInnerTEXT(
"领取奖励",)
   
if(not ele){return 3;     }
    ele.fireEvent(
"onclick")
    wb.wait()
    win.delay(500)
    ..io.print(
"fnGetBonus step: 3/6 ok")
    ele=
null
   
//--------------------------------            
//<a class="button_next_message" onclick="mission_get_rewards ( 'day', '41003' )" href="javascript:void(0);"&gt;点击这里继续</a>
    ele=fnSearchByInnerTEXT("点击这里继续",)
   
if(not ele){return 4;     }
    ele.fireEvent(
"onclick")
    wb.wait()
    win.delay(500)
    ..io.print(
"fnGetBonus step: 4/6 ok")
    ele=
null
   
//--------------------------------   
//<input type="submit" value="确定" class="button" name="alert_button">
    ele=fnSearchByValue("确定","input")
   
if(not ele){return 5;     }
    ele.fireEvent(
"onclick")
    wb.wait()
    win.delay(500)
    ..io.print(
"fnGetBonus step: 5/6 ok")
    ele=
null
   
//--------------------------------                     
  wb.refresh2()
    wb.wait()
    win.delay(500)
    ..io.print(
"fnGetBonus step: 6/6 ok")
   
//--------------------------------         
    return 0;
end;//领取奖励,成功领取返回0,>0表示各种失败情况!


回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:44:23 | 显示全部楼层

[i=s] 本帖最后由 vqimwr 于 2010-12-1 14:29 编辑 [/i] [color=#000000][font=微软雅黑] fnGetM

本帖最后由 vqimwr 于 2010-12-1 14:29 编辑


fnGetMissionList=
function() begin
   
import table;
    step=0

    MissionList={}
   
//--------------------------------
    ele=wb.getEle("quick_button_mission")//查找(任务)按钮
    if(not ele){return null;}
    ele.fireEvent(
"onclick") //点击任务按钮
    wb.wait()
    step=step+1;
    ..io.print(
"fnGetmissionList:"++tostring(step)++"/3 ok")
    win.delay(100)
    ele=
null
   
//--------------------------------   
    ele=wb.getEle("switch_menu_role_mission") //查找(当前任务)
    if(not ele){return null;}   
    ele.fireEvent(
"onclick");
    wb.wait();
    ..io.print(
"fnGetmissionList:2/3 ok")
    win.delay(100)
    ele=
null
   
//--------------------------------
    ele=wb.getEle("role_mission_list")
   
if(not ele){return null;}
    ..io.print(
"fnGetmissionList:3/3 ok")   
   
//--------------------------------
        
   
//getElementsByTagName
    table.push(missionList,ele)
/*
    ele=ele.item(0).item(0)
    for(i=0;#ele;1){
        table.push(missionList,ele.item(i))  
    }
*/
  
   
   
return missionList;
end;//获取任务列表!

fnReturnCapital=
function() begin
   
/* 位置id="scene_name",代码如下:
    <div class="field_name_div" id="scene_name">
        <a href="javascript:void(0);">
            <b>江陵郡</b>
        </a>>
        <a href="javascript:void(0);">
            <b>夷陵镇</b>
        </a>>
        <a href="javascript:void(0);">
            <b>刺木林</b>
        </a>
    </div>
    */
   
    place=wb.getEle(
"scene_name")//所在位置
    if(place){
        ele=fnSearchByInnerTEXT(
"返回国都",)
        ele.fireEvent(
"onclick")
        wb.wait()
        win.delay(100)
        
return true;
    }
   
else {
        
return false;
    }
   
end;//返回国都

fnReceiveDaylyMission=
function() begin
end;//接受日常任务

fnReceivePrimaryMission=
function() begin
end;//接受主线任务



////////////////////////////////////////////////////////////////函数定义区结束!

回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 11:44:41 | 显示全部楼层

[color=#000000][font=微软雅黑] [/font][/color][color=#008000][font=微软雅黑]//=========


//================================================
var login=false
io.print(
"登陆 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
login=fnLogin(
"aardio","123456")//登陆
if(not login)begin
   
//win.msgboxTimeout("没有找到(登陆)按钮,退出!","hero",5000)
    io.print("登陆失败!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    winform.close()     
end;//登陆不成功则退出
io.print("登陆成功!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
   
//================================================

state=fnState()
//查状态

if(fnCanMove(state))begin     
    io.print(
"state:"++state)
    fnReturnCapital()
   
//--------------------
    GetBonus=null
    io.print(
"GetBonus<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
    GetBonus=fnGetBonus()
//成功则返回0
   
   
if(GetBonus){//领取奖励不成功时
        io.print("fnGetBonus false, return step:",tostring(GetBonus)++"/6   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
        wb.refresh2();
        wb.wait();
        win.delay(10)
    }
   
else {io.print("fnGetBonus ok!^-^>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")       }
end//返回国都、领取奖金
else begin
    io.print(
"state查询不成功")
    fnQuiteGame()
    winform.close()
end; //未查到状态就退出网页


//================================================
io.print("fnGetMissionList<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
missionList=fnGetMissionList()

if(#missionList>=1){
    io.print(
"#missionList="++tostring(#missionList),"missionList:"++tostring(missionList))
    io.print(
"missionList.type:",type(missionList))
   
for(i=1;#missionList;1){
        io.print(
"missionList["++tostring(i)++"]:",missionList[ i ])
        io.print(
"missionList[ i ].innerHTML",missionList[ i ].innerHTML)
        
//io.print(missionList[ i ].item(0).innerHTML )//错误
    }
}
else{   io.print("获取任务列表失败,missionList:",tostring(missionList),">>>>>>>>>>>>>>>>>>>>>>>>>>>>>")}
io.print(
"fnGetMissionList Over>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
//================================================

execute("pause")
io.close()

//进入消息循环
win.loopMessage();
return wb,winform;

点评

真棒: 5.0
真棒: 5
  发表于 2011-10-31 11:10
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2010-12-1 12:32:44 | 显示全部楼层

[i=s] 本帖最后由 落伍者 于 2010-12-1 13:00 编辑 [/i] [b]回复 [url=http://bbs.aardio.com/foru

本帖最后由 落伍者 于 2010-12-1 13:00 编辑

回复 vqimwr 的帖子

跑一小会就无法响应  什么原因?
你怎么看到这个页面的源码的
我是菜鸟...
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 13:12:44 | 显示全部楼层

[b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=1446&ptid=206][color=Olive]落

回复 落伍者 的帖子

firefox下装firebug插件就可以直接看元素的代码。
要看整个网页的代码,任何浏览器都可以的,一般在查看菜单下面有“查看源代码”的选项。
ie8以上版本对源码编辑也做得不错了。
回复

使用道具 举报

3

主题

58

帖子

585

积分

荣誉会员

Rank: 8Rank: 8

积分
585
发表于 2010-12-1 13:17:46 | 显示全部楼层

这个里面的io.print()都是方便调试用的,注释掉可以跑快一点。 里面账号密码"aardio","123456"都是可以用的,专门为了模拟练习申请的。我的

这个里面的io.print()都是方便调试用的,注释掉可以跑快一点。
里面账号密码"aardio","123456"都是可以用的,专门为了模拟练习申请的。我的目的只是学习,写代码比玩网游要好玩一点。
回复

使用道具 举报

117

主题

1237

帖子

6592

积分

六级会员

Rank: 9Rank: 9Rank: 9

积分
6592
发表于 2010-12-1 13:24:34 | 显示全部楼层

[i=s] 本帖最后由 落伍者 于 2010-12-1 13:25 编辑 [/i] [b]回复 [url=http://bbs.aardio.com/foru

本帖最后由 落伍者 于 2010-12-1 13:25 编辑

回复 vqimwr 的帖子

看了你回复我差点晕过去了...
我老是把谷歌浏览器当成firefox了.../流汗
又把版主的视频看了一下...
太杯具了...
我是菜鸟...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-16 18:37 , Processed in 0.140625 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表