如何将“ENTER”键发送到另一个应用程序?

时间:2009-09-16 13:58:26

标签: delphi sendmessage

我有启动外部应用程序并自动填写密码提示的代码。

我想自动按“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)));

4 个答案:

答案 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,

瑞恩。