由于安全原因,无法更新控制台光标信息(PCONSOLE_CURSOR_INFO)



在控制台应用程序中,我想在特定位置写入输出,并且应该在控制台(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 = ...

相关内容

  • 没有找到相关文章

最新更新