remplacement de l'émulateur de console par défaut sous Windows XP


11

Comment puis-je remplacer le programme par défaut fournissant des fenêtres de console sous Windows XP?

Je connais des programmes alternatifs et j'ai un raccourci pour démarrer cmd.exedans Console2 . Mais maintenant, je veux que les applications de console démarrent dans Console2 plutôt que le programme de console par défaut, même lorsque je n'ai aucun contrôle sur le programme qui démarre l'application de console. (C'est-à-dire qu'un programme non-console démarre consoleapp.exeet je ne peux pas le changer pour démarrer Console2 à la place, mais je veux quand même que l'application soit démarrée dans une nouvelle instance de Console2.)

(Notez que je veux remplacer la console elle-même, c'est-à-dire la fenêtre dans laquelle s'exécutent les applications de console (c'est-à-dire en mode texte). Et je dois pouvoir exécuter des applications de console arbitraires et non modifiées: un substitut pour un programme de console spécifique tel que Cmd ne me fera aucun bien.)

EDIT : Donc, ce que je veux, c'est un remplacement CSRSS , ce qui conduit à

OT: Je veux savoir quand Microsoft va faire un remplacement CSRSS décent. Ne pas pouvoir ajuster la largeur d'un "terminal" en redimensionnant la fenêtre est une blague complète.

Allez télécharger l'ISE déjà. (Il est inclus dans Win7 / 2008R2.)

Mais pour autant que je sache, cet ISE est un environnement pour Powershell , pas un émulateur de console général.


L'insuffisance mentionnée dans votre nouveau devis ne s'applique pas à CMD lorsqu'il est exécuté dans Console2, de toute façon, IIRC.
paradroid

@ jason404: Oui, mais si vous double-cliquez sur un fichier de commandes, par exemple, il ne s'ouvrira pas dans Console2. Des instances comme celle-ci sont celles où vous pourriez avoir besoin de remplacer le shell de ligne de commande. Je pense que c'est une excellente question, +1.
Sasha Chedygov

Peut être "Attacher" la console std dans le nouvel onglet de l'émulateur de console qui vous convient? Attache manuelle, je veux dire.
Maximus

@Maximus Je ne comprends pas à quoi vous faites référence. Par «console standard», voulez-vous dire CSRSS? Où est cette chose «attacher»?
Gilles 'SO- arrête d'être méchant'

ConEmu peut attacher n'importe quelle "console réelle" existante (CSRSS, oui) ou des applications GUI simples dans son onglet. La connexion peut être effectuée manuellement à partir de l'interface ConEmu, ou par exécution d'une commande spéciale dans la console (le cas échéant).
Maximus

Réponses:


9

Je suis l'auteur de ConEmu - émulateur de console Windows. L'une de ses fonctionnalités consiste à capturer sur son onglet des consoles existantes ou des applications GUI simples. Ainsi, après avoir démarré le programme de la console dans la console standard (CSRSS / ConHost), vous pouvez:

  • Dans le menu système ConEmu, choisissez l'élément "Attacher ..." ( Win+ Gpar défaut) et choisissez la fenêtre d'attachement. Si ConEmu n'a pas été démarré, vous pouvez éventuellement le démarrer sans créer de console / onglet au démarrage:

    C:\Tools\ConEmu.exe /detached
    
  • Ou, le cas échéant, exécutez dans la console démarrée la commande suivante (ConEmu \ Attach.cmd) qui lance la connexion à partir de la console. Notez que, dans ce cas, ConEmu.exe (GUI) sera démarré automatiquement, s'il n'existe pas déjà.

    ConEmuC.exe /ATTACH /NOCMD
    
  • Il y a une autre façon. Je pense que cela ne correspond pas à vos besoins, mais je vais le divulguer. Il existe une clé dans le registre, dont le contenu cmd / tcc s'exécute après le démarrage de la console. Pendant que vous commencez consoleapp.exe, non cmd.exe, cette miss. Il existe un Cmd_Autorun.cmdfichier dans ConEmu distrib pour installer / désinstaller cette commande.

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

Il y a un tag ici, sur Superuser.com

UPD . Build 120704. Mode d'attachement alternatif non intrusif pour les fenêtres de console.

Boîte de dialogue de connexion d'une console externe ConEmu

UPD2 . Build 121128. Il est possible d'intercepter la "création de fenêtre de console" à partir d'applications spécifiées (par utilisateur), par exemple explorer.exe,vcexpress.exe. En savoir plus sur cette fonctionnalité expérimentale intrusive .


Semble prometteur, mais cela ne fonctionne pas pour moi (je suppose que cela pourrait fonctionner pour d'autres). Lorsque j'essaie de joindre consoleapp.exe, je reçois le message ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057. Puisqu'il consoleapp.exes'agit d'un programme que je débogue, voir «injecter à distance» me fait suspecter que la technique utilisée par ConEmu ne fonctionnera jamais pour moi - je ne peux pas permettre à des programmes «étrangers» de perturber le programme que je débogue.
Gilles 'SO- arrête d'être méchant'

Essayez la version 120704. Le mode alternatif peut fonctionner pour vous.
Maximus

Build 120704 avec le mode alternatif fonctionne, merci. Si je ne peux pas remplacer l'émulateur de console par défaut, l'attacher à un meilleur après le démarrage de l'application est mieux que rien. Je ne peux pas comprendre comment le faire en une seule touche , cependant.
Gilles 'SO- arrête d'être méchant'

@Maximus: Je ne peux m'empêcher de féliciter votre excellent travail. J'utilise rarement Windows, mais je suis parfois obligé de le faire, et quand je le suis, j'ai besoin de l'intégration de Cygwin ou Msys. Alors que Console2 avait la meilleure solution que j'ai vue jusqu'à présent, elle était quelque peu maladroite. ConEmu est très agréable, mais je souhaite 2 choses: 1. il devrait avoir un meilleur support pour les profils, c'est-à-dire qu'il devrait avoir un gestionnaire pour enregistrer / supprimer les profils de console personnalisés (par exemple appeler shdirectement; 2. il devrait permettre de diviser la fenêtre en plusieurs onglets verticaux / horizontaux et rappelez cet arrangement d'onglets personnalisé au redémarrage
axel22

@ axel22: Vous pouvez publier vos souhaits sur ConEmu Issues . 1. Il existe déjà des profils. 2. Dans la feuille de route.
Maximus

1

Tu ne peux pas. Les consoles Win32 utilisent toujours les fenêtres de console intégrées fournies par CSRSS.


Merci, maintenant je sais que je cherche un remplaçant CSRSS.
Gilles 'SO- arrête d'être méchant'

@ Gilles: Bonne chance avec ça. (En fait, sur Windows 7, une grande partie de ses fonctionnalités ont été déplacées dans le noyau, mais cela reste un "processus critique", étant le cœur du sous-système Win32 et tout cela.)
user1686

@ Gilles: Ensuite, utilisez un autre shell, comme je l'ai dit. La console Win32 n'est que l'émulateur de terminal Windows standard.
paradroid

1
@ jason404: Et comme l'a dit Gilles, ce n'est pas le shell (cmd.exe) mais la console (émulateur de terminal) qu'il cherche à remplacer, de sorte que tout programme utilisant des fenêtres de console utilise le remplacement.
user1686

2
L'implémentation de la fenêtre de console de Windows 7 a été déplacée csrssdans conhost.exe. Malheureusement, c'est toujours la même vieille interface utilisateur, et pour autant que je sache, ses API ne sont pas documentées. Plus sur blogs.technet.com/b/askperf/archive/2009/10/05/…
ak2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.