0

アプリケーションがスプラッシュスクリーンを実行しているかどうかを知る必要があります。タスクバーとアプリケーションのタイトルで確認できます。ただし、FindWindow は有効なハンドルを返しません。しかし、アプリケーションが実際のウィンドウ (非スプラッシュ スクリーン/境界線付き) で開くとすぐに、FindWindow が機能し、有効なハンドルが返されると、ウィンドウはまったく同じ名前になります。

API の最初の引数に NULL ptr を使用しています。プロセス/アプリケーションがスプラッシュスクリーンを開いたかどうかを確認する他の方法はありますか? スプラッシュスクリーンが開くまでに数秒かかるため、これはプロセス自体をチェックするという意味ではありません。

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 に答える