记一次寻找filepath的过程

2023-10-25 15:20
文章标签 过程 一次 寻找 filepath

本文主要是介绍记一次寻找filepath的过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:

使用miniblink的api实现了下载功能,但希望得到文件下载路径,然后开始了寻找之旅。 

最外层的函数wkeOnDownload2 

ITERATOR3(void, wkeOnDownload2, wkeWebView webView, wkeDownload2Callback callback, void* param, "")

函数指针类型wkeDownload2Callback

typedef wkeDownloadOpt(WKE_CALL_TYPE*wkeDownload2Callback)(wkeWebView webView, void* param,size_t expectedContentLength,const char* url, const char* mime, const char* disposition, wkeNetJob job, wkeNetJobDataBind* dataBind);wkeDownload2Callback类型等价于
wkeDownloadOpt(*)(wkeWebView webView, void* param,size_t expectedContentLength,const char* url, const char* mime, const char* disposition, wkeNetJob job, wkeNetJobDataBind* dataBind);这个类型

wkePopupDialogAndDownload

ITERATOR9(wkeDownloadOpt, wkePopupDialogAndDownload, 
wkeWebView webviewHandle, 
const wkeDialogOptions* dialogOpt,
size_t expectedContentLength, 
const char* url, 
const char* mime, 
const char* disposition, 
wkeNetJob job,
wkeNetJobDataBind* dataBind, 
wkeDownloadBind* callbackBind, "")

 wkeDialogOptions

typedef struct _wkeDialogOptions {int magic; // 'mbdo'utf8* title;utf8* defaultPath;utf8* buttonLabel;wkeFileFilter* filters;int filtersCount;wkeDialogProperties prop;utf8* message;BOOL securityScopedBookmarks;
} wkeDialogOptions;

 wkeDialogProperties

enum wkeDialogProperties {kWkeDialogPropertiesOpenFile = 1 << 1, // 允许选择文件kWkeDialogPropertiesOpenDirectory = 1 << 2, // 允许选择文件夹kWkeDialogPropertiesMultiSelections = 1 << 3, // 允许多选。kWkeDialogPropertiesShowHiddenFiles = 1 << 4, // 显示对话框中的隐藏文件。kWkeDialogPropertiesCreateDirectory = 1 << 5, // macOS - 允许你通过对话框的形式创建新的目录。kWkeDialogPropertiesPromptToCreate = 1 << 6, // Windows - 如果输入的文件路径在对话框中不存在, 则提示创建。 这并不是真的在路径上创建一个文件,而是允许返回一些不存在的地址交由应用程序去创建。kWkeDialogPropertiesNoResolveAliases = 1 << 7, // macOS - 禁用自动的别名路径(符号链接) 解析。 所选别名现在将会返回别名路径而非其目标路径。kWkeDialogPropertiesTreatPackageAsDirectory = 1 << 8, // macOS - 将包(如.app 文件夹) 视为目录而不是文件。kWkeDialogPropertiesDontAddToRecent = 1 << 9, // Windows - 不要将正在打开的项目添加到最近的文档列表中。
};

wkeNetJobDataBind 

typedef struct _wkeNetJobDataBind {void* param;wkeNetJobDataRecvCallback recvCallback;wkeNetJobDataFinishCallback finishCallback;
} wkeNetJobDataBind;

 wkeDownloadBind

typedef struct _wkeDownloadBind {void* param;wkeNetJobDataRecvCallback recvCallback;wkeNetJobDataFinishCallback finishCallback;wkePopupDialogSaveNameCallback saveNameCallback;
} wkeDownloadBind;

 找呀找呀找朋友,终于找到了filePath

可以通过该回调函数得到心心念念的filePath啦

typedef void(WKE_CALL_TYPE* wkePopupDialogSaveNameCallback)
(void* ptr, const wchar_t* filePath);用wkePopupDialogSaveNameCallback来简短表示
void(*)(void* ptr, const wchar_t* filePath);

这篇关于记一次寻找filepath的过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket