2009-12-27 13 views
8

¿Cómo se hace una concha?
-Puede ejecutar aplicaciones de consola como FAR Manager con los colores y todos ...
Redirigir la salida de la consola no parece ser suficiente.
- PowerShell parece hacerlo sin usar cmd.exe.¿Cómo hacer un caparazón?

El juego final sería crear un shell gráfico (no usar la consola predeterminada).
Así que de lo que he reunido, que tendría que no sólo recuperar la consola IO pero interceptar las llamadas a la win32api sobre la consola (como WriteConsoleOutput, SetConsoleCursorPosition, ...)

+0

Buena pregunta CiNN, ¿qué versión (s) de Windows es probable que esté creando este shell? – Russell

+0

XP y Seven, según cómo se comporten :) – CiNN

Respuesta

3

En su forma más simple, una concha es simplemente un programa que lee una línea de comando y luego ejecuta el comando que el usuario ingresó usando una de las familias de funciones de exec(). Si desea admitir la redirección de E/S, tendrá que trabajar un poco más para analizar el comando, pero no es imposible, escribir un shell simple a menudo se establece como un ejercicio de programación para principiantes.

+0

Quiero crear un shell gráfico sin usar la consola. – CiNN

1

No estoy seguro, pero lo que tienes en mente son las API de la consola Win32. Esto es lo que debe llamar para interactuar en detalle con la ventana de consola de modo de caracteres.

Si desea algo similar a un caparazón que no es, de hecho, una ventana de consola, entonces necesita aprender sobre las tuberías Win32 y la API CreateProcess. Usará las tuberías para capturar la salida y alimentar la entrada.

Si quiere mezclar aplicaciones de GUI, entonces tiene un trabajo gigantesco por delante, si realmente quiere forzar que sus ventanas estén en el árbol de ventanas de su aplicación.

+0

Lo sé, creo que necesito interceptar esos para que pueda reimplementarlos en mi caparazón. – CiNN

0

La mayoría de las aplicaciones DOS con una interfaz gráfica de usuario no funcionarán si simplemente intercepta (redirige) la salida y la entrada. Estos programas, que normalmente escriben directamente en el hardware de video o usan interrupciones de DOS, necesitarán ejecutarse en una ventana de consola si está usando Windows. La consola de Windows emulará lo suficiente del entorno de DOS para que estos tipos de programas funcionen correctamente.

Como mencionó Neil Butterworth, debería utilizar una de las funciones de ejecución para iniciar programas. No se necesita nada especial para los programas de DOS: el sistema operativo puede ver al ejecutable si el programa es un programa de Windows o un programa de consola.

+0

Creo que dos pantalla completa se cayó desde Windows Vista. – CiNN

+0

Me refería a la consola, no al modo de pantalla completa. – jdigital

0

Un ejemplo completo, pero complejo, de un shell interactivo está disponible en Microsoft F# distribution. El código para el shell F # Interactive (FSI) se encuentra en la carpeta C: \ Archivos de programa \ FSharp-1.9.7.8 \ source \ fsharp \ Fsi.

Otro ejemplo en C está disponible como parte del TCL distribution. El código que implementa el shell de comandos TCL se encuentra en la carpeta \ win.

Cuestiones relacionadas