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

本文关键字:控制台 应用程序 文本 可选择 | 更新日期: 2023-09-27 18:03:37

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

Mark
Copy        (Shortcut: Enter)
Paste
Select All
Scroll
Find

我曾试图谷歌后的东西,如"c#控制台应用程序选择文本"和其他类型的东西,但似乎不能找到一个适当的解决方案,因为用户应该能够标记文本,他/她不想复制或替换(粘贴)。

你有解决我这个问题的办法吗?

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

没有托管方法可以做到这一点,但是可以通过p/Invoke启用快速编辑模式。快速编辑模式允许用鼠标选择并复制控制台文本,并允许用鼠标右键粘贴文本。(有关快速编辑模式的描述,请参阅本文。)

// 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);
}

也许我没有明白你的意思,但是当你执行控制台应用程序时,它将被托管到一个命令提示窗口中,允许你在任何你喜欢的地方复制过去的文本。

你不能在控制台应用程序或命令提示符中使用上下文菜单。

控制台应用程序的行为完全像默认的cmd.exe。你需要通过点击左上角的图标进入菜单,编辑菜单会给你列出的选项。

你也可以在属性中打开快速编辑

如果你构建命令提示符应用程序,那么你将免费获得选择/复制/粘贴行为。如果你想实现右键菜单(上下文菜单),我认为你做不到。

可能太简单了,但是你可以实现一个简单的基于开关的菜单: