zastępując domyślny emulator konsoli w systemie Windows XP

11

Jak mogę zastąpić domyślny program zapewniający okna konsoli w systemie Windows XP?

Znam alternatywne programy i mam skrót do uruchomienia cmd.exew Console2 . Ale teraz chcę, aby aplikacje konsolowe uruchamiały się w Console2 zamiast w domyślnym programie konsolowym, nawet gdy nie mam kontroli nad programem uruchamiającym aplikację konsolową. (Czyli uruchamia się program inny niż konsola consoleapp.exei nie mogę go zmienić, aby zamiast tego uruchomić konsolę 2, ale nadal chcę, aby aplikacja była uruchamiana w nowej instancji konsoli 2).

(Pamiętaj, że chcę zastąpić samą konsolę , czyli okno, w którym działają aplikacje konsolowe (tj. Tekstowe). I muszę mieć możliwość uruchamiania dowolnych, niezmodyfikowanych aplikacji konsolowych: zamiennik dla określonego programu konsolowego, takiego jak Cmd nie zrobi mi nic dobrego.)

EDYCJA : Tak więc szukam zamiany CSRSS , która prowadzi do

OT: Chcę wiedzieć, kiedy Microsoft zamierza dokonać porządnej wymiany CSRSS. Brak możliwości dostosowania szerokości „terminala” poprzez zmianę rozmiaru okna to kompletny żart.

Idź już pobrać ISE. (Jest zawarty w Win7 / 2008R2.)

Ale o ile rozumiem ten ISE to środowisko Powershell , a nie ogólny emulator konsoli.

Gilles „SO- przestań być zły”
źródło
Niedobór wymieniony w nowej wycenie nie dotyczy CMD, gdy jest on uruchamiany w Console2, w każdym razie w IIRC.
paradroid
@ jason404: Tak, ale na przykład dwukrotne kliknięcie pliku wsadowego nie spowoduje otwarcia go w Console2. Takie przypadki to takie, w których może być konieczne zastąpienie powłoki wiersza poleceń. Myślę, że to świetne pytanie, +1.
Sasha Chedygov
Czy może ci być „dołączanie” standardowej konsoli do nowej zakładki emulatora konsoli? Mam na myśli ręczne załączanie.
Maximus
@ Maximus Nie rozumiem, o czym mówisz. Mówiąc „konsola standardowa”, masz na myśli CSRSS? Gdzie jest to „przywiązanie”?
Gilles „SO- przestań być zły”
ConEmu może dołączyć do swojej karty dowolną istniejącą „prawdziwą konsolę” (CSRSS, tak) lub proste aplikacje GUI. Dołącz można wykonać ręcznie z interfejsu ConEmu lub wykonując specjalne polecenie w konsoli (jeśli dotyczy).
Maximus

Odpowiedzi:

9

Jestem autorem ConEmu - emulatora konsoli Windows. Jedną z jego funkcji jest przechwytywanie na zakładkę istniejących konsol lub prostych aplikacji GUI. Po uruchomieniu programu konsoli w standardowej konsoli (CSRSS / ConHost) możesz:

  • W menu systemu ConEmu wybierz element „Dołącz ...” ( domyślnie Win+ G) i wybierz okno dołączania. Jeśli ConEmu nie został uruchomiony, możesz go opcjonalnie uruchomić bez tworzenia konsoli / karty podczas uruchamiania:

    C:\Tools\ConEmu.exe /detached
    
  • Lub, jeśli dotyczy, uruchom w uruchomionej konsoli następującą komendę (ConEmu \ Attach.cmd), która inicjuje dołączanie od strony konsoli. Uwaga: w takim przypadku ConEmu.exe (GUI) zostanie uruchomiony automatycznie, jeśli jeszcze nie istnieje.

    ConEmuC.exe /ATTACH /NOCMD
    
  • Jest jeszcze jeden sposób. Myślę, że nie spełnia twoich wymagań, jednak ujawnię to. W rejestrze znajduje się klucz, którego zawartość cmd / tcc wykonuje po uruchomieniu konsoli. Kiedy zaczynasz consoleapp.exe, nie cmd.exetęsknię. W Cmd_Autorun.cmddystrybucji ConEmu znajduje się plik do zainstalowania / odinstalowania tego polecenia.

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

Jest tu tag na Superuser.com

UPD . Kompilacja 120704. Alternatywny nieinwazyjny tryb dołączania dla okien konsoli.

ConEmu dołącz okno dialogowe konsoli zewnętrznej

UPD2 . Kompilacja 121128. Możliwe jest na przykład przechwycenie „tworzenia okna konsoli” z określonych (przez użytkownika) aplikacji explorer.exe,vcexpress.exe. Przeczytaj więcej o tej natrętnej funkcji eksperymentalnej .

Maximus
źródło
Wygląda obiecująco, ale nie działa dla mnie (przypuszczam, że może działać dla innych). Kiedy próbuję załączyć consoleapp.exe, otrzymuję wiadomość ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057. Ponieważ consoleapp.exejest to program, który debuguję, widok „wstrzykiwania zdalnego” sprawia, że ​​podejrzewam, że technika zastosowana przez ConEmu nigdy nie zadziała dla mnie - nie mogę pozwolić, aby „obce” programy zakłóciły program, który debuguję.
Gilles „SO- przestań być zły”
Spróbuj zbudować 120704. Może działać w trybie alternatywnym.
Maximus
Kompilacja 120704 z działaniem w trybie alternatywnym, dzięki. Jeśli nie mogę zastąpić domyślnego emulatora konsoli, dołączenie do lepszego po uruchomieniu aplikacji jest lepsze niż nic. Nie mogę jednak zrozumieć, jak to zrobić za jednym naciśnięciem klawisza .
Gilles „SO- przestań być zły”
@ Maximus: Nie mogę nie pochwalić twojej wspaniałej pracy. Rzadko korzystam z systemu Windows, ale czasami jestem do tego zmuszony, a kiedy jestem, potrzebuję integracji Cygwin lub Msys. Chociaż Console2 miało najlepsze rozwiązanie, jakie do tej pory widziałem, było trochę niezgrabne. ConEmu jest bardzo fajny, ale chciałbym mieć 2 rzeczy: 1. powinien mieć lepszą obsługę profili, tj. Powinien mieć menedżera do zapisywania / usuwania niestandardowych profili konsoli (np. shBezpośrednie wywoływanie ; 2. powinien umożliwiać podział okna w wiele zakładek pionowych / poziomych i przywołaj ten niestandardowy układ zakładek przy ponownym uruchomieniu
axel22,
@ axel22: Możesz publikować życzenia dotyczące problemów ConEmu . 1. Istnieją już profile. 2. W mapie drogowej.
Maximus
1

Nie możesz Konsole Win32 zawsze używają wbudowanych okien konsoli udostępnianych przez CSRSS.

użytkownik1686
źródło
Dzięki, teraz wiem, że po mnie chodzi o zastąpienie CSRSS.
Gilles „SO- przestań być zły”
@Gilles: Powodzenia z tym. (Właściwie w systemie Windows 7 większość jego funkcji została przeniesiona do jądra, ale nadal pozostaje „procesem krytycznym”, będąc rdzeniem podsystemu Win32 i tym podobne.)
user1686
@Gilles: Więc użyj innej powłoki, jak powiedziałem. Konsola Win32 to tylko standardowy emulator terminala Windows.
paradroid
1
@ jason404: I jak powiedział Gilles, to nie powłoka (cmd.exe), ale konsola (emulator terminala) chce go zastąpić, aby każdy program, który korzysta z okien konsoli, użyłby zamiany.
user1686,
2
Implementacja okna konsoli Windows 7 została przeniesiona csrssdo conhost.exe. Niestety, wciąż jest to ten sam stary interfejs użytkownika i, o ile mi wiadomo, jego interfejsy API są nieudokumentowane. Więcej na blogs.technet.com/b/askperf/archive/2009/10/05/…
ak2