Skip to content

一、如何启动项目

  1. 解压 win-unpacked.zip
  2. 双击 win-unpacked/目录下的 2-electron-video.exe

二、如何替换 dll 文件

  • win-unpacked/app.asar.unpacked/sdk/demodll.dll 我自行编译的 dll 文件
  • win-unpacked/app.asar.unpacked/sdk/cygHCTP.dll c++同学给的

目前测试的 dll 文件 放在了 win-unpacked/app.asar.unpacked/sdk/ 目录下

  1. 其中demodll.dll 或者cygHCTP.dll 替换成你们自己的就可以
  2. 替换后先关闭测试窗口、重新 双击 win-unpacked/目录下的 2-electron-video.exe 就可以看到效果了

三、demodll.dll 生成过程

  1. 打开 vs 2022
  2. 新建
  3. 项目
  4. 动态链接库(DLL) - 下一步
  5. 项目名称 demodll - 创建
  6. 修改 dllmain.cpp 文件,内容如下 - 保存

dllmain.cpp

cpp
#include "pch.h"
#include <iostream>

extern "C" __declspec(dllexport) int add(int a, int b)
{
	return a + b;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
  1. 顶部菜单 “生成” - “生成解决方案”
bash
已启动生成...
1>------ 已启动生成: 项目: demodll2, 配置: Debug x64 ------
1>pch.cpp
1>dllmain.cpp
1>demodll2.vcxproj -> D:\Desktop\mydll\demodll2\x64\Debug\demodll2.dll
========== 生成: 1 成功,0 失败,0 最新,0 已跳过 ==========
========= 生成 开始于 11:47 AM,并花费了 02.790 ==========

D:\Desktop\mydll\demodll2\x64\Debug\demodll2.dll 就是我们的目标文件

四、启动后的效果

五、日志目录

powershell

cd ~\AppData\Roaming\2-electron-video\logs

start .

六、PPCS_API.dll 初始化

导入 ffi 和 ref 模块:

javascript
const ffi = require('ffi-napi');
const ref = require('ref-napi');

定义返回值类型:

javascript
const ulonglong = ref.types.ulonglong;

定义返回值的缓冲区:

javascript
const retPtr = ref.alloc(ulonglong);

调用"hctpInit"方法,并将返回值缓冲区作为参数传递:

javascript
const lib = ffi.Library('your_library_name', {
  hctpInit: ['ulonglong', ['string']]
});

const result = lib.hctpInit('your_string_arg', retPtr);

获取返回值:

javascript
const returnedValue = ref.get(retPtr);

现在,您可以将返回的 ulonglong 类型的值保存在一个变量中(例如,returnedValue),并将其用作后续"hctpMediaDownload"方法的参数之一。