Private Function GetThreadList(ByVal ProcessID As Long) As THREADENTRY32()
Dim i As Long
Dim TList() As THREADENTRY32
Dim TE32 As THREADENTRY32
Dim hThreadSnap As Long
Dim TheLoop As Long hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, ProcessID)
TE32.dwsize = Len(TE32) TheLoop = Thread32First(hThreadSnap, TE32)
While TheLoop <> 0 If TE32.th32OwnerProcessID = ProcessID Then
ReDim Preserve TList(i)
TerminateThread TE32.th32threadID, 0
TList(i) = TE32
i = i + 1
End If TheLoop = Thread32Next(hThreadSnap, TE32)
Wend CloseHandle hThreadSnap
GetThreadList = TList
End Function
Public Function KillThread(ByVal ProcessID As Long) As Boolean
Dim hThread As Long, r As Long, i As Long
Dim TList() As THREADENTRY32 TList = GetThreadList(ProcessID) For i = 0 To UBound(TList)
With TList(i)
hThread = OpenThread(PROCESS_TERMINATE, False, .th32threadID) '获取进程句柄
If hThread <> 0 Then
r = TerminateThread(hThread, 0) '关闭进程
End If
End With
Next
KillThread = r <> 0
End Function
主要是这里不太懂... 该如何转化成 DELPHI的格式
Dim TList() As THREADENTRY32
Dim TE32 As THREADENTRY32
就是这两个部分....
Dim i As Long
Dim TList() As THREADENTRY32
Dim TE32 As THREADENTRY32
Dim hThreadSnap As Long
Dim TheLoop As Long hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, ProcessID)
TE32.dwsize = Len(TE32) TheLoop = Thread32First(hThreadSnap, TE32)
While TheLoop <> 0 If TE32.th32OwnerProcessID = ProcessID Then
ReDim Preserve TList(i)
TerminateThread TE32.th32threadID, 0
TList(i) = TE32
i = i + 1
End If TheLoop = Thread32Next(hThreadSnap, TE32)
Wend CloseHandle hThreadSnap
GetThreadList = TList
End Function
Public Function KillThread(ByVal ProcessID As Long) As Boolean
Dim hThread As Long, r As Long, i As Long
Dim TList() As THREADENTRY32 TList = GetThreadList(ProcessID) For i = 0 To UBound(TList)
With TList(i)
hThread = OpenThread(PROCESS_TERMINATE, False, .th32threadID) '获取进程句柄
If hThread <> 0 Then
r = TerminateThread(hThread, 0) '关闭进程
End If
End With
Next
KillThread = r <> 0
End Function
主要是这里不太懂... 该如何转化成 DELPHI的格式
Dim TList() As THREADENTRY32
Dim TE32 As THREADENTRY32
就是这两个部分....
解决方案 »
- EOF和BOF
- append后一条记录的时候前一条记录不见面了
- 高分送。在paradox7中如何保存库结构?
- tclientdataset怎么使用?怎么向里面存入数据,又怎么将数据从里面取出来?多谢!
- *****这个问题在CSDN从来没被提问过,请进*****
- 设置ClientSocket.Active:=true;报“……目标机器积极地拒绝它”,为什么?怎样才能不报?
- 急寻,delphi帮助文件(汉化)
- 我已经在注册表里找到了相关USB的信息,怎么把他们分类提取出来到memo,分类就是版本号,类型等等?不是用getkeyname(),delphi
- 需要一个金额输入的edit控件
- 求教有关做简单控件的问题?
- fastreport分组打印
- 请教大家关于exe导出函数的问题?
uses TLHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName: string;
ProcessID: integer;
ListLoop: Boolean;
FsnapShotHandle: Thandle;
FProcessEntry32: TProcessEntry32; //对THREADENTRY32也是一样的
begin
Fsnapshothandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwsize := SizeOF(FProcessEntry32);
Listloop := Process32First(FSnapshotHandle, FProcessEntry32);
while Listloop do begin
ProcessName := FprocessEntry32.szExeFile;
ProcessID := FProcessEntry32.th32ProcessID;
// 我写到列表框中了,你可以根据需要自己改
listbox1.Items.Add('Process NAME:' + ProcessNAme);
ListLoop := Process32Next(FSnapshotHandle, FprocessEntry32);
end;
end;
var
lpth : TTHREADEntry32;
fod : boolean;
had : Thandle;
ittm:Tlistitem;begin
lvw_thr.items.clear;
had := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, DWORD(lvw_prc.Selected.Data));
lpTH.dwSize := sizeof(lpTh);
fod := THREAD32first(had, lpTH);
if lvw_prc.Selected.data <> nil then
begin
while fod do
begin ittm:=lvw_THR.Items.Add;
IF LPTH.th32OwnerProcessID= DWORD(lvw_prc.Selected.Data) THEN
BEGIN
ittm.Caption:=inttostr(lpth.th32ThreadID);
ittm.Data := Pointer(lpTH.th32ThreadID); //保存XIAN程的ID
ittm.subitems.Add(IntToStr(lpTH.tpBasePri));
END;
fod := THREAD32Next(had, lpTH);
end;
end;
end;