我需要知道应用程序是否正在运行其启动画面。我可以在任务栏和应用程序的标题中看到。但FindWindow不会返回有效的句柄。但是,只要应用程序在真实窗口中打开(非启动画面/带边框),FindWindow就会工作并返回一个有效的句柄,该窗口的名称完全相同。
我正在使用NULL ptr作为API的第一个参数。有没有其他方法可以检查进程/应用程序是否打开了他的闪屏?这并不意味着检查进程本身,因为在启动闪屏之前需要几秒钟。
答案 0 :(得分:0)
考虑使用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 */
}
}
}