即使使用WM_SETTEXT更改了应用程序的名称,也会检测该应用程序?

时间:2016-01-17 21:42:01

标签: delphi

我正在Delphi中开发一个程序。我希望这个程序检测另一个程序X是否正在运行并关闭它。我已经看到你可以用WM_SETTEXT消息更改任何程序的名称,然后再给它一个 名。

有没有办法看到程序的真实姓名,即使它的名字已经用WM_SETTEXT更改了?

1 个答案:

答案 0 :(得分:1)

如果您知道所需程序的.exe文件名,则可以使用EnumWindows()枚举可用的运行窗口。在检测到的每个HWND的回调函数中,使用GetWindowThreadProcessId()OpenProcess()向拥有该窗口的进程打开HANDLE,然后使用GetModuleFileName/Ex()GetProcessImageFileName()QueryFullProcessImageName()检索其文件名。找到您感兴趣的文件名后,您将知道哪个HWND(s)属于该进程,然后可以根据需要关闭它们。