我有启动外部应用程序并自动填写密码提示的代码。
我想自动按“ENTER”键,这样用户就不必点击“确定”。
如何将ENTER键发送到外部应用程序?
以下是我现在的代码。
将密码发布到应用程序的第一行正常工作。
按下ENTER键的第二行完全没有效果。
我正在使用Delphi 2010。
//now that we have the control handle, send the password to it
SendMessage(AppHandle,WM_SETTEXT,0,Integer(PChar(pwd)));
//and now push ENTER
SendMessage(AppHandle,WM_KEYDOWN,0,Integer(PChar(#13)));
答案 0 :(得分:12)
试试这个
PostMessage(AppHandle, WM_KEYDOWN, VK_RETURN, 0);
再见。
答案 1 :(得分:2)
快速回答。使用WM_KEYUP事件复制最终的SendMessage调用。某些系统仅在释放按键时触发,而不是在按下按键时触发。
在真正的程序员回应之前要尝试的东西。 ( - ):
答案 2 :(得分:1)
尝试#13#10而不仅仅是#13。
答案 3 :(得分:1)
您可以通过几种不同的方式做您想做的事。
第一个也是最容易细节的是SendKey32.pas文件。 这个单元是专门为了让你做出你的要求而编写的。 这篇delphi.about.com文章对该单元以及它可以做什么做了很好的解释。
我个人开始使用不同的方法,因为我在SendKey32中找到了一些限制。第二种方法是Journal Playback消息。这是一种Windows系统挂钩,允许您向O / S发送(击键)消息,并让它处理所有小巧的东西。
我在网上找到一个名为 hkSend.pas 的单元,它将所有必要的管道设置为单个函数调用(SendKeys)。
如果您使用谷歌并查看前几个条目,您将找到.pas文件的副本,您可以看到所涉及的内容。编写hkSend的人似乎已经使其以类似于SendKey32.pas的方式工作,而是使用Journal Playback。
HTH,
瑞恩。