[英]How to simulate key press event?
我需要在 Web 瀏覽器控件內的textbox
輸入一些內容。 簡單地設置該值不起作用,因為這不會運行 javascript。
所以:
InvokeMember:我想我可以為此使用 invokemember(因為有InvokeMember("Click")
)。 但谷歌對鍵盤事件保持沉默。
聚焦元素,然后將鍵發送到控件。 它有效( Sendkeys.Send
),但前提是控件被激活。 如果我切換到另一個 window,它將完全發送密鑰,但不是我想要的。
所以...萬一有人感興趣。
什么是可能的? 可以將密鑰發送到 window...理論上可以將密鑰發送到非活動窗口(使用 SendMessage() 和 PostMessage()),但實際上自從 WinXP 和 x32 次以來沒有人成功完成此操作...
我自己沒有嘗試過,但是有些人能夠使用“SendInput”發送密鑰。 但這無論如何都沒用,因為 function 只能將密鑰發送到活動的 window。
所以... SendKeys.Send(我猜它是 SendInput 的包裝器)仍然是最好的方法。
解決方案
我為我的網絡瀏覽器控件創建了一個表單(窗口)。 我初始化它,但不使用“顯示”。 然后我只是在“SendKeys.Send”之前使這個表單處於活動狀態(不要忘記同時關注元素(控件內部)和控件(表單內部))。 由於沒有要顯示的表格,因此用戶不會注意到任何內容並將 go 鍵在右側 window 上。 如果需要,可以保存之前激活的 window 的句柄,並在發送后再次激活(這樣焦點不會丟失)。
概括
雖然我對這個解決方案很好,我會使用它,但它遠非完美......如果有人找到更好的東西,請告訴我(即使在遙遠的將來)。
您可以為每個角色設置它並調用一個事件。 在這個例子中,我調用了按鍵事件。 為您鍵入的最后一個字符調用事件。
he.setAttibtute("value", "a");
KeyEventArgs kea = new KeyEventArgs(Keys.A);
he.InvokeMember("onkeypress", kea);
他在哪里 HtmlElement
關於這個:'Javaspript。 當我更改文本框的值時,有沒有辦法找出 javascript 運行的內容? 我不太了解 java。 元素的屬性沒有 OnClick/OnKeyUp 等。
要查看所有 javascript,您可以使用 firefox 的 firebug 插件。 它有相應的選項卡。
更多信息: http://getfirebug.com/whatisfirebug/
您可以設置一個斷點並查看您想要的所有 javascript 變量。
如果有人遇到這種情況,正在尋找一種與框架無關的方式來觸發任何 HTML 和鼠標事件,請看這里: 如何使用 JavaScript 模擬鼠標點擊?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.