【问题标题】:How do I write a win32 assembly program that outputs to the current console rather than creating a new one?如何编写一个输出到当前控制台而不是创建一个新控制台的 win32 汇编程序?
【发布时间】:2015-03-11 02:05:18
【问题描述】:

我正在使用this 代码,使用nasm 编译并使用alink 链接。每当我在 bash 中运行生成的 exe 时,它​​都会生成一个与现有命令 shell 分开的新控制台。 我如何编写一个程序来使用它在其中执行的原始控制台而不是生成一个新控制台?

【问题讨论】:

  • 如果您从 cmd.exe shell 而不是“bash”运行程序,您是否尝试过同样的情况?
  • 对不起,我正在用 cmd.exe 搞砸 bash 脚本。我认为cmd也可以称为bash,就像linux命令行可以称为sh一样。我正在使用 cmd.exe。这样就清楚了吗?
  • 您是否为子系统“控制台”链接?如果你不这样做会发生什么,即如果你链接到 Win32 子系统,则没有默认控制台。
  • @user:没有Win32子系统。

标签: winapi assembly cmd


【解决方案1】:

来自代码:

;; Since this is a Windows subsystem program, we need to allocate a console,
;; in order to use one. 
call [AllocConsole] 

换句话说,它非常明确地创建了一个全新的控制台。要使其使用现有控制台,请将其链接为控制台子系统应用程序而不是 Windows 子系统应用程序,并删除对 AllocConsole() 的调用。

【讨论】:

  • alink 的“-subsys con”参数清除了一切。谢谢!
猜你喜欢
  • 2015-04-23
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多