Pergunta

Estou tentando criar um aplicativo de formulário C# que me permitirá usar todos os meus programas C++ anteriores a partir de um programa central.

Consigo abrir os ex com Process.Start(), porém não compila o código corretamente.

Código de exemplo:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

Isso abrirá o console e agirá como se estivesse em execução, mas não funciona como quando normalmente compilo a partir do editor C++.Tem alguma startinfo variável que preciso definir para indicar que é um programa C++ ou algo nesse sentido?

Além disso, existe alguma maneira de executar um programa C++ usando process.start isso me permitirá passar variáveis ​​através da linha de comando via argc e argv?

Obrigado

Foi útil?

Solução

Existem apenas algumas diferenças quando você usa Process.Start da maneira que você fez vs.quando você apenas executa o programa diretamente.Ambos podem ser resolvidos usando ProcessStartInfo.

  1. O Diretório de trabalho não será o mesmo.Defina isso como o caminho que contém o executável para obter o mesmo comportamento.
  2. Definir UseShellExecute como verdadeiro, então o shell do Windows é usado para executar o processo.

Quanto à adição de argumentos de linha de comando:Você pode fazer isso através ProcessStartInfo.Argumentos.No entanto, não deveria ser necessário por ser um aplicativo C++.

Outras dicas

Até agora, há apenas informações suficientes para responder à sua pergunta final.Sim, você pode incluir argumentos de linha de comando como mostrado aqui.Veja a seção intitulada "=== Programa que executa EXE (C#) ==="

Para adicionar argumentos de linha de comando:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();

Depois que o programa for compilado em um EXE, não importa em qual idioma ele foi escrito.

Quanto aos argumentos do programa, você precisa dar uma olhada na classe ProcessStartInfo e na substituição de Process.Start() que a utiliza: Process.Start(ProcessStartInfo)

Enfrentei um problema semelhante em python. Você espera uma saída detalhada?

No meu caso, o buffer de saída ficou cheio e, portanto, a execução foi interrompida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top