为什么开机自启动时隐藏窗口失败,手动启动则可以

我想要用ffplay做一个视频壁纸的软件,在开机自启动这里
ffplay启动并播放一个视频会产生一个黑框
这个黑框的类名是 CASCADIA_HOSTING_WINDOW_CLASS
窗口的标题是ffplay.exe的路径
开机启动了程序时,已经找到了这个黑框
想要用ShowWindow(ffplay, SW_HIDE)隐藏这个黑框但是没有反应,且ffplay这个句柄不是空的
但是如果是手动运行程序就能隐藏

if (CreateProcess(PlayerCommand, VideoPath, 0, 0, 0, 0, 0, 0, &si, &pi))
    {
        //等待ffplay启动
        Sleep(700);
        //找到ffplay产生的黑框
        ffplayCmd = FindWindow(L"CASCADIA_HOSTING_WINDOW_CLASS", 0);
        if (ffplayCmd == NULL)
        {
            //若未找到则提示 但并不终止程序
            MessageBox(NULL, wcscat(PlayerCommand, L"\n未找到ffplayCmd窗口"), L" 错误", 0);
        }
        //隐藏黑框
        ShowWindow(ffplayCmd, SW_HIDE);//这里没有成功隐藏
        }

点击右侧采纳即可:
有可能是开机时自启动的程序在启动过程中,在操作系统初始化完成之前窗口就已经被创建了,因此在启动后找到的窗口句柄已经没有任何作用,隐藏窗口也无法生效。为了解决这个问题,可以考虑延长等待的时间,以确保窗口的创建是在操作系统初始化完成之后进行的。另外,也可以使用更复杂的方法,比如使用线程或回调函数等,来监听窗口的创建事件,并在窗口创建后立即隐藏它。