我希望用户能够选择文本(就像在Commandprompt中一样),右键单击控制台应用程序的表面,然后会显示一个菜单,用户可以选择与commandprompt相同的功能:
Mark
Copy (Shortcut: Enter)
Paste
Select All
Scroll
Find
我曾尝试使用像“C#控制台应用程序选择文本”之类的东西和其他类似的东西,但似乎无法找到适当的解决方案,因为用户应该能够标记他/她想要的文本要复制或替换(使用粘贴)。
你对我的问题有解决方案吗?
答案 0 :(得分:12)
没有托管方法可以执行此操作,但可以通过P / Invoke启用快速编辑模式。快速编辑模式允许使用鼠标选择控制台文本并进行复制,并使用右侧moue按钮粘贴文本。 (有关快速编辑模式的说明,请参阅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);
}
答案 1 :(得分:1)
也许我没有得到你,但是当你执行你的控制台应用程序时,它将被托管到一个命令提示符窗口,它允许你在任何你喜欢的地方复制结束文本。
答案 2 :(得分:0)
您无法在控制台应用程序或命令提示符中执行上下文菜单。
控制台应用程序的行为与默认的cmd.exe完全相同。您需要通过单击左上角的图标进入菜单,编辑菜单将为您提供已列出的选项。
您还可以转到属性以进行快速编辑。
答案 3 :(得分:0)
如果您构建命令提示应用程序,那么您将免费获得选择/复制/粘贴行为。如果你想实现一个右键菜单(上下文菜单),我认为你不能。
也许简单但你可以实现simple switch based menu: