5

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

我想自动按下“ENTER”键,这样用户就不必单击“确定”。

如何将 ENTER 键发送到外部应用程序?

下面是我现在的代码。

将密码发布到应用程序的第一行工作正常。

发送 ENTER 键的第二行根本没有任何效果。

我正在使用德尔福 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

4 回答 4

15

试试这个

PostMessage(AppHandle, WM_KEYDOWN, VK_RETURN, 0);

再见。

于 2009-09-16T14:25:18.750 回答
2

快速回答。使用 WM_KEYUP 事件复制您的最终 SendMessage 调用。一些系统仅在按键被释放时触发,而不是在按键被按下时触发。

在真正的程序员做出回应之前尝试一些东西。(:-)

于 2009-09-16T14:09:51.853 回答
2

有几种不同的方法可以做你想做的事。

第一个也是最容易详细说明的是 SendKey32.pas 文件。这个单元是专门为让你做你所要求的。这篇delphi.about.com文章很好地解释了该单元及其功能。

由于我在 SendKey32 的东西中发现了一些限制,我个人开始使用不同的方法。第二种方法是日记回放消息。这是一种 Windows 系统挂钩,它允许您向操作系统发送(击键)消息,并让它处理所有琐碎的事情。

我在网上找到了一个名为hkSend.pas的单元,它将所有必要的管道设置成一个函数调用 (SendKeys)。

如果您为它做一个谷歌并查看前几个条目,您会找到 .pas 文件的副本,您可以看到其中涉及的内容。编写 hkSend 的人似乎已经让它以与 SendKey32.pas 类似的方式工作,但使用的是 Journal Playback。

高温下,

瑞安。

于 2009-09-16T14:24:03.870 回答
1

尝试#13#10 而不仅仅是#13。

于 2009-09-16T14:08:49.640 回答