Reemplazar el emulador de consola predeterminado en Windows XP

11

¿Cómo puedo reemplazar el programa predeterminado que proporciona ventanas de consola en Windows XP?

Sé de programas alternativos , y tengo un atajo para comenzar cmd.exeen Console2 . Pero ahora quiero que las aplicaciones de consola se inicien en Console2 en lugar del programa de consola predeterminado, incluso cuando no tengo control sobre el programa que inicia la aplicación de consola. (Es decir consoleapp.exe, se inicia un programa que no es de consola , y no puedo cambiarlo para iniciar Console2, pero todavía quiero que la aplicación se inicie dentro de una nueva instancia de Console2).

(Tenga en cuenta que quiero reemplazar la consola en sí, es decir, la ventana en la que se ejecutan las aplicaciones de la consola (es decir, el modo de texto). Y debo poder ejecutar aplicaciones de consola arbitrarias y no modificadas: un sustituto de un programa de consola específico como Cmd no me hará ningún bien.)

EDITAR : Entonces, lo que busco es un reemplazo CSRSS , lo que conduce a

OT: Quiero saber cuándo Microsoft va a hacer un reemplazo CSRSS decente. No poder ajustar el ancho de un "terminal" cambiando el tamaño de la ventana es una broma completa.

Ve a descargar el ISE ya. (Está incluido en Win7 / 2008R2.)

Pero hasta donde yo entiendo, este ISE es un entorno para Powershell , no un emulador de consola general.

Gilles 'SO- deja de ser malvado'
fuente
La deficiencia mencionada en su nueva cotización no se aplica a CMD cuando se ejecuta dentro de Console2, de todos modos, IIRC.
paradroid
@ jason404: Sí, pero si hace doble clic en un archivo por lotes, por ejemplo, no se abrirá en Console2. Instancias como esta es donde realmente podría necesitar reemplazar el shell de la línea de comando. Creo que es una gran pregunta, +1.
Sasha Chedygov
Puede ser "Adjuntar" de la consola estándar a la nueva pestaña del emulador de consola. Adjunto manual, quiero decir.
Maximus
@Maximus No entiendo a qué te refieres. Por "consola estándar", ¿te refieres a CSRSS? ¿Dónde está esa cosa de "adjuntar"?
Gilles 'SO- deja de ser malvado'
ConEmu puede adjuntar cualquier "consola real" existente (CSRSS, sí) o aplicaciones GUI simples en su pestaña. La conexión puede realizarse manualmente desde la interfaz de ConEmu, o mediante un comando especial de ejecución en la consola (si corresponde).
Maximus

Respuestas:

9

Soy autor de ConEmu - Emulador de consola de Windows. Una de sus características es capturar en su pestaña las consolas existentes o las aplicaciones GUI simples. Entonces, después de iniciar el programa de consola en la consola estándar (CSRSS / ConHost), puede:

  • En el menú del sistema ConEmu, elija el elemento "Adjuntar ..." ( Win+ Gpor defecto) y elija adjuntar ventana. Si no se inició ConEmu, puede iniciarlo opcionalmente sin crear una consola / pestaña al inicio:

    C:\Tools\ConEmu.exe /detached
    
  • O, si corresponde, ejecute en la consola iniciada el siguiente comando (ConEmu \ Attach.cmd) que inicia la conexión desde el lado de la consola. Tenga en cuenta que, en ese caso, ConEmu.exe (GUI) se iniciará automáticamente, si aún no existe.

    ConEmuC.exe /ATTACH /NOCMD
    
  • Hay un camino mas. Creo que no cumple con sus requisitos, sin embargo, lo divulgaré. Hay una clave en el registro, cuyo contenido se ejecuta cmd / tcc después del inicio de la consola. Mientras comienzas consoleapp.exe, no cmd.exe, esta señorita. Hay un Cmd_Autorun.cmdarchivo en ConEmu distrib para instalar / desinstalar este comando.

    [HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
    "AutoRun"="\"<Command to be executed>\"" 
    

Hay una etiqueta aquí, en Superuser.com

UPD . Compilación 120704. Modo de conexión alternativo no intrusivo para ventanas de consola.

ConEmu adjuntar diálogo de consola externa

UPD2 . Compilación 121128. Es posible interceptar la "creación de la ventana de la consola" desde aplicaciones especificadas (por el usuario), por ejemplo explorer.exe,vcexpress.exe. Lea más sobre esta característica experimental intrusiva .

Maximus
fuente
Parece prometedor, pero no funciona para mí (supongo que podría funcionar para otros). Cuando trato de adjuntar consoleapp.exe, recibo el mensaje ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057. Como consoleapp.exees un programa que estoy depurando, ver "inyectar a distancia" me hace sospechar que la técnica utilizada por ConEmu nunca funcionará para mí, no puedo permitir que programas "extranjeros" perturben el programa que estoy depurando.
Gilles 'SO- deja de ser malvado'
Pruebe la compilación 120704. Puede que el modo alternativo funcione para usted.
Maximus
Build 120704 con trabajos en modo alternativo, gracias. Si no puedo reemplazar el emulador de consola predeterminado, es mejor adjuntarlo a uno mejor después de iniciar la aplicación. Sin embargo, no puedo entender cómo hacerlo con solo presionar una tecla .
Gilles 'SO- deja de ser malvado'
@Maximus: No puedo evitar elogiar tu gran trabajo. Raramente uso Windows, pero a veces me veo obligado a hacerlo, y cuando lo hago, necesito la integración de Cygwin o Msys. Si bien Console2 tenía la mejor solución que vi hasta ahora, era algo torpe. ConEmu es muy agradable, pero deseo 2 cosas: 1. Debería tener un mejor soporte para perfiles, es decir, debería tener un administrador para guardar / eliminar perfiles de consola personalizados (por ejemplo, llamando shdirectamente; 2. Debería permitir dividir la ventana en múltiples pestañas verticales / horizontales y recupere esta disposición de pestañas personalizadas al reiniciar.
axel22
@ axel22: puede publicar deseos en ConEmu Issues . 1. Ya hay perfiles. 2. En la hoja de ruta.
Maximus
1

No puedes Las consolas Win32 siempre usan las ventanas de consola integradas proporcionadas por CSRSS.

usuario1686
fuente
Gracias, ahora sé que lo que busco es un reemplazo CSRSS.
Gilles 'SO- deja de ser malvado'
@Gilles: Buena suerte con eso. (En realidad, en Windows 7 gran parte de su funcionalidad se ha movido en el núcleo, pero aún se mantiene un "proceso crítico", siendo núcleo del subsistema Win32 y todo eso.)
user1686
@Gilles: Entonces usa un caparazón diferente, como dije. La consola Win32 es solo el emulador de terminal estándar de Windows.
paradroid
1
@ jason404: Y como dijo Gilles, no es el shell (cmd.exe) sino la consola (emulador de terminal) lo que está buscando reemplazar, por lo que cualquier programa que use ventanas de consola usaría el reemplazo.
user1686
2
Implementación de una ventana de la consola de Windows 7 se ha movido fuera de csrssdentro conhost.exe. Lamentablemente, sigue siendo la misma interfaz de usuario anterior, y que yo sepa, sus API no están documentadas. Más en blogs.technet.com/b/askperf/archive/2009/10/05/…
ak2