qprocess启动cmd无效

qprocess启动cmd无效,第1张

QProcess启动cmd无效可能有多种原因,例如:

1. 程序权限不足,无法执行cmd命令

2. cmd命令格式不正确,导致无法执行;

3. 程序路径不正确,无法找到cmd;

4. 程序运行时出现错误,导致无法执行cmd命令。

如果你遇到这种情况,可以尝试以下解决方案:

1. 确认程序权限是否足够,尝试以管理员身份运行程序;

2. 检查cmd命令格式是否正确,可以通过手动执行cmd命令测试;

3. 确认程序路径是否正确,可以使用绝对路径或者相对路径;

4. 查看程序日志或者调试信息,确定程序是否出现错误。

如果以上方法无法解决问题,可以考虑使用其他方法启动cmd命令,例如使用Qt的QProcess启动其他命令或者使用系统API启动cmd。

建议通过进程间通信完成

在程序A中调用Process.Start带上通讯的必要参数,在程序B启动时根据参数执行必要处理,在处理完成后,根据提供的参数依据协议向A通知。

提供两种思路:

1、A窗口通过回调处理Window消息,在调用Process.Start时带上自己的窗口句柄,B启动记录该窗口句柄,在完成指定功能处理后,向该窗口句柄发送消息。A收到消息,继续接下来的处理。

2、A创建Socket在指定端口侦听,在调用Process.Start时,带上IP(分布式)和端口,B启动后完成指定处理,便可以依据通讯协议,向IP的端口发送通知。

try

{

Process proc = new Process()

proc.StartInfo.WorkingDirectory = @"C:\Users\Administrator\source\repos\sss\sss\bin\Debug\netcoreapp2.1\"

proc.StartInfo.FileName = " cmd.exe "

proc.StartInfo.Arguments = @" /c C:\Users\Administrator\source\repos\sss\sss\bin\Debug\netcoreapp2.1\sss.bat"

proc.Start()

proc.Close()

proc.Dispose()

string file = proc.StartInfo.WorkingDirectory + "sss.bat"

Thread.Sleep(300)

Console.WriteLine("程序sss已开启")

Process[] getProcessName = Process.GetProcesses()

foreach (Process pro in getProcessName)

{

if (pro.ProcessName == "dotnet")

{

if (!ht.Contains(pro.Id))

{

ht.Add(pro.Id, file)

}

}

}

}

catch (Exception ex)

{

Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString())

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11205919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存