【发布时间】:2011-12-19 05:14:44
【问题描述】:
我在自动化程序中使用 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");
这根本不起作用。
【问题讨论】:
-
如果你这样做
SendKeys.Send"{CAPSLOCK}Test"会怎样?