如果直接给webBrowser中网页的的文本框设置值可以用inputTxt.SetAttribute("value", p_str)
但有些网站用jquery增加了keyup和keydown等事件来限制你必须手动输入,比如只有你触发了keyup事件,
才允许点击网站上某个必要按钮,这样就只能模拟键盘输入了。
测试的时候是在W3School进行的,具体地址:http://www.w3school.com.cn/tiy/loadtext.asp?f=jquery_event_keydown_keyup
取它页面上的input不用细写了吧?
HtmlElementCollection eleC = this.webBrowser1.Document.GetElementsByTagName("input")
HtmlElement ele = eleC[0];
以下是正题:
必须要设置当前要输入的窗体是激活状态,输入的区域如文本框是光标所在处。
1,最简单的方法
<pre class="csharp" name="code">
HtmlElement inputTxt = this.webBrowser1.Document.GetElementById("inputTxt");
this.Activate(); inputTxt.Focus(); SendKeys.Send("{Shift}"); //功能键的写法,可以到网上找
inputTxt.Focus();
2,输入后返还句柄的方法
form类的属性定义区域增加:
//获取当前激活窗体的句柄 [DllImport("user32.dll", EntryPoint = "GetForegroundWindow")] public static extern int GetForegroundWindow(); //设置当前激活窗体的句柄 [DllImport("user32.dll", EntryPoint = "SetForegroundWindow")] public static extern int SetForegroundWindow(int hwnd);
代码
int intHandler = GetForegroundWindow(); this.Activate(); inputTxt.Focus(); SendKeys.Send("abcdef"); inputTxt.Focus(); SetForegroundWindow(intHandler);
对于触发keydown和keyup事件的说明:
"{Tab}"键只触发keydown事件,而不触发keyup事件
当然,如果你知道它keyupy触发后要做些什么,那你也可以通过js直接执行它:
jquery的写法:
string jqueryCode = "$('input').css('background-color','yellow');"; this.webBrowser1.Document.InvokeScript("eval", new object[] { jqueryCode });
普通js方法调用的写法:
string jsCode = "this.doSomething();";
this.webBrowser1.Document.InvokeScript("eval", new object[] { jsCode });