john1990_1 Ответов: 3

Как отправить клавиши CTRL+C в windows на C#?


Я хочу Скопировать текст, выделенный в любом месте Windows,и разместить его в своем текстовом поле, чтобы перевести его.

Приказ для Windows копировать все, что выделено, тоже хорош.

Что я уже пробовал:

Посылайте ключи.Отправить ("^(C)");

и

Посылайте ключи.SendWait ("^(C)");

Afzaal Ahmad Zeeshan

Почему вы не можете просто выйти из приложения?

john1990_1

моя программа хочет быстро перевести текущий выделенный текст в Windows в окно, которое открывает моя программа!

3 Ответов

Рейтинг:
1

Jochen Arndt

Это не сработает, потому что SendKeys() отправляет нажатия клавиш в текущее приложение (ваше), а не в любое окно других приложений, которое может содержать текст. Для копирования текста из других приложений необходимо нажать Ctrl-C, Когда окно, содержащее выделенный текст, является активным (и поддерживает копирование в буфер обмена).

Все, что вы можете сделать в своем приложении, - это следить за буфером обмена для новых данных и автоматически вставлять их в текстовое поле. Но прежде чем сделать это, подумайте о возможных побочных эффектах (все вставляется, даже если вы просто хотите скопировать что-то в другое приложение).


Рейтинг:
0

OriginalGriff

Не так просто, как вы думаете...
Но это должно сработать:

Process[] local = Process.GetProcessesByName("Name of process to copy from");
if (local.Length > 0)
    {
    Process p = local[0];
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    p.WaitForInputIdle();
    SendKeys.SendWait("^(c)");
    p.WaitForInputIdle();
    if (Clipboard.ContainsText())
        {
        Console.WriteLine(Clipboard.GetText());
        }
    }


Рейтинг:
0

Patrice T

Цитата:
Я хочу Скопировать текст, выделенный в любом месте Windows,и разместить его в своем текстовом поле, чтобы перевести его.

Это неверная хорошая идея. Вы заменяете проблему другой, более сложной, каждое приложение, открытое в windows, может иметь какой-то выделенный текст. Как вы можете знать, какой из них выбрать ?

мой Совет:
Используйте классическое копирование/вставку windows.