我在一项工作的自动化程序中使用了SendKeys。我一直在努力,现在正在尝试解决我创建的所有错误 :-)
其中之一是,当我使用SendKeys.Send("Test")时,如果大写锁定处于打开状态,它将产生"tEST"而不是"Test"。
我使用以下代码来尝试检测大写锁定状态,并在必要时切换它:
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");
这仍然显示为:"tHIS iS aN oVER cAPITALIZED tEST sTRING"。
有没有办法解决这个问题?
已回答!只是为了澄清,问题是通过使用
解决的。SendKeys.SendWait("{CAPSLOCK}" + text);
我最初尝试使用:
SendKeys.SendWait("{CAPSLOCK}");
SendKeys.SendWait("This Is An Over Capitalized Test String");
这根本没有起作用。
SendKeys.Send"{CAPSLOCK}Test"
会发生什么? - V4Vendetta