如何要求重启firefox?

时间:2012-06-04 14:36:09

标签: c++ windows winapi

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

那么,如何在用户使用它时重新启动firefox?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用标题查找Firefox的主窗口。我想Firefox会将当前页面的标题添加到主窗口的标题中,因此FindWindow是不够的。尝试使用EnumWindows枚举顶级窗口,并在标题中找到包含“Mozilla Firefox”的窗口。如果您有窗口句柄,请向其发送WM_CLOSE消息(使用PostMessage等待目标窗口处理消息),并等待它消失。您可以获得弹出窗口,以相同的方式查找和关闭它。如果几秒钟后Firefox主窗口仍处于打开状态(尝试反复查找),您可以致电TerminateProcess(为此需要GetWindowThreadProcessIdOpenProcess。关闭窗口后,通过调用CreateProcess重新启动Firefox。 (Web上有很多这些API函数的例子。)