让我们想象一下情况:我已经运行了名为"测试"的Windows服务。现在我想使用Qt app 停止或启动(如果它已停止)此服务。
我该怎么做?
注意:
我不想打电话给cmd并使用" net start"和" net stop"命令!
答案 0 :(得分:1)
您可以使用相应的Qt解决方案https://github.com/qtproject/qt-solutions/tree/master/qtservice
然后你可以做类似的事情:
QtServiceController controller("Test");
controller.stop();
controller.start();
答案 1 :(得分:0)
不幸的是,Qt没有在API上提供此类服务。
您需要研究WinAPI解决方案。 有an example on MSDN如何停止服务。我相信你可以想出如何使用相同的方法启动它。
此外,您还可以检查much smaller example如何启动和停止服务。
答案 2 :(得分:0)
您可以只使用 sc
命令(this page 有一些使用信息或只需在命令提示符下键入 sc
)。
sc stop Test
sc start Test
所以:
QProcess::execute("sc", { "stop", "Test" });
QProcess::execute("sc", { "start", "Test" });
请注意,您需要在提升的上下文中运行才能控制大多数服务。
如果您愿意,也可以使用 net
代替 sc
,启动和停止的语法相同。
参数需要是服务键名,而不是显示名;因此,如果您只有显示名称,则可以运行 sc query
或 sc GetKeyName "Display Name"
并解析输出。