获取系统当前活动窗口的句柄及对应的进程名

发布时间 2023-05-30 14:16:49作者: lucken
// 下面的GetProcessNameById函数如下
uses TLhelp32;
function GetProcessNameById(const AID: Integer): String;
var     
h:thandle;     
f:boolean;     
lppe:tprocessentry32;
begin     
Result := '';     
h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0);     
lppe.dwSize := sizeof(lppe);     
f := Process32First(h, lppe);     
while integer(f) <> 0 do     
begin       
if Integer(lppe.th32ProcessID) = AID then       
begin         
Result:= StrPas(lppe.szExeFile);         
break;       
end;       
f := Process32Next(h, lppe);     
end;
end;
var
  wnd: HWnd;
  title: array[0..MAX_PATH] of char;
  formH: HWND;
  dwProcessID: DWORD;
  s: string;
  menu_string: string;
  group_string: string;
begin

  formh := GetForegroundWindow;//获得当前活动窗口句柄
  GetWindowThreadProcessId(formH, dwProcessID); //通过活动窗口句柄获取对应的进程ID
  s := GetProcessNameById(dwProcessID);// GetProcessNameById函数如下

                                                                 //通过上面得到的进程ID得到对应的进程名称,这里也就得到了当前系统处于活动状态的进程名称

end;