| 
 | 
	
 
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册  
 
x
 
 恩 直接上代码 只有源码 界面不发  喜欢看代码的看看我的代码风格 是否可以优化  ,,请指教  
 空间 JJ 
 
//定义默认空间 
dm_tx = com("dm.dmsoft") 
var 基址 = "<TKInterimdataDll.dll>+3AF4C" 
var 状态基址 = "[<TkMCEx.exe>+699E4]+a9c" 
 
 
function Get_Date(&内存地址,窗口句柄_temp,&dm_dm)//获取内存数据 
    var q_temp//全局临时变量 
    var q_temp_Err//错误变量 
a:     
    q_temp = 0 
    q_temp = dm_dm.ReadInt(窗口句柄_temp,内存地址,0) 
    q_temp_Err = dm_dm.GetLastError() 
    if(q_temp_Err != 0) 
        goto a 
    endif 
    return q_temp 
endfunction 
 
 
function Get_Vacancy(&dm_dm,窗口句柄_temp)//获取游戏桌面上的空位 
    if(JJ.Get_Date("[["&基址&"]+140]+50",窗口句柄_temp,dm_dm)==0) 
        return 1 
    endif 
    if(JJ.Get_Date("[["&基址&"]+13c]+50",窗口句柄_temp,dm_dm)==0) 
        return 2 
    endif 
    if(JJ.Get_Date("[["&基址&"]+144]+50",窗口句柄_temp,dm_dm)==0) 
        return 3 
    endif 
    if(JJ.Get_Date("[["&基址&"]+138]+50",窗口句柄_temp,dm_dm)==0) 
        return 4 
    endif 
    if(JJ.Get_Date("[["&基址&"]+134]+50",窗口句柄_temp,dm_dm)==0) 
        return 5 
    endif 
    return 0//如果都没有空位那么就返回0 
endfunction 
 
 
function Get_Rs(窗口句柄_temp,&dm_dm)//获取当前桌面人数 
    var 人数 = 0  
    if(JJ.Get_Date("[["&基址&"]+140]+50",窗口句柄_temp,dm_dm)>0) 
        人数++ 
    endif 
    if(JJ.Get_Date("[["&基址&"]+13c]+50",窗口句柄_temp,dm_dm)>0) 
        人数++ 
    endif 
    if(JJ.Get_Date("[["&基址&"]+144]+50",窗口句柄_temp,dm_dm)>0) 
        人数++ 
    endif 
    if(JJ.Get_Date("[["&基址&"]+138]+50",窗口句柄_temp,dm_dm)>0) 
        人数++ 
    endif 
    if(JJ.Get_Date("[["&基址&"]+134]+50",窗口句柄_temp,dm_dm)>0) 
        人数++ 
    endif 
    if(JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm)>0) 
        人数-- 
    endif 
    return 人数 
endfunction 
 
 
function Up(&dm_dm,窗口句柄_temp)//上位 
    var 空位  
    var 状态 
    空位 = JJ.Get_Vacancy(dm_dm,窗口句柄_temp) 
    状态 = JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm) 
    if(状态 == 0)     
        if(空位 == 0) 
            return false 
        else 
            //dm_dm.SetWindowState(窗口句柄_temp,14)//12 
            窗口.激活(窗口句柄_temp) 
            help.sleep(500) 
            select(空位) 
                条件 1: 
                dm_dm.MoveTo(122,116) 
                dm_dm.LeftClick() 
                help.sleep(1000)                 
                条件 2: 
                dm_dm.MoveTo(652,112) 
                dm_dm.LeftClick() 
                help.sleep(1000) 
                条件 3: 
                dm_dm.MoveTo(59,340) 
                dm_dm.LeftClick() 
                help.sleep(1000) 
                条件 4: 
                dm_dm.MoveTo(714,347) 
                dm_dm.LeftClick() 
                help.sleep(1000) 
                条件 5: 
                dm_dm.MoveTo(393,501) 
                dm_dm.LeftClick() 
                help.sleep(1000) 
            endselect 
        endif 
    endif 
endfunction 
 
 
function Under(&dm_dm,窗口句柄_temp)//下位 
    var 状态  
    var 筹码 
    状态 = JJ.Get_Date(状态基址,窗口句柄_temp,dm_dm) 
    筹码 = JJ.Get_Date("["&基址&"]+4",窗口句柄_temp,dm_dm) 
    if(状态==1) 
        if(筹码<5) 
            while(true)                 
                状态 = JJ.Get_Date("<TKInterimdataDll.dll>+3C070",窗口句柄_temp,dm_dm)  
                if(状态 == 1) 
                    return true 
                else  
                    dm_dm.MoveTo(137,663)                 
                    dm_dm.LeftClick() 
                endif 
            endwhile 
        endif 
    endif 
endfunction 
 
 
空间结束 
//空间结束语句 
 
 #include"JJ.t" 
空间 Udate_JJ 
//默认空间 
d = com("dm.dmsoft") 
//开始按钮_点击操作 
var 掉线 = 数组[100]//对应ID 
var Thread_State//线程空闲状态 
var 窗口句柄_ID = 数组[100]//存放找到的游戏窗口句柄 
var 窗口句柄_ID_id//窗口数量 
 
 
function GetThread_Vacancy()//获取空位的线程号 
    var buff 
    for(i=1;i<100;i++) 
        buff = 表格.获得内容("表格0",i,0) 
        if(buff=="") 
            return i 
        endif 
    endfor     
endfunction 
 
 
function GetWindows_Hwnd()//获取全部游戏窗口 
    var 类名  
    var dx 
    var buff 
    var ckmc     
    if(单选框.获得状态("单选框0")==true) 
        类名 = "Afx:00400000:0" 
    else 
        类名 = "Afx:00400000:0" 
    endif 
    返回值=系统.枚举(类名,1) 
    while(字符串.分割(返回值,"|",buff)==false) 
        返回值=系统.枚举(类名,1) 
    endwhile 
    数组空间.大小(buff,dx) 
    for(i=0;i<dx;i++) 
        ckmc = 窗口.得到标题(buff) 
        if(字符串.查找字符串(ckmc,"JJ卡当")!= -1) 
            窗口句柄_ID[窗口句柄_ID_id] = buff 
            窗口句柄_ID_id++ 
            表格.设置内容("表格0",窗口句柄_ID_id,1,"0") 
            表格.设置内容("表格0",窗口句柄_ID_id,2,"0") 
            表格.设置内容("表格0",窗口句柄_ID_id,3,"没有上桌") 
            表格.设置内容("表格0",窗口句柄_ID_id,4,"3") 
            表格.设置内容("表格0",窗口句柄_ID_id,5,"0") 
        endif 
    endfor     
endfunction 
 
 
function Thread_Major(线程_ID)//主要的线程 
    Thread_State = 1 
    thread_dm = com("dm.dmsoft")//线程里面的DM  
    var thread_jc//检测线程句柄 
    var 桌面筹码 
    var 桌面人数 
    var 自身状态 
    var thread_hwnd 
    if(单选框.获得状态("单选框0")==true)     
        thread_hwnd = d.EnumWindow(窗口句柄_ID[线程_ID],"","Afx:00400000:0:00010011:00000000:00000000",2+4+8+16)//上下位窗口 
    else 
        thread_hwnd = d.EnumWindow(窗口句柄_ID[线程_ID],"","Afx:00400000:0:00010003:00000000:00000000",2+4+8+16)//上下位窗口 
    endif 
    while(thread_dm.BindWindowEx(thread_hwnd,"normal","windows","normal","",101) !=1)         
    endwhile//绑定窗口 
    //检测线程 
    Thread_State = 0 
    表格.设置内容("表格0",(线程_ID+1),0,(线程_ID+1)) 
    while(true) 
        桌面筹码 = JJ.Get_Date("["&JJ.基址&"]+4",窗口句柄_ID[线程_ID],thread_dm) 
        桌面人数 = JJ.Get_Rs(窗口句柄_ID[线程_ID],thread_dm) 
        自身状态 = JJ.Get_Date(JJ.状态基址,窗口句柄_ID[线程_ID],thread_dm) 
        表格.设置内容("表格0",(线程_ID+1),1,桌面人数) 
        表格.设置内容("表格0",(线程_ID+1),5,桌面筹码) 
        if(自身状态==1) 
            表格.设置内容("表格0",(线程_ID+1),3,"在桌上") 
        else 
            表格.设置内容("表格0",(线程_ID+1),3,"没有上桌") 
        endif 
        if(桌面人数<类型.转整型(表格.获得内容("表格0",(线程_ID+1),4))) 
            // if(Thread_State == 0) 
            Thread_State = 1 
            JJ.Under(thread_dm,窗口句柄_ID[线程_ID]) 
            Thread_State = 0 
            //else 
            help.sleep(1000) 
            //endif 
        else 
            //if(Thread_State == 0) 
            Thread_State = 1 
            JJ.Up(thread_dm,窗口句柄_ID[线程_ID]) 
            Thread_State = 0 
            //else 
            help.sleep(1000) 
            //endif 
        endif 
        if(窗口.是否有效(窗口句柄_ID[线程_ID])==false) 
            thread_dm.UnBindWindow() 
            表格.设置内容("表格0",(线程_ID+1),0,"") 
            表格.设置内容("表格0",(线程_ID+1),2,"窗口关闭") 
            return 0 
        endif 
        help.sleep(类型.转整型(编辑框.获得文本("编辑框0"))) 
    endwhile 
     
     
endfunction 
 
 
功能 初始化() 
    //这里添加你要执行的代码 
    d.Reg("3s387","") 
    d.DmGuard(1,"np") 
    d.DmGuard(1,"phide") 
    for(i=0;i<100;i++) 
        掉线 = 0//初始化0代表未掉线,1代表掉线 
    endfor 
    窗口句柄_ID_id = 0 
    Thread_State = 0 
功能结束 
 
 
 
 
功能 按钮0_点击() 
    //这里添加你要执行的代码 
    窗口句柄_ID_id = 0 
    Udate_JJ.GetWindows_Hwnd() 
    help.messagebox("系统扫描到:"&Udate_JJ.窗口句柄_ID_id&"   个游戏窗口") 
    控件.有效("按钮0",false) 
功能结束 
 
 
function xx() 
    for(i=0;i<窗口句柄_ID_id;i++)    
        while(Thread_State==1) 
            help.sleep(100) 
        endwhile 
        线程.开启("Udate_JJ.Thread_Major",i)         
        help.sleep(500)        
    endfor     
endfunction 
 
 
功能 按钮1_点击() 
    //这里添加你要执行的代码 
    线程.开启("Udate_JJ.xx","")     
    控件.有效("按钮1",false) 
功能结束 
 
 
 
 
功能 表格0_左键单击() 
    //这里添加你要执行的代码 
    变量 r_beginRow,r_beginCol,r_endRow,r_end_Col 
    表格.获得选中范围("表格0",r_beginRow,r_beginCol,r_endRow,r_end_Col)   
    编辑框.设置文本("编辑框1",字符串.移除(窗口.得到标题(Udate_JJ.窗口句柄_ID[(r_beginRow-1)]),10,true)) 
功能结束 
 
 
 
 
功能 热键0_热键() 
    //这里添加你要执行的代码 
    var  标题 
    var  句柄 
    句柄=窗口.鼠标所在窗口句柄() 
    标题=窗口.得到标题(句柄) 
    if(字符串.查找字符串(标题,"JJ卡当")!= -1) 
        窗口句柄_ID[窗口句柄_ID_id] = 句柄 
        窗口句柄_ID_id++ 
        while(Thread_State==1) 
            help.sleep(100) 
        endwhile 
        for(i=0;i<100;i++) 
            if(表格.获得内容("表格0",i,0)=="") 
                线程.开启("Udate_JJ.Thread_Major",(i-1)) 
                break 
            endif 
        endfor          
    endif     
功能结束 
 
 
空间结束 
//空间结束语句 
 
 |   
 
 
 
 |