function ThreadFunc(...): Boolean; stdcall;
var
...
begin
// 把你需要在线程中单独运行的程序放在此处
end;procedure TForm1.Button1Click(Sender: TObject);
var
hThread: THandle;
ThreadID: DWORD;
begin
hThread := CreateThread(nil,
0,
@ThreadFunc,
nil,
0,
ThreadID);
if hThread = 0 then
MessageBox(Self.Handle, PChar('线程创建错误'), nil, MB_OK);
end;// 不是很明白你的意思,给你最简单的例子.
var
...
begin
// 把你需要在线程中单独运行的程序放在此处
end;procedure TForm1.Button1Click(Sender: TObject);
var
hThread: THandle;
ThreadID: DWORD;
begin
hThread := CreateThread(nil,
0,
@ThreadFunc,
nil,
0,
ThreadID);
if hThread = 0 then
MessageBox(Self.Handle, PChar('线程创建错误'), nil, MB_OK);
end;// 不是很明白你的意思,给你最简单的例子.
我觉得这里不用调用api函数的,delphi自己可以搞定的!
WaitForSingleObject(hThread, TimeToWait); // 当hThread句柄指向的线程运行结束时返回。先开50个管理线程,这50个线程不用于执行端口扫描。然后再每一个线程里再开一个端口扫描线程,使用WaitForSingleObject()函数判断端口扫描线程是否返回,若返回则开下一批端口扫描线程。function ThreadSearch(...): VariableType; stdcall;function ThreadFunc(...): Boolean; stdcall;
var
hSearchThread: THandle;
dwSearchThreadID: DWORD;
iCount: Integer; // 也可以使用其他可表示本管理线程结束的标志
begin
iCount := 0;
while iCount<=49 do
begin
hSearchThread := CreateThread(nil, 0, @ThreadSearCh, nil, 0, dwSearchThreadID);
WaitForSingleObject(hSearchThread, TimeToWait);
Inc(iCount, 1); // iCount + 1;
end;//while
end;//===========Main=======================
var
hMasterThread: array[0..49] of THandle;
dwThreadID: array[0..49] of DWORD;
begin
for i := 0 to 49 do
begin
hMasterThread[i] := CreateThread(nil, 0, @ThreadFunc, nil, 0, dwThreadID[i]);
end;//for
end;
// 以上的代码很可能是错误的,你自己多试试。// 他们说留言太长了,所以放到帖子里来了。