拉兄弟一把——————关闭进程的问题

wangkun007 2002-07-03 03:31:03
我在程序中想关闭‘任务管理器’中的另外一个进程,怎么实现!!!!
...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yansea 2002-07-03
  • 打赏
  • 举报
回复
找了一个枚举进程、线程的例子,你看看;
unit MainForm;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TlHelp32, StdCtrls, ComCtrls, ExtCtrls;

type
TfrmMain = class(TForm)
pnlInfo: TPanel;
lvThreads: TListView;
Splitter1: TSplitter;
pnlButtons: TPanel;
btnRefresh: TButton;
btnClose: TButton;
lvProcs: TListView;
procedure btnRefreshClick(Sender: TObject);
procedure lvProcsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure btnCloseClick(Sender: TObject);
private
procedure FillThreadList(ProcID:Integer);
public
end;

var
frmMain: TfrmMain;

implementation

{$R *.DFM}
procedure TfrmMain.FillThreadList(ProcID: Integer);
var
hSnapshot:THandle;
ThreadEntry:TThreadEntry32;0D
RetVal:Bool;
LvItem:TListItem;
begin
lvThreads.Items.Clear;
0A hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
ThreadEntry.dwSize := Sizeof(ThreadEntry);
RetVal := Thread32First(hSnapshot,ThreadEntry);
while RetVal do
begin
if ThreadEntry.th32OwnerProcessID = Integer(ProcID) then
begin
LvItem := lvThreads.Items.Add;
LvItem.Data := Pointer((ThreadEntry.th32ThreadID));
LvItem.Caption := IntToStr(ThreadEntry.th32ThreadID);
end;
RetVal := Thread32Next(hSnapshot,ThreadEntry);
end;
CloseHandle(hSnapshot);
end;

procedure TfrmMain.btnRefreshClick(Sender: TObject);
var
hSnapshot:THandle;
ProcEntry:TProcessEntry32;0D
RetVal:Bool;
LvItem:TListItem;
TvNode:TTreeNode;
ThreadList:TList;
begin
lvProcs.Items.Clear;
hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
ProcEntry.dwSize := Sizeof(ProcEntry);
RetVal := Process32First(hSnapshot,ProcEntry);
while RetVal do
begin
LvItem :=lvProcs.Items.Add;
LvItem.Caption :=(ProcEntry.szExeFile);
LvItem.SubItems.Add(IntToStr(ProcEntry.th32ProcessID));0D
LvItem.SubItems.Add(IntToStr(ProcEntry.th32ParentProcessID));
LvItem.SubItems.Add(IntToStr(ProcEntry.cntThreads));
0A LvItem.Data:=(Pointer(ProcEntry.th32ProcessID));
RetVal := Process32Next(hSnapshot,ProcEntry);
end;
CloseHandle(hSnapShot);
0Aend;

procedure TfrmMain.lvProcsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if Selected then
begin
FillThreadList(Integer(Item.Data));
end;
end;

procedure TfrmMain.btnCloseClick(Sender: TObject);
begin
Close;
end;
end.
yansea 2002-07-03
  • 打赏
  • 举报
回复
找了一个枚举进程、线程的例子,你看看;
unit MainForm;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TlHelp32, StdCtrls, ComCtrls, ExtCtrls;

type
TfrmMain = class(TForm)
pnlInfo: TPanel;
lvThreads: TListView;
Splitter1: TSplitter;
pnlButtons: TPanel;
btnRefresh: TButton;
btnClose: TButton;
lvProcs: TListView;
procedure btnRefreshClick(Sender: TObject);
procedure lvProcsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure btnCloseClick(Sender: TObject);
private
procedure FillThreadList(ProcID:Integer);
public
end;

var
frmMain: TfrmMain;

implementation

{$R *.DFM}
procedure TfrmMain.FillThreadList(ProcID: Integer);
var
hSnapshot:THandle;
ThreadEntry:TThreadEntry32;0D
RetVal:Bool;
LvItem:TListItem;
begin
lvThreads.Items.Clear;
0A hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
ThreadEntry.dwSize := Sizeof(ThreadEntry);
RetVal := Thread32First(hSnapshot,ThreadEntry);
while RetVal do
begin
if ThreadEntry.th32OwnerProcessID = Integer(ProcID) then
begin
LvItem := lvThreads.Items.Add;
LvItem.Data := Pointer((ThreadEntry.th32ThreadID));
LvItem.Caption := IntToStr(ThreadEntry.th32ThreadID);
end;
RetVal := Thread32Next(hSnapshot,ThreadEntry);
end;
CloseHandle(hSnapshot);
end;

procedure TfrmMain.btnRefreshClick(Sender: TObject);
var
hSnapshot:THandle;
ProcEntry:TProcessEntry32;0D
RetVal:Bool;
LvItem:TListItem;
TvNode:TTreeNode;
ThreadList:TList;
begin
lvProcs.Items.Clear;
hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD,GetCurrentProcessId);
ProcEntry.dwSize := Sizeof(ProcEntry);
RetVal := Process32First(hSnapshot,ProcEntry);
while RetVal do
begin
LvItem :=lvProcs.Items.Add;
LvItem.Caption :=(ProcEntry.szExeFile);
LvItem.SubItems.Add(IntToStr(ProcEntry.th32ProcessID));0D
LvItem.SubItems.Add(IntToStr(ProcEntry.th32ParentProcessID));
LvItem.SubItems.Add(IntToStr(ProcEntry.cntThreads));
0A LvItem.Data:=(Pointer(ProcEntry.th32ProcessID));
RetVal := Process32Next(hSnapshot,ProcEntry);
end;
CloseHandle(hSnapShot);
0Aend;

procedure TfrmMain.lvProcsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if Selected then
begin
FillThreadList(Integer(Item.Data));
end;
end;

procedure TfrmMain.btnCloseClick(Sender: TObject);
begin
Close;
end;
end.
wangkun007 2002-07-03
  • 打赏
  • 举报
回复
大虾们:怎么得到进程的ID !!!
请不要笑我!!!!!!!!谢谢!!!!
wangkun007 2002-07-03
  • 打赏
  • 举报
回复
yansea(思宏) 谢谢了
能不能多给点代码!我有些看不明白!!!!谢谢!!!
zsy_good 2002-07-03
  • 打赏
  • 举报
回复
枚举所有进程。得到那个在列表框中选中的进程ID
TerminateProcess
yansea 2002-07-03
  • 打赏
  • 举报
回复
找到该进程的id;
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
zfk51069 2002-07-03
  • 打赏
  • 举报
回复
我不知道,但我可以帮你up,我也想知道答案
中文/清晰/详细 框架 ———————————— 第一部分 Linux内核 第1章 硬件基础与软件基础 第2章 内存管理 第3章 进程 第4章 进程间通信机制 第5章 PCI 第6章 中断处理与设备驱动程序 第7章 文件系统 第8章 网络 第9章 内核机制与模块 第10章 处理器 第12章 Linux数据结构 ———————————————————————— 第二部分 Linux内核模块编程指南 第1章 Hello, World 第2章 字符设备文件 第3章 /proc文件系统 158 第4章 把/proc用于输入 162 第5章 把设备文件用于输入 170 第6章 启动参数 182 第7章 系统调用 185 第8章 阻塞处理 190 第9章 替换printk 199 第10章 任务调度 202 第11章 中断处理程序 207 第12章 对称多处理 211 第13章 常见错误 212 —————————————————— 第三部分 Linux程序员指南 第1章 Linux操作系统 219 第2章 Linux内核 220 第3章 Linux libc包 221 第4章 系统调用 222 第5章 “瑞士军刀”:ioctl 223 第6章 Linux进程间通信 224 第7章 声音编程 第9章 I/O端口编程 第10章 把应用程序移植到Linux上 —————————————— 第四部分 Linux内核概念系统结构 第1章 系统结构 第2章 子系统的系统结构 第3章 结论 336 ------------------------\ 第五部分 Linux内核具体系统结构 第1章 前言 第2章 系统结构 345 第3章 子系统结构 34 第4章 结论 365

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧