Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

914
Visualizações
Aplicación de consola C#: ¿Hay alguna forma de detectar si el exe se ejecutó desde una línea de comandos o no?

Si ejecuto mi Program.exe desde una ventana de línea de comando existente, cuando finaliza y sale, la salida de la consola todavía está allí y se puede ver.

Si solo hago doble clic en mi Program.exe , se abrirá una nueva ventana de línea de comando, para la salida de la consola... pero cuando mi exe finalice, esa ventana se cerrará y se llevará las salidas.

En el último caso, para evitar la pérdida de registros de salida, es posible que desee que las últimas 2 líneas de mi Main() sean Console.WriteLine("Press any key to exit"); Console.ReadKey();

Pero si hago eso en el primer caso, entonces es levemente molesto.

¿Hay alguna forma de detectar la diferencia entre esos 2 escenarios, de modo que pueda hacer eso de "esperar a que el usuario diga que puedo cerrar" condicionalmente ... solo si es necesario?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Si desea verificar si su aplicación se inicia desde la línea de comando en .NET, puede usar Console.GetCursorPosition() . La razón por la que esto funciona es que cuando lo inicias desde la línea de comando, el cursor se aleja del punto inicial ( (0, 0) ) porque escribiste algo en la terminal (el nombre de la aplicación). Puedes hacer esto con una comprobación de igualdad:

 // .NET 6 class Program { public static void Main(string[] args) { if (Console.GetCursorPosition() == (0, 0)) { //something GUI } else { //something not GUI } } }

Nota: debe establecer el tipo de salida en Aplicación de consola, ya que otros tipos de salida harán que Console.GetCursorPosition() genere una excepción.

over 4 years ago · Santiago Trujillo Relatório

0

Para los casos de ejecutar una aplicación de consola desde una línea de comandos y ejecutarla desde Visual Studio, Process.GetCurrentProcess().MainWindowTitle está vacío. En estos casos, NO necesita Console.ReadLine() adicional.

Cuando lo ejecuta haciendo doble clic en el Explorador de Windows, el título de la ventana es la ruta del exe. En este caso, SÍ necesita la Console.ReadLine() adicional.

Entonces, un enfoque algo complicado (¡que solo probé para los tres casos anteriores!) podría ser agregar esto al final de Main() :

 if (!string.IsNullOrEmpty(Process.GetCurrentProcess().MainWindowTitle)) Console.ReadLine();

No usaría esto en el código de producción, pero podría ser útil como un truco rápido para las utilidades de prueba, etc.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda