Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

911
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!