IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> VC++ CEF3 实现模拟登录、自动填表或模拟提交功能 -> 正文阅读

[移动开发]VC++ CEF3 实现模拟登录、自动填表或模拟提交功能

一、环境搭建

1、教程:https://kefong.blog.csdn.net/article/details/119910984
2、源码:https://gitee.com/kefong/mfccef.git
在这里插入图片描述
以下所有工作,都是在以上源码基础上进行。

二、在browser中重写网页加载完毕执行方法 CefLoadHandler->OnLoadEnd

1、[CCefBrowserEventHandler.h] CCefHandler中增加继承CefLoadHandler
在这里插入图片描述

CCefBrowserEventHandler.h

public CefLoadHandler

2、绑定

CCefBrowserEventHandler.h

virtual CefRefPtr<CefLoadHandler> GetLoadHandler() override { return this; }

3、重写方法OnLoadEnd,发送消息给render

CCefBrowserEventHandler.h

void OnLoadEnd(CefRefPtr<CefBrowser> browser,
			CefRefPtr<CefFrame> frame,
			int httpStatusCode);

cef_handler.cpp

void CCefBrowserEventHandler::OnLoadEnd(CefRefPtr<CefBrowser> browser,
	CefRefPtr<CefFrame> frame,
	int httpStatusCode) {
	CEF_REQUIRE_UI_THREAD();

	//声明消息体
	CefRefPtr<CefProcessMessage> message = CefProcessMessage::Create(L"changedom");
	//CefRefPtr<CefListValue> args = message->GetArgumentList();
	//args->SetSize(2);
	//args->SetString(0, L"username");
	//args->SetString(1, L"password");
	
	//browser传送消息体给render,以便render中处理一些网页信息
	frame->SendProcessMessage(PID_RENDERER, message);
}

知识点:

browser浏览器(显示网页内容的外部框);render网页(如:frame等网页内容)

三、render接收browser中的消息,并修改网页内容

1、在CCefBrowserApp.h中增加继承public CefRenderProcessHandler
在这里插入图片描述

 virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() override {
        return this;
    }

2、实现OnProcessMessageReceived方法
CCefBrowserApp.h

virtual bool OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
        CefRefPtr<CefFrame> frame,
        CefProcessId source_process,
        CefRefPtr<CefProcessMessage> message) override;

CCefBrowserApp.cpp

bool CCefBrowserApp::OnProcessMessageReceived(CefRefPtr<CefBrowser> browser,
	CefRefPtr<CefFrame> frame,
	CefProcessId source_process,
	CefRefPtr<CefProcessMessage> message) {
	DCHECK_EQ(source_process, PID_BROWSER);

	CefString message_name = message->GetName();
	MessageBox(NULL, L"123456", NULL, NULL);

	if (message_name == CefString("changedom")) {
		// 页面加载完成,访问DOM
		frame->VisitDOM(new MyDomVisitor());
		//执行一条js代码
		CefString js = "alert('test');";
		frame->ExecuteJavaScript(js, frame->GetURL(), 0);
	}

	return false;
}

说明:message_name == CefString(“changedom”)中的changedom必须与browser中的传值一模一样

3、创建网页内容修改类:MyDomVisitor
MyDomVisitor.h

#pragma once
class MyDomVisitor :public CefDOMVisitor
{
public:
	void Visit(CefRefPtr<CefDOMDocument> document) override;

	void TestAccess(CefRefPtr<CefDOMDocument> document);
	void TestModify(CefRefPtr<CefDOMDocument> document);
protected:
	// Include the default reference counting implementation.
	IMPLEMENT_REFCOUNTING(MyDomVisitor);
};

MyDomVisitor.cpp

#include "pch.h"
#include "include/cef_dom.h"
#include "MyDomVisitor.h"

void MyDomVisitor::Visit(CefRefPtr<CefDOMDocument> document) {
	//MessageBox(NULL, L"111", NULL, NULL);

	TestAccess(document);
	TestModify(document);
}

void MyDomVisitor::TestAccess(CefRefPtr<CefDOMDocument> document) {

}

void MyDomVisitor::TestModify(CefRefPtr<CefDOMDocument> document) {
	CefRefPtr<CefDOMNode> kw = document->GetElementById("kw");
	if (kw.get()) {
		kw->SetElementAttribute("value", "test");
	}
}

四、最终效果

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:02:21  更:2022-03-21 21:04:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 18:40:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码