2010-05-21 63 views
1

我有一个Windows应用程序,我正在使用发送键从一个窗口导航到另一个窗口。我的发送按键序列就像在我的应用程序中激活另一个窗口,并将按键发送到该窗口。但是我发送的关键笔画正在同一个窗口中更新,在那里我正在激活另一个窗口。NET中的sendkeys问题

但是在几次击键之后,它会进入另一个窗口。似乎与发送密钥同步问题。在发送下一个发送密钥之前,是否有办法指定当前发送密钥的操作已完成?

回答

0

您是否尝试过使用SendKeys.SendWait。这将一直等到密钥被发送并且在处理之前处理该操作。

由于Windows在您自己的应用程序中,为什么不提供一组函数来执行操作而不是使用SendKeys。函数可以创建窗口,一旦创建和激活的窗口可以通过处理Activated事件检测到,则可以使用SendKeys将关键笔划发送到新窗口,如果您确实需要的话,则可以在窗口类上另外具有函数你可以打电话来执行击键会引起的操作。你可能可以定义一个共同的interface你的windows实现,以促进这种互动。

+0

是的,我只使用SendKeys.SendWait方法。有没有办法指定它需要等待的时间 – 2010-05-21 07:06:28

+0

尝试刷新方法 – zapping 2010-05-21 07:17:02

+0

@zapping,这正是SendWait所做的,它发布密钥并调用Flush。第二次调用清空可能会或可能不会工作,具体取决于时间,这总是有风险依赖。 @AvidProgrammer,我想问题是,当发送密钥时采取的行动可能通过使用PostMessages内部完成,基本上发布消息并立即返回,因此使SendWait无用。在我的恕我直言,这将是可怕的人工睡眠之间的通话。 – 2010-05-21 07:28:13

2

我发现sendkeys只是不可靠。改为尝试input simulator

+0

我使用sendkeys添加了一个应用程序,当我为.net 2框架构建它时,它没有像预期的那样工作(尽管它没有抛出任何错误消息),但是当我将目标框架更改为.net 4它工作完美!这不是很棒吗? – BornToCode 2012-08-13 12:15:47