我需要知道应用程序是否正在运行其启动画面。我可以在任务栏中看到应用程序的标题。但是 FindWindow 没有返回有效的句柄。但是,一旦应用程序在真实窗口(非启动屏幕/带边框)中打开,FindWindow 工作并返回一个有效句柄,该窗口具有完全相同的名称。
我使用 NULL ptr 作为 API 的第一个参数。有没有其他方法可以检查进程/应用程序是否打开了他的启动画面?这并不意味着检查进程本身,因为在启动画面打开之前需要几秒钟。
我需要知道应用程序是否正在运行其启动画面。我可以在任务栏中看到应用程序的标题。但是 FindWindow 没有返回有效的句柄。但是,一旦应用程序在真实窗口(非启动屏幕/带边框)中打开,FindWindow 工作并返回一个有效句柄,该窗口具有完全相同的名称。
我使用 NULL ptr 作为 API 的第一个参数。有没有其他方法可以检查进程/应用程序是否打开了他的启动画面?这并不意味着检查进程本身,因为在启动画面打开之前需要几秒钟。
考虑使用 EnumWindows 函数并获取属于指定进程的所有窗口
void FindProcessWindows()
{
DWORD pid;
/* .. */
/* Get target process id */
/* .. */
EnumWindows(&EnumWindows, pid);
}
BOOL CALLBACK EnumWindows(HWND hWnd, LPARAM lParam)
{
DWORD pid;
if((GetWindowLong(hWnd, GWL_STYLE) & WS_VISIBLE))
{
GetWindowThreadProcessId(hWnd, &pid);
if(pid == lParam)
{
/* You've found a window that belongs to the specified process */
}
}
}