将一个字符串粘贴到网站上的Java应用程序之外

时间:2017-03-02 13:11:52

标签: java

我的问题如下......我写了一个用于管理userdata的小型桌面应用程序。现在我正在写一个“登录”功能。我发现任何网站的自动查找登录区域对我来说都很难,所以我想这样做。

如果用户按下“登录”,我的应用程序将使用系统的默认浏览器启动给予网站。现在在网站上点击用户名字段 - >程序粘贴用户名。现在按TAB键到密码字段 - >密码由应用程序自动粘贴。

我怎样才能实现这一点,它是否可行/可行。我认为这可能会做到这一点,首先在鼠标点击然后在TAB上调用...但我被卡住了。

private void pasteData(String str){
    StringSelection stringSelection = new StringSelection(str);
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    clipboard.setContents(stringSelection, stringSelection);

    try {
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
    } catch (AWTException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

嗯..我知道,这不是一个很好的答案,但为什么你这样做呢?

我知道,您有使用Java制作的桌面应用程序,并且您希望与网站进行通信。好。这是可能的,但我不建议这样做(Java Robot类)。为什么?因为你基本上不知道网页登录表单的位置和粘贴文本的位置(登录名和密码),所以如果你正在寻找更有效的方法,那么它是如何做的,那就是:

1.)JavaScript或浏览器插件 如何与用户底层浏览器进行通信的最有效方法是制作简单的插件,然后将信息传递给此插件并返回程序。使用此插件,您可以非常简单地找到登录表单或自动保存密码。

2.。程序中的嵌入式浏览器webview开始,您可以轻松获取html元素并传递或从中获取信息。

或)您的机器人方式 您的代码是正确的,但请检查您是否在Windows上,而不是在其他操作系统上,可以使用另一个按键组合进行粘贴。对于其他用户,这种方式是有效的,因此请检查您是否有其他正确的代码。

并尝试将clipboard.setContents(stringSelection, stringSelection);更改为clipboard.setContents(stringSelection, null);,因为.setContents具有第二个参数所有者:

setContents(Transferable contents, ClipboardOwner owner) 
  

设置   剪贴板到指定的可传输对象的当前内容   并将指定的剪贴板所有者注册为新的所有者   内容。