我创建了一个c ++程序,它也安装了一个firefox扩展。所以,要使这个扩展工作,他需要重新启动firefox。
那么,如何在用户使用它时重新启动firefox?
答案 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
(为此需要GetWindowThreadProcessId
和OpenProcess
。关闭窗口后,通过调用CreateProcess
重新启动Firefox。 (Web上有很多这些API函数的例子。)