一、同意楼上的findwindow(nil,pChar(Edit1.Text)); 也可行的。 二、查看进程名来操作。代码如下: function TfrmMain.GetPID(_GetPName: String): String; var h:thandle; f:boolean; lppe:tprocessentry32; sTempExeFile : string; begin sTempExeFile := ''; h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0); lppe.dwSize := sizeof(lppe); f := Process32First(h, lppe); //lppe.szExeFile是进程的名字,自己挑选你要的 //lppe.th32ProcessID就是你要的进程号 while integer(f) <> 0 do begin //Memo1.Lines.Add(lppe.szExeFile); sTempExeFile := LowerCase(lppe.szExeFile); sTempExeFile := Trim(StringReplace(sTempExeFile,'.exe','',[rfreplaceall,rfignorecase])); //Memo1.Lines.Add(Trim(lowerCase(sTempExeFile))); if Trim(lowerCase(sTempExeFile)) = Trim(lowerCase(_GetPName)) then begin Result:=(inttostr(lppe.th32ProcessID)); break; end; f := Process32Next(h,lppe); end; if integer(f) = 0 then Result := '0'; end;
二、查看进程名来操作。代码如下:
function TfrmMain.GetPID(_GetPName: String): String;
var
h:thandle;
f:boolean;
lppe:tprocessentry32;
sTempExeFile : string;
begin
sTempExeFile := '';
h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0);
lppe.dwSize := sizeof(lppe);
f := Process32First(h, lppe);
//lppe.szExeFile是进程的名字,自己挑选你要的
//lppe.th32ProcessID就是你要的进程号
while integer(f) <> 0 do
begin
//Memo1.Lines.Add(lppe.szExeFile);
sTempExeFile := LowerCase(lppe.szExeFile);
sTempExeFile := Trim(StringReplace(sTempExeFile,'.exe','',[rfreplaceall,rfignorecase]));
//Memo1.Lines.Add(Trim(lowerCase(sTempExeFile)));
if Trim(lowerCase(sTempExeFile)) = Trim(lowerCase(_GetPName)) then
begin
Result:=(inttostr(lppe.th32ProcessID));
break;
end;
f := Process32Next(h,lppe);
end;
if integer(f) = 0 then
Result := '0';
end;