C#sendkeys到其他应用程序到特定的文本字段

时间:2011-05-19 07:39:23

标签: c# windows textbox sendkeys

我需要使用C#将密钥发送到其他应用程序中的特定文本字段。

这可能吗?如果是的话,有人可以给我示例代码吗?

1 个答案:

答案 0 :(得分:4)

SendKeys仅将击键组合发送到有效窗口

因此,如果您的C#应用​​程序在恰当的时间调用SendKeys函数,当用户将该其他应用程序的文本框集中时,一切都会正常工作。

问题当然是现实世界很少是完美的。您不确切知道用​​户何时会关注其他应用程序,当然也不会知道他们是否已单击文本框控件。当发送文本(例如单击按钮)时,您也没有任何方式让用户告诉您的C#应用​​程序,因为为了点击按钮,您的应用程序必须具有前景焦点,因此您希望接收键盘输入的应用程序。

这只是对某些在尝试以这种方式进行UI自动化时遇到的潜在问题的简要概述。这非常脆弱,并且很容易导致用户出现一些意外的,令人愤怒的行为。我强烈建议不要这样做。一个更好的选择是直接与其他应用程序通信,例如通过发送消息,而不是试图有创地控制其UI。

如果您绝对必须这样做,尽管所有相反的建议,最好的方法是获取要发送文本的窗口的句柄,然后发送{{3 }}。当然,这将要求您从Win32 API P / Invoke一些函数。有关示例代码,请参阅WM_SETTEXT message