Я использую SendKeys в программе автоматизации для работы. Я бродил, и теперь пытаюсь сгладить все ошибки, которые я создал: -)
Одним из них является то, что когда я использовал SendKeys.Send («Test»), если CapsLock включен, он будет выдавать «tEST», а не «Test».
Я использовал следующий код, чтобы попытаться обнаружить состояние 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");
Который вообще не работал.