2017-03-02 21 views
0

我的問題如下...我編寫了一個用於管理用戶數據的小型桌面應用程序。現在我正在寫一個「登錄」功能。我發現自動查找任何網站的登錄字段對我來說都很困難,所以我想這樣做。在網站上的Java應用程序外粘貼一個字符串

如果用戶按下「登錄」,我的應用程序會使用系統的默認瀏覽器啓動給網站。現在在網站上點擊用戶名字段 - >程序粘貼用戶名。現在按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

嗯..我知道,這不是很好的答案,但你爲什麼這樣做呢?

我知道,你有桌面應用程序在Java中,你想與網站溝通。好。這是可能的,但我不建議這樣做(Java Robot類)。爲什麼?因爲你基本上不知道網頁登錄表單和在哪裏粘貼文本(登錄名和密碼),所以如果你正在尋找更有效的方法,那麼它是:

1) JavaScript或瀏覽器插件 如何與用戶defeult瀏覽器進行通信的最有效方法是使用簡單的插件,然後將信息傳遞給此插件並返回程序。有了這個插件,您可以非常簡單地找到登錄表單或自動保存密碼。在你的程序 從webview你可以很容易得到的HTML元素和通過或從它那裏得到的信息

2)嵌入式瀏覽器。

或)你的機器人方式 你的代碼是正確的,但請檢查一下,你是在Windows上,而不是在其他操作系統中,可以有另一種粘貼組合按鍵。對於其他用戶是這種方式工作,所以檢查你是否有其他代碼的權利。

而且還試圖改變clipboard.setContents(stringSelection, stringSelection);clipboard.setContents(stringSelection, null);,因爲.setContents在第二個參數業主:

setContents(Transferable contents, ClipboardOwner owner) 

設置剪貼板指定的transferable對象 的 當前內容並註冊指定的剪貼板所有者作爲新的 內容的所有者。

+0

好的,謝謝,現在我知道更多,我需要考慮更好的方法。這有幫助 –

相關問題