本来想都写成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;
//看看能用不