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

时间:2011-07-26 10:10:11

标签: c# console-application

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

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

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

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

4 个答案:

答案 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