滑稽EX 2023-02-06 20:38 采纳率: 66.7%
浏览 15
已结题

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

我想要用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);//这里没有成功隐藏
        }

  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-06 20:45
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 创建了问题 2月6日

悬赏问题

  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 qgcomp混合物线性模型分析的代码出现错误:Model aliasing occurred
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'