CefSharp监听得页面的键盘鼠标事件

初始化CefSharp时加上两个事件(装入完成事件、消息接收事件)

private void initBrowser()
		{
			//设置
			var settings = new CefSettings();
			settings.Locale = "zh-CN";
			settings.CefCommandLineArgs.Add("disable-gpu", "1");//去掉gpu,否则chrome显示有问题
			Cef.Initialize(settings);

			//浏览器对象
			string url = "https://www.taobao.com/";
			browser = new ChromiumWebBrowser(url);

			//加入容器
			panel1.Controls.Add(browser);

			//高分辨率(新版不要)
			Cef.EnableHighDPISupport();

			//设置LifeSpanHandler,不弹出新窗体
			browser.LifeSpanHandler = new LifeSpanHandler();

			//改变网址事件
			browser.AddressChanged += Browser_AddressChanged;

			//装入处理器
			myLoadHandler = new MyLoadHandler(this);
			browser.LoadHandler = myLoadHandler;
			
			//装入完成事件
			 browser.FrameLoadEnd += Browser_FrameLoadEnd;
			 
			 //消息接收事件
			browser.JavascriptMessageReceived += Browser_JavascriptMessageReceived;

		}

装入完成事件

private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
		{
			if (e.Frame.IsMain)
			{
				browser.ExecuteScriptAsync(@"
					//鼠标按下事件
                    document.addEventListener('mousedown', function(e) {
						var ret={type:'mousedown',x:e.pageX,y:e.pageY};
						CefSharp.PostMessage(ret);
                    }, false);

					//鼠标释放事件
					document.addEventListener('mouseup', function(e) {
						var ret={type:'mouseup',x:e.pageX,y:e.pageY};
						CefSharp.PostMessage(ret);
                    }, false);
					
					//keydown事件
					document.addEventListener('keydown', function(e) {
						var ret={type:'keydown',keyCode:event.keyCode};
						CefSharp.PostMessage(ret);
                    }, false);

					//keyup事件
					document.addEventListener('keyup', function(e) {
						var ret={type:'keyup',keyCode:event.keyCode};
						CefSharp.PostMessage(ret);
                    }, false);
                ");
			}
		}

消息接收事件

private void Browser_JavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e)
		{
			if (e.Message != null)
			{
				dynamic eo = e.Message;
				switch (eo.type)
				{
					case "mousedown":
					case "mouseup":
						int x = eo.x;
						int y = eo.y;

						break;

					case "keydown":
						break;
					case "keyup":
						int keyCode = eo.keyCode;
						if (keyCode == 123)
						{
							//F12
						}
						break;
				}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值