Я ' m с помощью SendKeys в программе автоматизации для работы. Я медленно продвигался вперед и теперь пытаюсь сгладить все ошибки, которые создал: -)
Одна из них, когда я использовал SendKeys.Send ("Test"), если CapsLock на, он будет производить «ТЕСТ», а не «Тест».
Я использовал следующий код, чтобы попытаться определить состояние capsLock и при необходимости переключить его:
bool tmp = Control.IsKeyLocked(Keys.CapsLock);
if (tmp)
{
keybd_event(0x14, 0x45, KEYEVENTF_EXTENTEDKEY, (UIntPtr)0);
keybd_event(0x14, 0x45, KEYEVENTF_EXTENTEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
//Application.DoEvents(); <-Testing.
}
А затем сразу же использовать SendKeys для отправки текста:
SendKeys.SendWait("This Is An Over Capitalized Test String");
Который ВСЕ ЕЩЕ выводится как: «ЭТО Я ПЕРЕДАЧА КАПИТАЛИЗИРОВАННЫХ ТЕСТОВ ".
Есть ли способ обойти эту проблему?
Ответил! Чтобы прояснить для всех остальных, проблема была решена с помощью
SendKeys.SendWait("{CAPSLOCK}" + text);
, которую я сначала попытался использовать:
SendKeys.SendWait("{CAPSLOCK}");
SendKeys.SendWait("This Is An Over Capitalized Test String");
Что вообще не сработало.