qt 启动windows cmd接口

目的

qt 启动调用windows 命令行或者程序 exe, 达到外部启动程序。

主要有两种方案:

方案一:QProcess
有些程序启动, QProcess可能启动不了。

    QStringList arguments;
    arguments << "/c";
    arguments << command;
    QProcess::startDetached( "cmd", arguments );

方案二: system
用来操作管理员权限

system("start ms-settings:network");

方案三: openUrl

	QDesktopServices::openUrl(QUrl::fromLocalFile(path));

扩展

ms-settings

ms-settings: is a special protocol which can be used to open Settings pages and other Modern apps which have well known URIs. 
Here is the list of URIs for pages of the Settings app.

Windows 10中的“设置”应用取代了传统的“控制面板”。它包含许多页面,并继承了许多经典设置。
几乎每个“设置”页面都有其自己的URI,代表统一资源标识符。这使您可以使用特殊命令直接打开任何“设置”页面。

Windows 10中可用 “设置”页面URI(ms-settings)来快速打开应用或设置。

打开ms-settings

按Win + R打开“运行”对话框,然后键入ms-settings命令
按WIN + I键或从“开始”菜单中,键入ms-settings命令
打开命令提示符或Powershell并键入“启动ms-settings:URI命令”
在Windows资源管理器地址栏中,键入ms-settings命令
创建Windows快捷方式,然后在“创建快捷方式”窗口中键入“ ms-settings:URI命令”*

ms-settings
Windows 10「设置」应用完整MS-Settings快捷方式汇总

Qt中无法直接打开cmd中的su权限,因为Qt是一个跨平台的框架,并不依赖于Windows的命令行工具。如果您想在Windows上运行一段需要管理员权限的代码,可以使用Qt的QProcess类来启动一个新的进程,然后在新的进程中以管理员权限运行代码。 以下是一个简单的示例代码,演示如何使用QProcess类在Windows上以管理员权限运行一段代码: ```cpp #include <QCoreApplication> #include <QProcess> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString program = "cmd.exe"; QStringList arguments; arguments << "/c" << "echo hello" << "&&" << "pause"; QProcess process; process.setProgram(program); process.setArguments(arguments); process.setCreateProcessArgumentsModifier([](QProcess::CreateProcessArguments *args) { args->flags |= CREATE_NEW_CONSOLE; args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES; args->startupInfo->dwFlags |= STARTF_USESHOWWINDOW; args->startupInfo->wShowWindow = SW_SHOWMAXIMIZED; args->lpDesktop = (wchar_t *)L"WinSta0\\Default"; args->hStdOutput = nullptr; args->hStdError = nullptr; }); process.start("runas"); process.waitForFinished(-1); QString output = process.readAllStandardOutput(); QString error = process.readAllStandardError(); int exitCode = process.exitCode(); qDebug() << "Output:" << output; qDebug() << "Error:" << error; qDebug() << "Exit code:" << exitCode; return a.exec(); } ``` 在这个例子中,我们使用QProcess类启动一个新的cmd.exe进程,并以管理员权限运行一段代码。具体来说,我们将需要运行的代码放在arguments列表中,然后使用setProgram()方法设置程序名称为cmd.exe,使用setArguments()方法设置参数列表为arguments。接下来,我们使用setCreateProcessArgumentsModifier()方法设置一些进程启动选项,以确保新的进程以管理员权限运行。最后,我们使用start()方法启动进程,使用waitForFinished()方法等待进程结束,然后使用readAllStandardOutput()、readAllStandardError()和exitCode()方法获取进程的输出和退出码。 请注意,这个例子只是一个简单的演示,实际使用中您可能需要根据具体的代码和权限配置进行适当的修改。另外,需要注意的是,以管理员权限运行代码可能会对系统造成不可预知的影响,因此请谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值