Я создал консольное приложение, в котором есть интерпретатор команд.Чтобы было проще, мне нужно было добавить поддержку чтения буфера обмена при нажатии ctrl + v .Когда я нажимаю Ctrl + V, я вижу символ ^ V в консоли, поэтому я заменяю этот символ текстом буфера обмена.После некоторых поисков я обнаружил, что System.Windows.Forms.Clipboard.GetText () доступен для буфера обмена.
Мой вопрос: Есть ли лучшее решение для добавления поддержки буфера обмена в консольное приложение?Возможно без использования System.Windows.Forms.Clipboard?Может быть, вызов взаимодействия может помочь?
Одним из недостатков этого решения является то, что буфер обмена работает только тогда, когда поток определен как [STAThread].Также было бы намного лучше, если бы я мог избавиться от символа ^ V.
Это код текущего решения:
using System;
using System.Threading;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
public static readonly string ClipboardChar = Convert.ToChar(22).ToString();
[STAThread]
static void Main(string[] args)
{
Console.Write("Do some pastin': ");
//read
Console.ForegroundColor = ConsoleColor.White;
string result = Console.ReadLine();
Console.ResetColor();
//read keyboard
if (result.Contains(ClipboardChar))
{
result = result.Replace(ClipboardChar, Clipboard.GetText());
}
//write result
Console.WriteLine("\nResult: ");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine(result);
Console.ResetColor();
Console.WriteLine("\nPress any key to continue...");
Console.ReadKey();
}
}
}