看流星社区

 找回密码
 注册账号
查看: 3263|回复: 1

[Delphi] [DELPHI]多线程问题,请教! 游戏多开但挂只要一个!

[复制链接]

该用户从未签到

发表于 2011-3-28 09:04:28 | 显示全部楼层 |阅读模式
比如说,我要一台机挂N个号,
我想只用一个进程,N个线程,线程完全独立,且内容相同
线程里放挂的代码,按一下热键就创建一个新线程.
主线程用于响应热键,用热键中止已创建的线程和创建新线程.
能不能给一下简单的方法.不然开N个游戏,托盘那边N个图标,吓死人了!

该用户从未签到

发表于 2011-3-28 09:04:39 | 显示全部楼层
看看线程的教程就会了,不烦。基本结构是:
1,把配置游戏的界面做成Frame,新开一个单元也可以。
2,在主窗口里,枚举游戏窗口句柄,把枚举出来的句柄保存下来。有几个句柄,就创建几个配置的界面。在配置的界面里,显示游戏主角的等级、名称,这样分的清楚。
3,有几个游戏,就创建几个线程。每个线程编个号。创建的时候,把配置参数传递进去。线程根据这些参数运作。
4,线程在HookUI的时候,把自己的编号传递过去。
5,主界面根据线程的编号,刷新对应的界面。

该用户从未签到

发表于 2011-3-28 09:04:51 | 显示全部楼层
1\主线程建个record数组,保存游戏资料,比如窗口句并、线程是否继续运行的判断

type
game:record
gamehwnd:hwnd;
gtrue:boolean;
...     
end;
var  
MyGame:array[0..10] of game;

2、热键响应那得到窗口句并后,在record数组中寻找有没有相同的句柄,如果有则记下数组索引,没有则在空的数组中保存句柄并记下索引

3、从record中得到游戏的状态判断下面是该开始挂机还是停止挂机,线程根据你的gtrue判断是否退出挂机循环。开始线城时把数组索引作为参数传递,好让线程知道该用数组中的哪个record

开始线程
MyDa.create(NowIndex);

线程中的开始函数
constructor MyDa.create(NowIndex:integer);
begin
  ThrIndex:=NowIndex;    \\ThrIndex线程的局部变量,保存索引
  inherited create(false);//false表示线程建立后马上唤醒
end;

该用户从未签到

 楼主| 发表于 2011-3-28 09:05:13 | 显示全部楼层
谢谢楼上的两位.好难啊.搞了半天也不行,哈, 建线程倒行了,看来路还很长. 数组操作都不会!

BAIDU找了半天也没有数组操作的例子,unit UntHotKey;
有没有实例,数据放到数组中,比较数组,之类的.呵呵
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 19:21

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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