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