QProcess.execute() 一个 DOS 命令
QProcess.execute() a DOS command
我正在尝试调用DOS命令: subst
与QProcess
QProcess process;
int returnCode=process.execute(QString("subst " + DLetter+" "+mountPath));
qDebug()<<"returnCode"<<returnCode;
if (returnCode==0){
qDebug()<<"Mount "<<QString("subst " + DLetter+" "+mountPath)
<<"error"<<process.errorString()<<"id"<<process.pid();
process.waitForFinished();
...
}else
qDebug()<<" mounting folder failed "<<process.errorString();
我的问题是:调用execute()
和waitForFinished()
就足够了吗? 调用 execute() 而不是 start 是否安全? 因为我在start()
上遇到了问题:它并非在所有情况下都有效(它适用于挂载,不适用于卸载文件夹)。
任何帮助将不胜感激。
来自 QProcess::execute() 的文档 at http://doc.qt.digia.com/qt/qprocess.html#execute
您应该这样做:
int returnCode=process::execute(QString("subst " + DLetter+" "+mountPath));
qDebug()<<"returnCode"<<returnCode;
if (returnCode==0){
qDebug()<<"Mount "<<QString("subst " + DLetter+" "+mountPath)
<<"error"<<process.errorString()<<"id"<<process.pid();
}else
qDebug()<<" mounting folder failed ";
键是 QProcess::execute 是一个静态成员函数,它启动程序,等待它完成,然后返回进程的退出代码。
注意:我必须删除对process.waitForDone()和process.errorString()的非静态调用,因为两者都不能从静态QProcess::execute工作。
如果您尝试调用 DOS 函数,请尝试使用
#include <process.h>
...
system( "dir c:\temp > c:\temp\output.txt" );
但这现在已经过时了。尝试使用
int nRet= (int)ShellExecute( 0,"open","calc.exe",0,0,SW_SHOWNORMAL);
if ( nRet <= 32 )
{
DWORD dw= GetLastError();
char szMsg[250];
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
0, dw, 0,
szMsg, sizeof(szMsg),
NULL
);
MessageBox( szMsg, "Error launching Calculator" );
}
请参阅 http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx 了解如何使用此功能。
相关文章:
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 将 Tcl 中的命令输出重定向到文件时,文件以 DOS 格式生成
- 如果我输入错误的 dos 命令,shellexecute 会给出正确的结果
- QProcess.execute() 一个 DOS 命令
- XCOPY Dos命令从子文件夹复制
- borland如何在C++中捕获DOS命令的结果
- 使用Borland C++执行dos命令并保存输出
- 在C++中使用 Dos 命令时使用 GetLastError
- 如何在MS DOS而不是Borland上手动编译和运行(通过单个命令)C++程序
- 如何创建一个C/ c++程序,生成XML并在之后运行DOS命令