Windows8 的 AttachConsole(...) 替代品
Posted
技术标签:
【中文标题】Windows8 的 AttachConsole(...) 替代品【英文标题】:AttachConsole(...) alternative for Windows8 【发布时间】:2013-04-01 17:56:30 【问题描述】:在 Windows8 上运行控制台(即父进程是 cmd.exe)应用程序时,AttachConsole(ATTACH_PARENT_PROCESS) 返回 TRUE,GetLastError() 返回 ERROR_NOT_SUPPORTED。有没有可以与这个操作系统一起使用的替代方案?
【问题讨论】:
如果 winapi 函数没有失败,请不要调用 GetLastError()。 从文档中,AttachConsole
在 成功 时返回 true
。有什么问题?
是的,GetLastError() 搞砸了 - AttachConsole(ATTACH_PARENT_PROCESS) && GetLastError() == 0,但是它在以前的 Windows 版本中返回 0。
【参考方案1】:
如果 AttachConsole 返回 true,GetLastError 的值是随机的(即,成功调用 AttachConsole 或实际上任何 Win32 API 函数都不会重置最后一个错误代码)。仅检查设置的错误代码。
【讨论】:
实际上另一个问题是应用程序不会等到附加控制台中的执行完成,例如 XP 不会发生以上是关于Windows8 的 AttachConsole(...) 替代品的主要内容,如果未能解决你的问题,请参考以下文章