sostituzione dell'emulatore di console predefinito in Windows XP


11

Come posso sostituire il programma predefinito che fornisce le finestre della console in Windows XP?

Conosco programmi alternativi e ho un collegamento da avviare cmd.exein Console2 . Ma ora voglio avviare le applicazioni console in Console2 anziché nel programma console predefinito, anche quando non ho alcun controllo sul programma che avvia l'applicazione console. ( consoleapp.exeVale a dire che viene avviato un programma non console e non posso modificarlo per avviare Console2, ma voglio comunque che l'applicazione venga avviata all'interno di una nuova istanza di Console2.)

(Si noti che voglio sostituire la console stessa, ovvero la finestra in cui vengono eseguite le applicazioni console (ovvero modalità testo). E devo essere in grado di eseguire applicazioni console arbitrarie e non modificate: un sostituto per un programma console specifico come Cmd non mi farà nulla di buono.)

EDIT : Quindi quello che sto cercando è una sostituzione CSRSS , che porta a

OT: Voglio sapere quando Microsoft realizzerà una sostituzione CSRSS decente. Non essere in grado di regolare la larghezza di un "terminale" ridimensionando la finestra è uno scherzo completo.

Vai a scaricare l'ISE già. (È incluso in Win7 / 2008R2.)

Ma per quanto ho capito questo ISE è un ambiente per Powershell , non un emulatore di console generale.


La mancanza menzionata nella nuova citazione non si applica a CMD quando viene eseguita all'interno di Console2, in ogni caso, IIRC.
paradroid

@ jason404: Sì, ma se si fa doppio clic su un file batch, ad esempio, non si aprirà in Console2. Istanze come questa sono quelle in cui potrebbe essere effettivamente necessario sostituire la shell della riga di comando. Penso che sia un'ottima domanda, +1.
Sasha Chedygov,

Potrebbe essere "Collegare" della console std nella nuova scheda dell'emulatore della console adatta a te? Collegamento manuale, intendo.
Massimo

@Maximus Non capisco a cosa ti riferisci. Per "console std" intendi CSRSS? Dov'è quella cosa "attaccata"?
Gilles 'SO- smetti di essere malvagio' il

ConEmu può allegare qualsiasi "console reale" esistente (CSRSS, sì) o semplici applicazioni GUI nella sua scheda. Il collegamento può essere eseguito manualmente dall'interfaccia di ConEmu o eseguendo un comando speciale nella console (se applicabile).
Massimo

Risposte:


9

Sono un autore di ConEmu - emulatore di console di Windows. Una delle sue caratteristiche è l'acquisizione nella sua scheda console esistenti o semplici applicazioni GUI. Quindi, dopo aver avviato il programma console nella console standard (CSRSS / ConHost), è possibile:

  • Nel menu di sistema di ConEmu, seleziona l'elemento "Allega ..." ( Win+ Gper impostazione predefinita) e scegli la finestra di collegamento. Se ConEmu non è stato avviato, è possibile avviarlo facoltativamente senza creare console / scheda all'avvio:

    C:\Tools\ConEmu.exe /detached
    
  • Oppure, se applicabile, eseguire nella console avviata il seguente comando (ConEmu \ Attach.cmd) che avvia il collegamento dal lato console. Nota, in tal caso, ConEmu.exe (GUI) verrà avviato automaticamente, se non esiste già.

    ConEmuC.exe /ATTACH /NOCMD
    
  • C'è un altro modo. Penso che non corrisponda ai tuoi requisiti, tuttavia lo rivelerò. C'è una chiave nel registro, il cui contenuto cmd / tcc viene eseguito dopo l'avvio della console. Mentre stai iniziando consoleapp.exe, no cmd.exe, questa signorina. Nel Cmd_Autorun.cmdfile ConEmu è presente un file per installare / disinstallare questo comando.

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

C'è un tag qui, su Superuser.com

UPD . Build 120704. Modalità alternativa non intrusiva di collegamento per le finestre della console.

ConEmu collega la finestra di dialogo della console esterna

UPD2 . Build 121128. È possibile intercettare, ad esempio, la "creazione della finestra della console" dalle applicazioni specificate (dall'utente) explorer.exe,vcexpress.exe. Ulteriori informazioni su questa intrusiva funzione sperimentale .


Sembra promettente, ma non funziona per me (suppongo che potrebbe funzionare per gli altri). Quando provo ad allegare consoleapp.exe, ricevo il messaggio ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057. Dato che consoleapp.exeè un programma di cui sto eseguendo il debug, vedere "iniettare il telecomando" mi fa sospettare che la tecnica usata da ConEmu non funzionerà mai per me - non posso permettere che programmi "stranieri" interferiscano con il programma di cui sto eseguendo il debug.
Gilles 'SO- smetti di essere malvagio' il

Prova a costruire 120704. Potrebbe essere la modalità alternativa funzionerà per te.
Massimo

Build 120704 con modalità alternative funziona, grazie. Se non riesco a sostituire l'emulatore di console predefinito, collegarsi a uno migliore dopo l'avvio dell'applicazione è meglio di niente. Tuttavia, non riesco a capire come farlo premendo un tasto .
Gilles 'SO- smetti di essere malvagio' il

@Maximus: non posso fare a meno di lodare il tuo ottimo lavoro. Uso raramente Windows, ma a volte sono costretto a farlo e, quando lo sono, ho bisogno dell'integrazione di Cygwin o Msys. Mentre Console2 aveva la soluzione più bella che ho visto finora, era piuttosto goffa. ConEmu è molto bello, ma desidero 2 cose: 1. dovrebbe avere un supporto migliore per i profili, cioè dovrebbe avere un gestore per il salvataggio / eliminazione dei profili della console personalizzati (es. Chiamata shdiretta; 2. dovrebbe consentire di suddividere la finestra in più schede verticali / orizzontali e richiama questa disposizione di schede personalizzata al riavvio
axel22

@ axel22: è possibile inviare desideri a ConEmu Issues . 1. Ci sono già profili. 2. Nella tabella di marcia.
Massimo

1

Non puoi. Le console Win32 utilizzano sempre le finestre della console integrata fornite da CSRSS.


Grazie, ora so cosa sto cercando è una sostituzione CSRSS.
Gilles 'SO- smetti di essere malvagio' il

@Gilles: buona fortuna con quello. (In realtà, su Windows 7 gran parte della sua funzionalità è stata spostata nel kernel, ma rimane ancora un "processo critico", essendo il cuore del sottosistema Win32 e tutto il resto.)
user1686

@Gilles: Quindi usa una shell diversa, come ho detto. La console Win32 è solo l'emulatore di terminale standard di Windows.
paradroid

1
@ jason404: E come ha detto Gilles, non è la shell (cmd.exe) ma la console (emulatore di terminale) che sta cercando di sostituire, in modo che qualsiasi programma che utilizzi le finestre della console utilizzi la sostituzione.
user1686

2
L'implementazione della finestra della console di Windows 7 è stata spostata csrssin conhost.exe. Purtroppo, è ancora la stessa vecchia interfaccia utente e, per quanto ne so, le sue API non sono documentate. Altro su blogs.technet.com/b/askperf/archive/2009/10/05/…
ak2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.