替换Windows XP下的默认控制台模拟器


11

如何在Windows XP下替换提供控制台窗口的默认程序?

我知道的替代方案,我有一个快捷方式启动cmd.exeConsole2。但是现在我希望控制台应用程序在Console2中启动而不是默认的控制台程序,即使我无法控制启动控制台应用程序的程序。(即非控制台程序启动consoleapp.exe,我无法更改它以启动Console2,但我仍然希望应用程序在Console2的新实例中启动。)

(注意,我想替换控制台本身,即控制台(即文本模式)应用程序运行的窗口。我必须能够运行任意的,未经修改的控制台应用程序:替代特定的控制台程序,如Cmd不会对我有任何好处。)

编辑:那么我所追求的是CSRSS替代品,这导致了

OT:我想知道微软什么时候会做出体面的CSRSS替换。通过调整窗口大小无法调整“终端”的宽度是一个完全的笑话。

去下载ISE吧。(它包含在Win7 / 2008R2中。)

但据我所知,这个ISE是Powershell环境,而不是一般的控制台模拟器。


新报价中提到的缺陷不适用于在控制台2中运行的CMD,无论如何,IIRC。
paradroid 2010年

@ jason404:是的但是如果双击批处理文件,它将无法在Console2中打开。像这样的实例是您实际需要替换命令行shell的地方。我认为这是一个很好的问题,+ 1。
Sasha Chedygov 2010年

可以将std控制台“附加”到控制台模拟器的新选项卡中吗?手动连接,我的意思是。
Maximus

@Maximus我不明白你所指的是什么。通过“std console”,你的意思是CSRSS吗?“附加”的东西在哪里?
吉尔斯

ConEmu可以将任何现有的“真实控制台”(CSRSS,是)或简单的GUI应用程序附加到其选项卡中。可以从ConEmu接口手动完成附加,也可以在控制台中执行特殊命令(如果适用)。
Maximus

Answers:


9

我是ConEmu的作者- Windows控制台模拟器。它的一个功能是捕获其选项卡现有的控制台或简单的GUI应用程序。因此,在标准控制台(CSRSS / ConHost)中启动控制台程序后,您可以:

  • 在ConEmu系统菜单中,选择“附加...”项(默认为Win+ G)并选择附加窗口。如果未启动ConEmu,您可以选择启动它而不在启动时创建控制台/选项卡:

    C:\Tools\ConEmu.exe /detached
    
  • 或者,如果适用,在启动的控制台中运行以下命令(ConEmu \ Attach.cmd),该命令从控制台端启动附加。请注意,在这种情况下,ConEmu.exe(GUI)将自动启动(如果尚未存在)。

    ConEmuC.exe /ATTACH /NOCMD
    
  • 还有一种方法。我认为它不符合您的要求,但我会透露它。注册表中有一个键,其内容cmd / tcc在控制台启动后执行。在你开始的时候consoleapp.exe,不是cmd.exe,这个想念。Cmd_Autorun.cmdConEmu distrib中有文件来安装/卸载此命令。

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

Superuser.com上有一个标签

UPD。Build 120704.控制台窗口的替代非侵入式附加模式。

ConEmu附加外部控制台对话框

UPD2。构建121128.例如,可以从指定的(由用户)应用程序拦截“控制台窗口的创建” explorer.exe,vcexpress.exe。阅读有关此侵入性实验功能的更多信息。


看起来很有希望,但它对我不起作用(我想它可能适用于其他人)。当我尝试附加时consoleapp.exe,我收到了消息ConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057。因为consoleapp.exe我正在调试一个程序,看到“注入远程”让我怀疑ConEmu使用的技术永远不会对我有用 - 我不能让“外来”程序扰乱我正在调试的程序。
吉尔斯

尝试构建120704.可能替代模式将适合您。
Maximus

使用替代模式构建120704,谢谢。如果我无法替换默认的控制台模拟器,那么在应用程序启动后附加到更好的控制台模拟器总比没有好。不过,我无法弄清楚在一台按键中怎么做
Gilles

@Maximus:我不禁不赞扬你的出色工作。我很少使用Windows,但有时被迫,当我,我需要Cygwin或Msys集成。虽然Console2拥有我迄今为止看到的最好的解决方案,但它有点笨重。ConEmu非常好,但我希望有两件事:1。它应该有更好的支持配置文件,即它应该有一个管理器来保存/删除自定义控制台配置文件(例如sh直接调用; 2.它应该允许分割窗口多个垂直/水平选项卡,并在重新启动时调用此自定义选项卡排列。
axel22

@ axel22:你可以向ConEmu问题发表意见。1.已经有个人资料。2.在路线图中。
Maximus

1

你不能。Win32控制台始终使用CSRSS提供的内置控制台窗口。


谢谢,现在我知道我所追求的是CSRSS的替代品。
Gilles 2010年

@Gilles:祝你好运。(实际上,在Windows 7上,它的大部分功能已经被移植到内核中,但它仍然是一个“关键进程”,是Win32子系统的核心所有这一切。)
grawity 2010年

@Gilles:然后就像我说的那样使用不同的shell。Win32控制台只是标准的Windows终端模拟器。
paradroid 2010年

1
@ jason404:正如Gilles所说,它不是shell(cmd.exe),而是他想要替换的控制台(终端模拟器),所以任何使用控制台窗口的程序都会使用替换。
grawity 2010年

2
Windows 7的控制台窗口执行已搬出csrssconhost.exe。可悲的是,它仍然是相同的旧UI,据我所知,它的API没有记录。更多信息,请访问blogs.technet.com/b/askperf/archive/2009/10/05/...
ak2 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.