Я использую SendKeys.SendWait () для копирования и вставки текста назад и вперед между окнами.Я написал метод копирования-вставки, который использует методы FindWindow
и SetForegroundWindow
из "User32.dll"
В большинстве случаев на моем устройстве этот метод работает отлично.Однако это очень противоречиво при работе на разных устройствах.Все устройства используют одну и ту же операционную систему и открывают примерно одинаковые приложения.
Иногда метод вставляет неверный текст (из предыдущей копии), а иногда метод просто не работает вообще.
Я убедился, что использую новую реализацию SendKeys.SendWait()
, как описано в документации .
Я также попытался поместить функцию сна между копиейи вставьте функции.Похоже, это не влияет на вывод, кроме как сделать его медленнее.Даже во время сна программа копирует и вставляет непоследовательно.
public static bool CopyPaste(string startWindow, string endWindow, int delay = 0)
{
int startWindowID = FindWindow(null, startWindow);
int endWindowID = FindWindow(null, endWindow);
SetForegroundWindow(startWindowID);
SendKeys.SendWait("^{a}");
SendKeys.SendWait("^{c}");
Thread.Sleep(delay);
SetForegroundWindow(endWindowID);
SendKeys.SendWait("^{a}");
SendKeys.SendWait("^{v}");
}
Я знаю, что копирование и вставка в другие окна и вставка их в другое окно очень удобны и не очень хорошая идея, но у меня нет другого выбора.
Правильно ли использовать SendKeys.SendWait()
?Есть ли другой, более надежный способ сделать это?Что я могу сделать, чтобы повысить его надежность на разных платформах?
Редактировать:
Хотя класс Clipboard правильно передает текст, он кажется еще менее надежным.Часто выдается сообщение о том, что «Запрошенная операция буфера обмена не выполнена».