Программное отключение Caps Lock

Я ' 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");

Что вообще не сработало.

6
задан Cœur 14 August 2017 в 05:06
поделиться