mengganti emulator konsol default di bawah Windows XP

11

Bagaimana saya bisa mengganti program default yang menyediakan jendela konsol di bawah Windows XP?

Saya tahu program alternatif , dan saya punya jalan pintas untuk memulai cmd.exedi Console2 . Tapi sekarang saya ingin aplikasi konsol untuk memulai di Console2 daripada program konsol default, bahkan ketika saya tidak memiliki kendali atas program yang memulai aplikasi konsol. (Yaitu program non-konsol dimulai consoleapp.exe, dan saya tidak dapat mengubahnya untuk memulai Console2 sebagai gantinya, tapi saya masih ingin aplikasi dijalankan di dalam instance baru Console2.)

(Perhatikan bahwa saya ingin mengganti konsol itu sendiri, yaitu, jendela di mana aplikasi konsol (yaitu mode teks) berjalan. Dan saya harus dapat menjalankan aplikasi konsol yang berubah-ubah dan tidak dimodifikasi: pengganti untuk program konsol tertentu seperti Cmd tidak akan ada gunanya bagiku.)

EDIT : Jadi yang saya cari adalah penggantian CSRSS , yang mengarah ke

OT: Saya ingin tahu kapan Microsoft akan membuat penggantian CSRSS yang layak. Tidak dapat menyesuaikan lebar "terminal" dengan mengubah ukuran jendela adalah lelucon yang lengkap.

Pergi unduh ISE. (Ini termasuk dalam Win7 / 2008R2.)

Tapi sejauh yang saya mengerti, ISE ini adalah lingkungan untuk Powershell , bukan emulator konsol umum.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Kekurangan yang disebutkan dalam kutipan baru Anda tidak berlaku untuk CMD ketika dijalankan di dalam Console2, pula, IIRC.
paradroid
@ jason404: Ya tetapi jika Anda mengklik dua kali file batch, misalnya, itu tidak akan terbuka di Console2. Contoh seperti ini adalah di mana Anda sebenarnya bisa perlu mengganti shell baris perintah. Saya pikir ini pertanyaan yang bagus, +1.
Sasha Chedygov
Mungkin "Lampirkan" konsol std ke tab baru emulator konsol yang cocok untuk Anda? Melampirkan manual, maksud saya.
Maximus
@ Maximus Saya tidak mengerti apa yang Anda maksud. Dengan "std console", maksud Anda CSRSS? Di mana benda "lampirkan" itu?
Gilles 'SANGAT berhenti menjadi jahat'
ConEmu dapat melampirkan "konsol nyata" yang ada (CSRSS, ya) atau aplikasi GUI sederhana ke dalam tabnya. Lampirkan dapat dilakukan secara manual dari antarmuka ConEmu, atau dengan mengeksekusi perintah khusus di konsol (jika ada).
Maximus

Jawaban:

9

Saya seorang penulis ConEmu - emulator konsol Windows. Salah satu fiturnya adalah menangkap ke tab yang ada konsol atau aplikasi GUI sederhana. Jadi, setelah memulai program konsol di konsol standar (CSRSS / ConHost), Anda dapat:

  • Di menu sistem ConEmu, pilih item "Lampirkan ..." ( Win+ Gsecara default) dan pilih jendela lampiran. Jika ConEmu tidak dimulai, Anda dapat memulainya secara opsional tanpa membuat konsol / tab saat memulai:

    C:\Tools\ConEmu.exe /detached
    
  • Atau, jika berlaku, jalankan di konsol yang dimulai perintah berikut (ConEmu \ Attach.cmd) yang memulai melampirkan dari sisi konsol. Catatan, dalam hal ini, ConEmu.exe (GUI) akan dimulai secara otomatis, jika belum ada.

    ConEmuC.exe /ATTACH /NOCMD
    
  • Ada satu cara lagi. Saya pikir itu tidak sesuai dengan kebutuhan Anda, namun saya akan mengungkapkannya. Ada kunci dalam registri, yang isinya cmd / tcc dijalankan setelah startup konsol. Saat Anda memulai consoleapp.exe, jangan cmd.exelewatkan ini. Ada Cmd_Autorun.cmdfile di distribu ConEmu untuk menginstal / menghapus perintah ini.

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

Ada tag di sini, di Superuser.com

UPD . Build 120704. Mode pemasangan alternatif yang tidak mengganggu untuk windows konsol.

ConEmu melampirkan dialog konsol eksternal

UPD2 . Build 121128. Sebagai contoh, dimungkinkan untuk mencegat "pembuatan jendela konsol" dari aplikasi yang ditentukan (oleh pengguna) explorer.exe,vcexpress.exe. Baca lebih lanjut tentang fitur eksperimental yang mengganggu ini .

Maximus
sumber
Terlihat menjanjikan, tetapi itu tidak berhasil untuk saya (saya kira itu mungkin berhasil untuk orang lain). Ketika saya mencoba melampirkan consoleapp.exe, saya menerima pesan itu ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057. Karena consoleapp.exeini adalah program yang saya debug, melihat "menginjeksi jarak jauh" membuat saya curiga bahwa teknik yang digunakan oleh ConEmu tidak akan pernah bekerja untuk saya - saya tidak bisa membiarkan program "asing" mengganggu program yang saya debug.
Gilles 'SANGAT berhenti menjadi jahat'
Coba bangun 120704. Mungkin mode alternatif akan bekerja untuk Anda.
Maximus
Bangun 120704 dengan mode kerja alternatif, terima kasih. Jika saya tidak dapat mengganti emulator konsol default, melampirkan yang lebih baik setelah aplikasi dimulai lebih baik daripada tidak sama sekali. Saya tidak tahu bagaimana melakukannya dalam satu penekanan tombol .
Gilles 'SANGAT berhenti menjadi jahat'
@ Maximus: Saya tidak bisa tidak memuji pekerjaan besar Anda. Saya jarang menggunakan Windows, tetapi kadang-kadang terpaksa, dan ketika saya melakukannya, saya perlu integrasi Cygwin atau Msys. Sementara Console2 memiliki solusi terbaik yang saya lihat sejauh ini, itu agak kikuk. ConEmu sangat baik, tetapi saya berharap untuk 2 hal: 1. harus memiliki dukungan yang lebih baik untuk profil, yaitu harus memiliki manajer untuk menyimpan / menghapus profil konsol khusus (misalnya menelepon shlangsung; 2. itu harus memungkinkan pemisahan jendela di banyak tab vertikal / horizontal dan ingat pengaturan tab kustom ini saat restart
axel22
@ axel22: Anda dapat memposting keinginan untuk ConEmu Issues . 1. Sudah ada profil. 2. Dalam peta jalan.
Maximus
1

Kamu tidak bisa Konsol Win32 selalu menggunakan jendela konsol bawaan yang disediakan oleh CSRSS.

pengguna1686
sumber
Terima kasih, sekarang saya tahu apa yang saya cari adalah pengganti CSRSS.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles: Semoga berhasil dengan itu. (Sebenarnya, pada Windows 7 sebagian besar fungsinya telah dipindahkan ke kernel, tetapi masih tetap "proses kritis", menjadi inti dari subsistem Win32 dan semua itu.)
user1686
@Gilles: Kemudian gunakan shell yang berbeda, seperti yang saya katakan. Konsol Win32 hanyalah emulator terminal Windows standar.
paradroid
1
@ jason404: Dan seperti yang dikatakan Gilles, itu bukan shell (cmd.exe) tetapi konsol (terminal emulator) yang ingin dia ganti, sehingga program apa pun yang menggunakan jendela konsol akan menggunakan pengganti.
user1686
2
Implementasi jendela konsol Windows 7 telah dipindahkan dari csrsske conhost.exe. Sayangnya, itu masih UI lama yang sama, dan sejauh yang saya tahu, API-nya tidak terdokumentasi. Lebih banyak di blogs.technet.com/b/askperf/archive/2009/10/05/…
ak2