我在自动化程序中使用 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");
这根本不起作用。