【问题标题】:How to ask to restart firefox?如何要求重启firefox?
【发布时间】:2012-06-04 14:36:08
【问题描述】:

我创建了一个 c++ 程序,它还安装了一个 firefox 扩展。所以,要让这个扩展工作,他需要重新启动 Firefox。

那么,当用户使用它时,我如何要求重新启动 Firefox 呢?

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    这种看起来像是这个问题的重复:winapi - How can I get a process handle by its name in C++。本质上,你要做的是“找到”进程“firefox.exe”(代替“target.exe”),如果找到它成功,你会弹出一个警告对话框来关闭firefox并重新-打开。如果没有,您只需继续安装或其他。希望这有帮助!

    【讨论】:

      【解决方案2】:

      使用标题找到 Firefox 的主窗口。我猜Firefox会将当前页面的标题附加到主窗口的标题中,所以FindWindow是不够的。尝试使用EnumWindows 枚举顶级窗口,并在标题中找到包含“Mozilla Firefox”的窗口。如果你有窗口句柄,发送WM_CLOSE 消息给它(使用PostMessage 等待目标窗口处理消息),然后等待它消失。你可能会得到一个弹出窗口,以同样的方式找到并关闭它。如果几秒钟后 Firefox 主窗口仍然打开(尝试反复查找),您可以调用TerminateProcess(为此您需要GetWindowThreadProcessIdOpenProcess)。当窗口关闭时,通过调用CreateProcess 重新启动 Firefox。 (网络上有很多关于所有这些 API 函数的示例。)

      【讨论】:

        猜你喜欢
        • 2023-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        • 2014-02-16
        相关资源
        最近更新 更多