FindWindow在splashscreen上不起作用

时间:2012-07-31 16:46:28

标签: window find splash-screen

我需要知道应用程序是否正在运行其启动画面。我可以在任务栏和应用程序的标题中看到。但FindWindow不会返回有效的句柄。但是,只要应用程序在真实窗口中打开(非启动画面/带边框),FindWindow就会工作并返回一个有效的句柄,该窗口的名称完全相同。

我正在使用NULL ptr作为API的第一个参数。有没有其他方法可以检查进程/应用程序是否打开了他的闪屏?这并不意味着检查进程本身,因为在启动闪屏之前需要几秒钟。

1 个答案:

答案 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 */
        }
    }
}