lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器

2024-02-16 19:20

本文主要是介绍lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。

先请看 \fpwebview-master\README.md

cd \lazarus\projects\fpwebview-master\demo\lclembed

修改 lclembed.lpr  如下,将 fphttpapp. 注释掉,因为我用不上。

program lclembed;{$mode objfpc}{$H+}
{$ifdef darwin}{$linklib libwebview}{$endif}
{$ifdef mswindows}{$linklib libwebview}{$endif}uses{$IFDEF UNIX}cmem, cthreads,{$ENDIF}Interfaces, Forms, math,classes, fphttpapp, fpwebfile,guiform;{$R *.res}typeTWebServerThread = class(TThread)protectedprocedure Execute; override;publicconstructor Create(CreateSuspended: boolean);end;constructor TWebServerThread.Create(CreateSuspended: boolean);
begininherited Create(CreateSuspended);FreeOnTerminate := true;
end;procedure TWebServerThread.Execute;
begin
//fphttpapp.Application.Run;
end;varcurrDir: String;begin{ Set math masks. libwebview throws at least one of these from somewhere deep inside. }SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]);{ Set up embedded webserver. }GetDir(0, currDir);TSimpleFileModule.BaseDir := currDir + '/htdocs';TSimpleFileModule.RegisterDefaultRoute;TSimpleFileModule.IndexPageName := 'index.html';MimeTypesFile := 'mime.types';
//fphttpapp.Application.Port := 8000;
//fphttpapp.Application.Threaded := true;
//fphttpapp.Application.Initialize;
//TWebServerThread.Create(false);{ Set up LCL application. }RequireDerivedFormResource:=True;Forms.Application.Scaled:=True;Forms.Application.Initialize;Forms.Application.CreateForm(TForm1, Form1);Forms.Application.Run;
end.

修改 guiform.pas 如下,我增加一个Edit1 和 Button1

usesClasses, SysUtils, StrUtils,procedure TForm1.Button1Click(Sender: TObject);
var url: String;
beginurl:= Edit1.Text;if AnsiStartsStr('192.', url) then url:= 'http://' + Trim(url)else if AnsiStartsStr('http', url) then url:= Trim(url)else url:= 'https://' + Trim(url);webview_navigate(wvHandle, PAnsiChar(url));end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
beginif key = #13 then Button1Click(Sender);
end;其它代码暂时不改变

编写 winbuild.bat  如下,并运行。

@echo offecho Set up FPC executable path.
set fpcexe=D:\lazarus\fpc\3.2.2\bin\x86_64-win64\fpc.exe
if not exist "%fpcexe%" (echo ERROR: Edit this batch file to set up location of fpc.exeexit /b 1
)
echo "%fpcexe%"echo Building...
copy "..\..\dll\x86_64\libwebview.a" .
copy "..\..\dll\x86_64\webview.dll" .
copy "..\..\dll\x86_64\WebView2Loader.dll" .

点击菜单:运行:构建,构建成功后再点击 运行

或者 运行 lclembed.exe

这篇关于lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715458

相关文章

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机