如何以编程方式在控制台应用程序中选择文本?

时间:2016-06-21 19:23:02

标签: c++ windows winapi console-application

我似乎无法找到如何通过WinAPI在我的控制台应用程序中选择文本。几乎可以用鼠标做什么,如果有人右键单击控制台窗口并选择“标记”:

enter image description here

然后在控制台窗口上拖动鼠标:

enter image description here

我可以使用WinAPI执行此操作吗?

2 个答案:

答案 0 :(得分:3)

没有API可以满足您的要求。所以你必须改为模拟它。

使用SetConsoleMode()启用ENABLE_QUICK_EDIT_MODE以启用鼠标选择文字。然后使用SendInput()mouse_event()来操纵鼠标移动并根据需要进行点击。

使用GetConsoleWindow()获取控制台的HWNDGetWindowRect()以获取其在屏幕上的位置。使用GetConsoleScreenBufferInfo/Ex()获取控制台的列/行计数,以及控制台窗口中字符出现的矩形。然后,您应该能够使用一些数学运算来在发送鼠标操作时根据需要将字符列/行偏移转换为屏幕坐标。

答案 1 :(得分:0)

使用ReadConsoleOutput读取您要选择的区域。更改每个字符的接收CHAR_INFO属性以反映不同(例如反转)的颜色。使用WriteConsoleOutput将修改后的数据写入相同的矩形区域。这将显示“选定”区域。如果需要,使用SetConsoleCursorPosition更改光标位置。可以看到如何使用ReadConsoleOutput和WriteConsoleOutput的示例here