强行终止线程问题(100分)

  • 主题发起人 jhlz1968
  • 开始时间
J

jhlz1968

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个从网上获取数据的窗体,获取数据时有时速度会很慢,如果此时关闭窗体,会提示错误,怎样强行终止线程.
 
procedure EndProcess(AFileName: string);
const
PROCESS_TERMINATE = $0001;
var
ExeFileName: string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
ExeFileName := AFileName;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;

下列是调用接口:
procedure TForm1.Button1Click(Sender: TObject);
begin
EndProcess('Project1.exe');
end;
 
接受答案了.
 
顶部