如何销毁进程!!!!!!!!!!!!!!(50分)

  • 主题发起人 主题发起人 scu006
  • 开始时间 开始时间
S

scu006

Unregistered / Unconfirmed
GUEST, unregistred user!
我开了一个excel.exe进程
如何销毁它!!!!
 
怎么没有人回答呢
 
怎么开的? ole创建的, 那就close, 然后quit. 再释放对象。
如果是直接创建进程, 那就得杀进程。
 
本来想都写成d的,结果d没有PROCESSENTRY32结构

取得进程pid;
extern "C" DWORD __declspec(dllexport) __stdcall Getprocessid(char * processname)
{
DWORD Pid=-1;
HANDLE snaphandle;
BOOL loopok=true;
snaphandle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 lPrs;
ZeroMemory(&lPrs,sizeof(lPrs));
lPrs.dwSize=sizeof(lPrs);
Process32First(snaphandle,&lPrs);//取得系统快照里第一个进程信息
if (strstr(processname,lPrs.szExeFile))
{
Pid=lPrs.th32ProcessID;
return Pid;
}
while (loopok)
{
ZeroMemory(&lPrs,sizeof(lPrs));
lPrs.dwSize=(&lPrs,sizeof(lPrs));
if(!Process32Next(snaphandle,&lPrs))//继续枚举进程信息
{
Pid=-1;
return Pid;
break;
}

procedure TForm1.Button1Click(Sender: TObject);
var
hproc:Thandle;
dwidold:dword; //pid
begin
dwidold:=GetProcessid(pchar('explorer.exe'));//可从进程管理器查pid,在这里试验
hProc:=OpenProcess(PROCESS_ALL_ACCESS,false,dwIdOld);//权限要注意。
TerminateProcess(hproc,1);//如果你能直接得到进程句柄就这么一句就够了
end;
//看看能用不
 
具体是这样的
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );//动态创建
..........
ExcelApp.quit;
这样能销毁开的EXCEL.EXE进程吗?
 
To baiduan:“本来想都写成d的,结果d没有PROCESSENTRY32结构”
Delphi有ProcessEntry32的,在TLHelp32里。

.Quit; 就能销毁进程了。不过用了CreateOleObject,最好Freeandnil(ExcelApp);一下。
 
如果加一句.close;是不是就可以了呢?
谢谢楼上的所有朋友
 
多人接受答案了。
 
后退
顶部