我需要使用C#将密钥发送到其他应用程序中的特定文本字段。
这可能吗?如果是的话,有人可以给我示例代码吗?
答案 0 :(得分:4)
SendKeys
仅将击键组合发送到有效窗口。
因此,如果您的C#应用程序在恰当的时间调用SendKeys
函数,当用户将该其他应用程序的文本框集中时,一切都会正常工作。
问题当然是现实世界很少是完美的。您不确切知道用户何时会关注其他应用程序,当然也不会知道他们是否已单击文本框控件。当发送文本(例如单击按钮)时,您也没有任何方式让用户告诉您的C#应用程序,因为为了点击按钮,您的应用程序必须具有前景焦点,因此不您希望接收键盘输入的应用程序。
这只是对某些在尝试以这种方式进行UI自动化时遇到的潜在问题的简要概述。这非常脆弱,并且很容易导致用户出现一些意外的,令人愤怒的行为。我强烈建议不要这样做。一个更好的选择是直接与其他应用程序通信,例如通过发送消息,而不是试图有创地控制其UI。
如果您绝对必须这样做,尽管所有相反的建议,最好的方法是获取要发送文本的窗口的句柄,然后发送{{3 }}。当然,这将要求您从Win32 API P / Invoke一些函数。有关示例代码,请参阅WM_SETTEXT
message。