【问题标题】:CMD Uses GDI32.DLL to render colors. how do i change the color pallet?CMD 使用 GDI32.DLL 渲染颜色。如何更改调色板?
【发布时间】:2016-04-11 02:05:52
【问题描述】:

我在GDI32.DLL 中发现有一些方法可以更改控制台中的colors

方法

GDI32.SetBkColor

GDI32.SetTextColor

还有更多方法可以添加color-pallets

有没有办法将color-pallet 更改为使用多种颜色并制作256-RGB console

我知道有 console's 已经有一个 256 Color VGA color-pallet 但我真的想改变系统的工作方式。

dll-fileGDI32.DLL 相当老旧,是一个系统核心文件,互联网上没有太多关于cmd 如何使用它的信息。

谢谢:)

【问题讨论】:

  • 你疯了吗? SetBkColorSetTextColor 上的文档数量惊人。他们与控制台没有
  • 控制台实际上确实使用了SetBkColorSetTextColor,没有它们,您将无法为控制台着色。
  • @CodeAway 奇怪,我认为控制台输出你使用了 msdn.microsoft.com/en-us/library/windows/desktop/…
  • @MichaelPetch 是的,但如果我将cheat-engine 更改为conhost.exe / cmd.exe 地址7FF8FF16393F1,则无法设置背景。甚至ansi-escape 代码都不起作用。 7FF8FF16393FGDI32.DLL.SetBkColor 函数内。
  • 程序cmd.exe 根本不使用任何GDI 函数。它不直接绘制任何东西,它使用 MachaelPetch 链接的控制台功能。绘图的是conhost(或旧版本Windows 上的csrss)。如果您想以任意颜色绘制文本,您可以创建自己的窗口并使用 GDI 绘制所需的文本。

标签: c++ assembly colors cmd gdi


【解决方案1】:

要更改控制台中的颜色,您可以使用:

system("color 6B");  // 0x00 to 0xFF

要更改颜色、调色板或分辨率的数量,您可能需要查看以前称为“设置图形模式”的东西,但不知道现在是否仍然支持它..

【讨论】:

  • 这只能让您从 16 种颜色中选择背景和文本,它们也不是最漂亮的 16 种颜色。这一切都是为了向后兼容最早的 PC 彩色显示器,这些显示器非常原始。
  • @MarkRansom - 没错,两次。但我记得(很久以前)玩过图形模式、颜色和像素,但可能不再支持。
【解决方案2】:

更改控制台文本属性的正确方法是SetConsoleTextAttribute;您应该能够更改前景色/背景色。

此外,它不位于 GDI32 中,据我所知,控制台函数都位于 kernel32.dll 中(如果不是全部,至少大部分都位于)。这应该澄清GDI32 的用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 2019-03-28
    • 1970-01-01
    • 2020-08-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多