码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • electron笔记无边框窗口、DLL调用、DLL函数返回指针


    无边框

    const win = new BrowserWindow({
        width: 1290,
        height: 736,
        minHeight: 736,
        minWidth: 1040,
        maxHeight: 736,
        maxWidth: 1290,
        frame: false, // 无边框
        webPreferences: {
              // preload: process.env.WEBPACK_DEV_SERVER_URL ? __dirname + '/preload.js' : 'app://./preload.js',
              // devTools: true,
              // Use pluginOptions.nodeIntegration, leave this alone
              // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
              nodeIntegration: true,
              contextIsolation: false
          }
      })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    窗口鼠标拖拽移动

    ipcMain.handle("window-move-open", (event, canMoving) => {
        let winStartPosition = { x: 0, y: 0 };
        let mouseStartPosition = { x: 0, y: 0 };
        const currentWindow = BrowserWindow.getFocusedWindow();
        const currentWindowSize = currentWindow.getSize();
    
        if (currentWindow) {
          if (canMoving) {
            const winPosition = currentWindow.getPosition();
            winStartPosition = { x: winPosition[0], y: winPosition[1] };
            mouseStartPosition = screen.getCursorScreenPoint();
            if (movingInterval) {
              clearInterval(movingInterval);
            }
            movingInterval = setInterval(() => {
              if (!currentWindow.isDestroyed()) {
                if (!currentWindow.isFocused()) {
                  clearInterval(movingInterval);
                  movingInterval = null;
                }
                const cursorPosition = screen.getCursorScreenPoint();
                const x =
                  winStartPosition.x + cursorPosition.x - mouseStartPosition.x;
                const y =
                  winStartPosition.y + cursorPosition.y - mouseStartPosition.y;
                currentWindow.setBounds({
                  x: x,
                  y: y,
                  width: currentWindowSize[0],
                  height: currentWindowSize[1],
                });
              }
            }, 10);
          } else {
            clearInterval(movingInterval);
            movingInterval = null;
          }
        }
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    调用dll
    nodejs调用dll依赖ffi模块,如何安装ffi依赖?
    推荐文章地址:https://blog.csdn.net/qq_28218253/article/details/121643328
    需要注意的问题:
    1.首先要判断dll是32位还是64位?

    桌面左下角搜索,输入vs,选择vs开发者命令行工具, 输入dumpbin /headers XXX.dll,在这里插入图片描述
    如果是x86 32 bit,则为32位,反之是64

    2.根据dll是32位还是64位,选择对应的nodejs版本以及electron。
    推荐文章地址:https://blog.csdn.net/qq_28218253/article/details/121643328
    3.安装windows-build-tools出现卡住的问题?
    推荐文章地址:https://blog.csdn.net/Ajucy/article/details/130380278

    如何调用dll

    const dllPath = process.cwd()+'\\5.6.0.8_64.dll';
    let strPtr = refArray('uchar',16)
    const library = ffi.Library(dllPath,{
      DyInit: ['int',[]],
      DyGetPushStreamUrl:[ref.refType(strPtr),[]],
      DyUnInit: ['int',[]],
      DyGetVersion: [ref.refType(strPtr),[]],
    })
     let res =  library.DyGetVersion()
     console.log(res.toString())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    dll函数返回指针数据
    推荐文章地址:https://blog.csdn.net/RuanEmpty/article/details/115692244

  • 相关阅读:
    Springboot+校园健身互助平台 毕业设计-附源码221540
    带你玩转 Redis 的 键(key)命令
    loadPCDFile的底层实现
    让我手把手教你写一个强大、方便使用的 IOC 容器
    计算机考研408专用笔记-----计算机组成原理
    射频微波芯片设计4:耦合器芯片
    串的基本概念和常见算法(BF算法,KMP算法--附python实现代码)
    【工具】简道云零代码开发平台
    2024测试工程师必学的Jmeter:利用jmeter插件收集性能测试结果&汇总报告和聚合报告
    DBeaver 安装及配置离线驱动
  • 原文地址:https://blog.csdn.net/qq_42289686/article/details/132649000
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号