我希望用户能够选择文本(就像在命令提示符中一样),您可以在其中右键单击控制台应用程序的表面并显示一个菜单,然后用户可以选择与命令提示符中相同的功能:
Mark
Copy (Shortcut: Enter)
Paste
Select All
Scroll
Find
我曾尝试在诸如“C# 控制台应用程序选择文本”和其他类型的事情之后使用 Google,但似乎无法为此找到合适的解决方案,因为用户应该能够标记他/她想要的文本' 复制或替换(使用粘贴)。
你有解决我的问题的方法吗?
最佳答案
没有托管方法可以执行此操作,但可以通过 P/Invoke 启用快速编辑模式。快速编辑模式允许使用鼠标选择和复制控制台文本,以及使用鼠标右键粘贴文本。 (有关快速编辑模式的说明,请参阅 this article。)
// using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
static extern bool SetConsoleMode(IntPtr hConsoleHandle, int mode);
[DllImport("kernel32.dll")]
static extern bool GetConsoleMode(IntPtr hConsoleHandle, out int mode);
[DllImport("kernel32.dll")]
static extern IntPtr GetStdHandle(int handle);
const int STD_INPUT_HANDLE = -10;
const int ENABLE_QUICK_EDIT_MODE = 0x40 | 0x80;
public static void EnableQuickEditMode()
{
int mode;
IntPtr handle = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(handle, out mode);
mode |= ENABLE_QUICK_EDIT_MODE;
SetConsoleMode(handle, mode);
}
关于c# - 带有可选文本的控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828450/