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. 注释掉,因为我用不上 a simple webserver。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

一、本文介绍 本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级…

Leetcode1686. 石子游戏 VI

Every day a Leetcode 题目来源:1686. 石子游戏 VI 解法1:贪心 排序 贪心的思想: 这道题模拟一个石子游戏,求解最后的比赛结果。 题目说两位玩家都会采用 最优策略 进行游戏,那么关键点就在于什么是最优策略&…

Swift Combine 合并多个管道以更新 UI 元素 从入门到精通十七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

Java 8中的Stream API是什么?

Java 8引入了一项强大的新抽象称为Stream API,旨在提高Java程序员在处理集合时的生产力。它是为了使集合的操作更加方便和高效,尤其是对于大数据集的处理。Stream API通过提供一种高级的、声明式编程方式来处理数据,允许对数据进行复杂的查询…

centos中docker操作+安装配置django+mysql5.7并使用simpleui美化管理后台

一、安装docker 确保系统是CentOS 7并且内核版本高于3.10,可以通过uname -r命令查看内核版本。 更新系统软件包到最新版本,可以使用命令yum update -y。 安装必要的软件包,包括yum-utils、device-mapper-persistent-data和lvm2。使用命令yum install -y yum-utils devic…

软考 系统分析师系列知识点之信息系统战略规划方法(11)

接前一篇文章:软考 系统分析师系列知识点之信息系统战略规划方法(10) 所属章节: 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.7 价值链分析法 价值链分析(Value Chain Analysis,VCA&am…

.NET Core MongoDB数据仓储和工作单元模式封装

前言 上一章我们把系统所需要的MongoDB集合设计好了,这一章我们的主要任务是使用.NET Core应用程序连接MongoDB并且封装MongoDB数据仓储和工作单元模式,因为本章内容涵盖的有点多关于仓储和工作单元的使用就放到下一章节中讲解了。仓储模式(R…

两年前的爱爱竟然让她染上菜花和梅毒!医师警告:性病潜伏期不可小觑,HPV疫苗是必备的

【记者许家源/综合报道】 台北市一名30多岁的女性,因为私密处长出不明物体,到泌尿科求诊,没想到被诊断出是菜花,而且还合并了梅毒。 她回想起自己最后一次发生性关系,竟然是两年前和前男友的事,不明白为什…

搭建 blender python api 的外部开发环境

以下都是为了不直接在 blender 的 script ide 里写脚本而做,直接在 blender 里写的话就没什么参考意义了。 首先是2个blender的设置选项,建议开启,会比较方便。 开发选项启用后,你在一些菜单上右键的话,会多出来 在线…

国内几个做的不错的研发效能度量工具

国内几个做的不错的研发效能度量工具: 1、PingCode https://sc.pingcode.com/uvo4u 2、思码逸 https://www.merico.cn 3 云效 https://www.aliyun.com/product/yunxiao/ 4、 Ones https://ones.cn/ 其中思码逸还是不错的,可以接入各种如禅道呀&a…

CleanMyMac X2024版本有哪些常见的使用场景?

CleanMyMac X作为一款Mac电脑清理和优化工具,具有多种使用场景。以下是一些常见的使用场景: 清理系统垃圾文件:CleanMyMac X可以智能扫描Mac磁盘空间,清理系统冗余文件和各种软件应用产生的垃圾文件,如缓存、日志文件…

Kotlin基础——类、对象和接口

文章目录 1 定义类继承结构1.1 接口1.1.1 接口概述1.1.2 接口中的默认方法1.1.3 接口方法重复1.1.4 Kotlin接口中静态方法实现原理 1.2 修饰符1.2.1 类继承修饰1.2.2 方法重写修饰1.2.3 抽象类1.2.4 接口的修饰符 1.3 可见性修饰符1.3.1 Kotlin中的可见性修饰符1.3.2 Kotlin中的…

记 proxifier

5EZ8G-C3WL5-B56YG-SCXM9-6QZAP

男人圣经 2

男人圣经📕 2 强文喾哲改观制衡 功臣 强文 过去我学的思想都是真善美、好人就会有好报、有好名声等等。 真实世界其实是 强者才会有好报、世界上所有的好东西都是给强者准备的、世界法则就是奖励强者、惩罚弱者。 强者的根本属性是强势文化,和常人的思…

林浩然与杨凌芸的时空约会奇遇记

林浩然与杨凌芸的时空约会奇遇记 The Time-Traveling Love Story of Lin Haoran and Yang Lingyun in the Java World 在那个阳光明媚、Java代码飞舞的日子里,程序员界的“情圣”林浩然和美丽聪明的数据分析师杨凌芸携手演绎了一场跨越时间与空间的爱情故事&#xf…

ZYNQ:PL-CAN总线功能应用

流程背景 前期基本实现PS端的CAN总线功能,现阶段的主要目的是实现PL端的CAN总线功能,需要采用CAN IP。 PL系统搭建 PL外设时钟源 搭建完vivado系统后,需要在sdk编程。但是在配置PL-CAN时,意识到CAN时钟值不清楚&…

蓝桥省赛真题|简单:分数

题目链接:https://www.lanqiao.cn/problems/610/learning/?page1&first_category_id1&second_category_id3&tags2018&name%E5%88%86%E6%95%B0 题不难,但是可以帮助编程时好的习惯的养成,更加注意一些细节。 注意几个地方︰…

《区块链公链数据分析简易速速上手小册》第10章:未来趋势和挑战(2024 最新版)

文章目录 10.1 区块链技术的发展方向10.1.1 基础知识10.1.2 重点案例:构建一个简单的智能合约步骤1: 创建智能合约步骤2: 部署智能合约步骤3: 使用Python与智能合约交互结语 10.1.3 拓展案例 1:探索 DeFi 应用准备工作实现步骤步骤1: 获取Compound市场数…

Python 键盘模拟

本篇文章将通过python程序模拟键盘操作。 引入类库 引入相应类库,示例如下: import win32con import win32api import time 模拟按下抬起 按下0.1秒后抬起。 示例如下: win32api.keybd_event(91, 0, 0, 0) time.sleep(0.1) win32api.key…

2.15:指针习题

一.选择题 1.变量的指针,其含义是指该变量的 B 。 A)值 B)地址 C)名 D)一个标志 2.已有定义int k2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k&…