具有可选文本的控制台应用程序

fnk*_*nky 4 c# console-application

我希望用户能够选择文本(就像在Commandprompt中一样),右键单击控制台应用程序的表面,然后会显示一个菜单,用户可以选择与commandprompt相同的功能:

Mark
Copy        (Shortcut: Enter)
Paste
Select All
Scroll
Find
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用"C#控制台应用程序选择文本"之类的东西和其他类似的东西,但似乎无法找到适当的解决方案,因为用户应该能够标记他/她不想要的文本复制或替换(使用粘贴).

你有我的问题的解决方案吗?

drf*_*drf 12

没有托管方法可以执行此操作,但可以通过P/Invoke启用快速编辑模式.快速编辑模式允许使用鼠标选择控制台文本并进行复制,并使用右侧moue按钮粘贴文本.(有关快速编辑模式的说明,请参阅此文章.)

// 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);
}
Run Code Online (Sandbox Code Playgroud)