gpt4 book ai didi

c# - API 函数 AllocConsole 和 AttachConsole(-1) 之间有什么不同?

转载 作者:太空狗 更新时间:2023-10-29 19:56:44 24 4
gpt4 key购买 nike

能否请您解释一下,API 函数 AllocConsoleAttachConsole(-1) 之间有什么不同?我的意思是如果 AttachConsole 得到 ATTACH_PARENT_PROCESS(DWORD)-1

最佳答案

嗯,根本的区别是:

  • AllocConsole() 将创建一个新控制台(并附加到它)
  • AttachConsole( ATTACH_PARENT_PROCESS/* -1 */) 不会创建新的控制台,它会附加到父进程的现有控制台。

在第一种情况下,您将获得一个全新的控制台窗口,在第二种情况下,您将使用现有的控制台窗口。

当然,如果您已经连接到控制台(即,您是从 cmd.exe 启动的控制台模式程序),则没有太大区别 - 使用任一 API 都会出错。

另请注意,仅仅因为您从控制台分离并不意味着分离的控制台会有用 - 例如,如果您是从 cmd 窗口启动的控制台进程,该窗口基本上会阻塞,直到您的进程结束。

一些可玩的代码:

int main( int argc, char* argv[])
{
int ch;
BOOL bResult;

printf( "default console\n");
ch = getchar();

bResult = FreeConsole();
bResult = AllocConsole();
printf( "AllocConsole()\n");
ch = getchar();

bResult = FreeConsole();
bResult = AttachConsole( ATTACH_PARENT_PROCESS);
printf( "AttachConsole( ATTACH_PARENT_PROCESS)\n");
ch = getchar();

return 0;
}

关于c# - API 函数 AllocConsole 和 AttachConsole(-1) 之间有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com