function TForm1.GetProcessId(processname : string): integer;
var
Ret :BOOL;
s: string;
sss : integer;
FProcessEntry32 : TProcessEntry32;
begin
sss := 0;
FN := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize := sizeof(FProcessEntry32);
Ret := Process32First(FN,FProcessEntry32);
while Ret do begin
s := ExtractFileName(FProcessEntry32.szExeFile);
if (s = processname) then begin
sss := FProcessEntry32.th32ProcessID;
break;
end
else begin
Ret := Process32Next(FN,FProcessEntry32);
end;
end;
result := sss;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
pid : THandle;
begin
pid := GetProcessId(SNmae);
SendMessage(pid,WM_CLOSE,0,0);
end;上面的程序 是我在自己的程序中关闭一个 被自己启动的进程 问题是 SendMessage(pid,WM_CLOSE,0,0); 根本没起作用 .其他的关闭 比如 CloseHnad TerminaeProcee ExitProcess 都不起作用 请高手指教
var
Ret :BOOL;
s: string;
sss : integer;
FProcessEntry32 : TProcessEntry32;
begin
sss := 0;
FN := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize := sizeof(FProcessEntry32);
Ret := Process32First(FN,FProcessEntry32);
while Ret do begin
s := ExtractFileName(FProcessEntry32.szExeFile);
if (s = processname) then begin
sss := FProcessEntry32.th32ProcessID;
break;
end
else begin
Ret := Process32Next(FN,FProcessEntry32);
end;
end;
result := sss;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
pid : THandle;
begin
pid := GetProcessId(SNmae);
SendMessage(pid,WM_CLOSE,0,0);
end;上面的程序 是我在自己的程序中关闭一个 被自己启动的进程 问题是 SendMessage(pid,WM_CLOSE,0,0); 根本没起作用 .其他的关闭 比如 CloseHnad TerminaeProcee ExitProcess 都不起作用 请高手指教
向进程发送消息能得到什么
PostThreadMessage试试
TerminateProcess 第一个参数是进程句柄(OpenProcess得到),同时还要有操作权限
ExitProcess 是退出本进程
pid := GetProcessId(SNmae);
m_hOpenProcess := OpenProcess(PROCESS_TERMINATE,true,pid);
TerminateProcess(m_hOpenProcess, 0);