pasar para hackear form ejecutar consola como comandos basicos administrador c# cmd console-application windows-applications

c# - para - como pasar de consola a windows form



Inicio de aplicación de Windows vs aplicación de consola a través de Cmd (2)

Esta información se almacena como parte de la porción PEOptHeader del formato binario EXE. Específicamente, el campo Subsystem le dice al sistema operativo qué tipo de aplicación es y puede tener los siguientes valores

  • 1: Nativo
  • 2: Windows / GUI
  • 3: Windows no-GUI
  • 5: OS / 2
  • 7: POSIX

Esto es lo que le dice a Windows qué tipo de programa es y, por lo tanto, le da la capacidad de tomar decisiones diferentes como hace cmd.

Enlace de documentación

Tengo una pregunta curiosa sobre Console vs Windows Application cuando ejecuto la aplicación desde Cmd, llamando al exe directamente.
Si la aplicación se compila como una aplicación de consola (se referirá a ella como mi ConApp ), al ejecutar la aplicación a través del cmd, el indicador espera a que la aplicación finalice la ejecución antes de continuar. Sin embargo, si la aplicación ha sido compilada como una aplicación de Windows (se referirá a ella como mi WinApp ), al iniciar la aplicación a través de cmd, la solicitud activará y olvidará WinApp , comprensiblemente este es el comportamiento esperado.
Para hacer que WinApp detenga el cmd de disparar y olvidar, uno debería iniciar la aplicación en cmd con algo como "start / wait WinApp.exe", esto hará que el indicador Cmd espere a que WinApp deje de ejecutarse antes continuo.
Mi pregunta al respecto es cómo informa la aplicación de consola al Cmd, o cómo sabe el Cmd que debe permanecer abierto, y no dispara y olvida el ConApp ? ¿Y es posible invocar el mismo tipo de comportamiento en mi WinApp, es decir, para no tener que llamar a "start / wait"?

Nota:
He jugado con el uso de AllocConsole y AttachConsole, sin embargo, al usar AttachConsole (-1) en mi WinApp , el Cmd todavía dispara y olvida el WinApp, sin embargo, parece que WinApp acaba de abrir una nueva ventana de consola.


Dejando a un lado los detalles técnicos ( JaredPar hizo un muy buen trabajo al hacer eso ), si quiere cambiar su programa de modo Windows/GUI a Windows non-GUI todo lo que tiene que hacer es ir a la configuración de su proyecto y cambiar el menú desplegable desde "Aplicación de Windows" a "Aplicación de consola"

Puede hacer que una aplicación de Windows se ejecute como una aplicación de consola y le dará el comportamiento que espera. (Sin embargo, tenga en cuenta que ahora, si hace doble clic en el icono del programa, se abrirá una ventana de la consola que permanecerá abierta mientras el programa esté abierto).