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())
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)