【发布时间】:2016-07-11 01:51:51
【问题描述】:
我以前对 Windows 几乎没有经验(无论如何,对于编程而言),但认识到 Windows 拥有巨大的市场份额,我正努力在我的程序中支持它(尽管它们只是为了好玩,我喜欢假装它们'是大项目)。我编写了一个具有最少(当我说最少,我的意思是最少)功能的小外壳。
我正在尝试将其移植到 Windows 并希望在 Win32 控制台窗口中独立于 cmd.exe 使用它(这意味着 cmd.exe 的外壳部分根本没有运行,但用于它的窗口显示)。我已经完成了大部分其他移植工作,例如构建系统 (CMake) 并在#define 中将适当的 Unix 系统调用更改为 Windows 系统调用。然而,我做了一些研究,但在这个话题上几乎没有发现什么。我知道这是可能的,因为我已经看到它是用 Bash 完成的。当我在其 GUI 中运行程序时,Visual Studio 也曾经这样做过。
参考文章我从:https://en.wikipedia.org/wiki/Win32_console获得了一些信息
注意:我的意思是当您单击它并打开它而不在其自己的小控制台窗口中运行 cmd 时。或者,当您将其键入 cmd 时,它会在未运行 cmd 的单独窗口中打开。我假设 cmd.exe 和它运行的控制台窗口是两个独立的东西,但如果我错了,请告诉我。 :)
这个问题的灵感来自https://askubuntu.com/questions/111144/are-terminal-and-shell-the-same 和我获得该维基百科链接的类似问题。有人说控制台窗口和shell是分开的。我正在编写自己的 shell,所以我开始想知道如何让我的 shell 独立于默认的。
【问题讨论】:
-
您只需启动它。程序在标题中有一点说明它们是图形(即非控制台)还是控制台。要制作程序 - 在 .NET 中,开关是
/t:winexe和/t:exe(控制台)。 CMD.exe 和控制台是不同的东西。 CMD 是一个控制台程序,类似于 Ipconfig。程序也共享控制台 - 如果 CMD 启动一个控制台程序并且该程序启动另一个控制台程序,那么这三个程序都在控制台中。