微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我拥有我的控制台还是从父母那里inheritance?

NT字符模式应用程序如何确定其控制台是否已从父进程inheritance,而不是CreateProcess中新分配的控制台?

哇,所以不受欢迎的标签添加窗口来吸引合适的程序员

@anonymous downVoter:我只能根据一些反馈来做这个问题的有限扩展。 状态不清楚(然而,熟悉Windows内核和子系统是必需的)。 请记住,我们这里很多是程序员,所以我们的幽是非常具体的,不要判断标题太苛刻。

C ++中的Linux控制台命令(gcc编译器)

当它们改变颜色并向后打印时,字符重叠

C ++ Windows:如何closures控制台窗口?

在Qt中显示一个控制台

通过控制台界面访问编译器时包含库

通过subprocess发送一个钩子捕获消息到控制台是可能的吗?

我应该如何在Windows上创build自定义graphics控制台/terminal?

Windows 10registry不能被代码删除

CMD提示/batch file中的更多颜色

清晰的Linux虚拟控制台terminal的回滚缓冲区

有些想法可能会或可能不会帮助 – 这不是一个真正的答案,但它太长,以适应评论

您可以使用GetConsoleWindow()来确定您的控制台的HWND。 然后可以看看是否有其他人分享这个。 尝试调用它的GetwindowThreadProcessId – 在一些版本的Windows上,如果我记得正确,似乎这返回CSRSS进程的PID – 这是没有用的。 但似乎在Win7上,它返回最初拥有该窗口的进程的PID。

例如,我启动了一个CMD窗口,输入更多; 所以我们有cmd.exe和more.exe共享相同的窗口。 Spy ++报告HWND属于cmd.exe。

但是使用“多开始”,所以创建一个新的控制台,其中更多的,并间谍+ +报告,新窗口属于more.exe。

这可能是Win7中的新行为(或者至少在以前的版本中可能不一致),但是; 控制台窗口实际上由辅助进程拥有,Win7中的conhost.exe和以前版本中的csRSS。 GetwindowThreadProcessId可能会返回以前版本的辅助进程的PID。 谁知道未来版本的Windows将会返回什么 – 控制台窗口是“特殊的”。

不依赖于GetwindowThreadProcessID的另一种方法是:

确定你父母的进程ID(检查stackoverflow过去的答案这个问题!)

AttachConsole(pid),GetConsoleWindow()和FreeConsole()来查看你的父进程正在使用的控制台HWND(如果有的话)。

与此相关的是,一个进程一次只能连接到一个控制台 – 所以你必须在单独的帮助程序(!)中“偷看”,否则你将不得不放手控制台第一。

长话短说,这可能是近似的,但不清楚,你真的想要“现实生活中”这样做; “暂停,如果没有参数”可能是最好的办法。

[*此答案仅用于娱乐目的,在禁止的情况下无效等]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐