C # Копировать текст в текстовое поле, где фокус - PullRequest
1 голос
/ 30 сентября 2011

У меня есть эта проблема, и я не знаю, с чего начать. Мне нужно написать программу, которая будет работать в WinCE, поэтому потребуется Compact Framework, и эта программа должна писать текст (строку) везде, где находится курсор. Я имею в виду, если моя программа работает, а курсор находится в окне блокнота. текст должен отображаться в блокноте. Или, если курсор находится в другом приложении внутри текстового поля (или текстового поля, если это приложение было написано в Java), текст должен быть помещен в это текстовое поле.

Я могу выполнять все остальные функции, которые требуются программе, но я не знаю, как это сделать. Насколько я прочитал, это делается с помощью API. И это все, что я могу понять.

Любая помощь будет оценена.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Первое, что приходит на ум, это SendKeys . Это простой способ эмулировать набор текста.

0 голосов
/ 30 сентября 2011

Мы используем P / Invoke keybd_event для генерации ввода с клавиатуры.Единственный другой подход, который я могу придумать, это поместить вашу строку в буфер обмена и сгенерировать нажатие клавиши вставки.Я не уверен, что каждое приложение, которое вы встретите, будет реагировать на CTRL + V одинаково.Возможно, есть способ запустить вставку программно из вашего приложения?

[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

Это должно генерировать тихое нажатие клавиши.

keybd_event((byte)Keys.A, 0, 0, 0x0004);
keybd_event((byte)Keys.A, 0, 0x0002, 0x0004);
...