electron的双屏异显方案

本方案主要是实现了在两个屏幕显示不同的内容,并根据用户操作,使两个屏幕之间可以通过方法调用(通信),使副屏幕执行相应的操作。

所需的硬件前提条件:双屏,且将双屏的显示方式改为“扩展”;

p.s. 本文使用的electron的版本为1.8.8;如使用新版本进行开发,官方出于安全考虑,默认是开启语境隔离模式的,需要在预加载脚本(preload)部分使用contextBridge进行方法处理。


方案的步骤如下:

  1. /src/main/index.js文件中,编写增加副屏幕的方法,并在启动的时候,调用此方法
function createOtherWin(){
  let displays = screen.getAllDisplays();
  //寻找副屏幕
  let externalDisplay = displays.find((display) => {
    return display.bounds.x !== 0 || display.bounds.y !== 0
  })
  if (externalDisplay) {
    otherWindow = new BrowserWindow({
      fullscreen:true,
      x: externalDisplay.bounds.x,
      y: externalDisplay.bounds.y,
      webPreferences: {
        nodeIntegration: true,
        //配置预加载脚本文件(preload),此处起名为preloadOther
        //p.s.路径为绝对路径
        preload: require('path').join(app.getAppPath(), 'preloadOther.js')
      }
    })

    //指定副屏幕打开的网页
    otherWindow.loadURL(`file://${app.getAppPath()}/src/main/testOtherWin.html`);
    otherWindow.on('closed', () => {   //这一段放外面的话,如果你电脑没双屏会报错。
      otherWindow = null
    })

    //主进程监听事件示例(用于双屏之间的通信)
    //需要预先引入 import { ipcMain } from 'electron'
    ipcMain.on('pay-start', (event, detail) => {
      otherWindow.webContents.send('pay-start', detail);
    })
  }
}
//启动的回调方法
app.on('ready', () => {
  createWindow();
  //启动副屏幕
  createOtherWin();
})
  1. 修改主屏幕的预加载脚本(preload),实现向副屏幕传输消息的方法:
//引入相关的通信组件
const { ipcRenderer } = require('electron')

window.otherScreen = {
    payStart: (order) => {
        ipcRenderer.send('pay-start', order)
    }
}
  1. 创建副屏幕的预加载脚本(preload)文件,即上文的preloadOther.js(p.s. 注意配置文件的路径为绝对路径):
//引入相关的通信组件
const { ipcRenderer } = require('electron')
ipcRenderer.on('pay-start', (event, obj) => {
    //接收到的参数
    console.log(obj)
    //调用副屏幕页面上的方法进行业务操作 
    onMessage(obj)
})
  1. 创建测试副屏幕的网页文件(testOtherWin.html)(此处为示例文件,较简单)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="application/javascript">
        //预加载文件调用此方法进行测试
        function onMessage(a) {
            alert("onMsg: " + a)
        }
    </script>
</head>

<body>
    <div>
        test other win
    </div>
</body>
</html>
``
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
要在 Electron实现双屏全屏,你可以使用 Electron 的 BrowserWindow 模块来创建两个窗口,并将它们分别显示在不同的屏幕上,然后将这两个窗口设置为全屏模式。 以下是一个简单的示例代码: ```javascript const { app, BrowserWindow, screen } = require('electron') function createWindows() { const displays = screen.getAllDisplays() // 创建第一个窗口并全屏显示在第一个屏幕上 const mainWindow = new BrowserWindow({ fullscreen: true, x: displays[0].bounds.x, y: displays[0].bounds.y, width: displays[0].bounds.width, height: displays[0].bounds.height, webPreferences: { nodeIntegration: true } }) mainWindow.loadFile('index.html') // 创建第二个窗口并全屏显示在第二个屏幕上 const secondWindow = new BrowserWindow({ fullscreen: true, x: displays[1].bounds.x, y: displays[1].bounds.y, width: displays[1].bounds.width, height: displays[1].bounds.height, webPreferences: { nodeIntegration: true } }) secondWindow.loadFile('second.html') } app.whenReady().then(createWindows) ``` 在上面的示例中,我们使用 `screen.getAllDisplays()` 获取了所有连接的显示器的信息。然后,我们将第一个窗口显示在第一个屏幕上,并将其设置为全屏模式。接着,我们创建了第二个窗口并将其显示在第二个屏幕上,并同样将其设置为全屏模式。 你需要将 `'index.html'` 和 `'second.html'` 替换为你实际的 HTML 文件路径。 请注意,要在双屏上进行全屏显示,确保你的系统设置已正确配置双屏幕。 希望这个示例能帮助你实现 Electron双屏全屏功能。如果有任何问题,请提供更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值