c# webBrowser 模拟键盘输入及后台执行js

如果直接给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 });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值