0

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

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

4

1 回答 1

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 */
        }
    }
}
于 2012-08-01T06:25:33.530 回答