在控制台应用程序中,我想在特定位置写入输出,并且应该在控制台(Windows CMD)没有光标。为此,我采用了以下方法:
HANDLE hdl = GetStdHandle(STD_OUTPUT_HANDLE);
if (hdl == INVALID_HANDLE_VALUE)
{
printf("Error : Unable to get console handle.n");
return 0;
}
PCONSOLE_CURSOR_INFO lpConsoleCursorInfo = { NULL };
if (!GetConsoleCursorInfo(hdl, &lpConsoleCursorInfo))
{
printf("Error : Unable to get console cursor information.n");
return 0;
}
lpConsoleCursorInfo->dwSize = 1; //App exit at this point with error code 0xC0000005h
我得到运行时错误0xC0000005h。通过搜索,我得出结论,这是一个安全级别的问题,并设置访问级别SECURITY_DESCRIPTOR使用。
我无法找到如何将访问级别设置为STD_OUTPUT_HANDLE的方式,该访问级别已经由visual studio控制台应用程序创建并与我的控制台应用程序相关联。
谁能给我指个正确的方向?没有安全问题,你只是不明白Windows指针类型是如何工作的。PCONSOLE_CURSOR_INFO
只是一个指针,去掉p
CONSOLE_CURSOR_INFO ConsoleCursorInfo = { NULL };
if (!GetConsoleCursorInfo(hdl, &ConsoleCursorInfo)) ...
else ConsoleCursorInfo.dwSize = ...