li00020 发表于 2011-3-28 09:04:28

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

比如说,我要一台机挂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 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;

li00020 发表于 2011-3-28 09:05:13

谢谢楼上的两位.好难啊.搞了半天也不行,哈, 建线程倒行了,看来路还很长. 数组操作都不会!

BAIDU找了半天也没有数组操作的例子,unit UntHotKey;
有没有实例,数据放到数组中,比较数组,之类的.呵呵
页: [1]
查看完整版本: [DELPHI]多线程问题,请教! 游戏多开但挂只要一个!