首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >电子遥控器(关闭、最小化等)无法工作(无法读取未定义的属性“getCurrentWindow”)

电子遥控器(关闭、最小化等)无法工作(无法读取未定义的属性“getCurrentWindow”)
EN

Stack Overflow用户
提问于 2020-08-29 23:57:08
回答 4查看 9.4K关注 0票数 4

我试图添加关闭和最小化按钮在无框窗口在电子JS应用程序。但不管怎么说都没用。它也显示了“无法读取属性'getCurrentWindow‘的未定义”错误。这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const {remote} = require('electron');

document.getElementById('minimize').onclick = function() {
    var window = remote.getCurrentWindow();
    window.minimize();
}

document.getElementById('close').onclick = function() {
    var window = remote.getCurrentWindow();
    window.close();
}

我还在webPreferences中添加了main.js:{nodeIntegration: true}。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
win = new BrowserWindow({width: 990, height: 660, title: "Okkhor52 Tools", show: false, resizable: false, frame: false, webPreferences: {nodeIntegration: true}});

请给我一个解决办法,我试图找到这个问题解决在许多地方,但我没有得到确切的解决办法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-08-30 09:44:51

解决问题很容易。只需在webPreferences: {enableRemoteModule: true}中的BrowserWindow中添加main.js即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
win = new BrowserWindow({
    width: 990, 
    height: 660,
    title: "Okkhor52 Tools", 
    resizable: false, 
    frame: false, 
    webPreferences: {
        nodeIntegration: true, 
        enableRemoteModule: true
    }
}); 

除了enableRemoteModule: true,您还需要在webPreference中添加nodeIntegration: true,否则如果您从其他人的javascript调用电子(如这个const {remote} = require('electron'); ),它将无法工作。

票数 17
EN

Stack Overflow用户

发布于 2020-10-13 12:15:13

如果您已经将enableRemoteModule设置为true,并且仍然存在此问题,那么很可能需要远程模块,或者需要一个需要它在中的的文件--主要进程,至少对我来说是这样。远程模块在主进程中不是必需的,仅用于渲染程序进程。

如果您需要或需要在主进程中使用require("electron").remote.getCurrentWindow()的另一个javascript文件,那么您将得到这个错误。

解决这一问题只需在主进程中不以任何方式包含该代码。

票数 3
EN

Stack Overflow用户

发布于 2021-09-14 07:38:54

根据的文章,我们根本不应该使用“远程”。更好的方法是通过发送消息与渲染器进行通信。

首先,您需要WindowNodeHandlers类来调用BrowserWindow最大化/非最大化操作并更新isMaximized标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class WindowNodeHandlers {
  ipcMain.on('maximize', () => {
    BrowserWindow.getFocusedWindow()?.maximize();
  });

  ipcMain.on('unmaximize', () => {
    BrowserWindow.getFocusedWindow()?.unmaximize();
  });

  ipcMain.on('isMaximized', (event) => {
    event.returnValue = BrowserWindow.getFocusedWindow()?.isMaximized();
  });
}

然后创建ElectronWindowApi类,在呈现程序和主要进程之间进行通信:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ElectronWindowApi implements MainWindowApi {
  maximize(): void {
   ipcRenderer.send('maximize');
  }

  unmaximize(): void {
   ipcRenderer.send('unmaximize');
  }

  isMaximized(): boolean {
   return ipcRenderer.sendSync('isMaximized') as boolean;
  }
 }

之后,在您的WindowNodeHandlers函数中创建createWindow实例并为这些事件添加侦听器,这些事件将将消息发送回呈现程序进程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const createWindow = async () => {
 ...
 new WindowNodeHandlers();

 mainWindow.on('maximize', () =>
   mainWindow?.webContents.send('window-maximized')
 );

 mainWindow.on('unmaximize', () =>
   mainWindow?.webContents.send('window-unmaximized')
 );
}

最后要做的事情是为这些消息添加处理程序,并使用ElectronWindowApi调用呈现程序端的最大化/非最大化操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
const windowApi = new ElectronWindowApi();
const [isMaximized, setIsMaximized] = useState(windowApi.isMaximized());
const onMaximized = () => setIsMaximized(true);
const onRestore = () => setIsMaximized(false);

const toggleMaximize = () => {
  isMaximized ? windowApi.unmaximize() : windowApi.maximize();
};

useEffect(() => {
  ipcRenderer.on('window-maximized', onMaximized);
  ipcRenderer.on('window-unmaximized', onRestore);
}, []);

return (
   <IconButton
      aria-label={isMaximized ? 'minimize' : 'maximize'}
      onClick={toggleMaximize}
    >
      {isMaximized ? (
        <SvgIcon
          component={MinimizeWindowIcon}
        />
      ) : (
        <SvgIcon
          component={MaximizeWindowIcon}
        />
      )}
    </IconButton>
)
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63655239

复制
相关文章
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.1K0
V-3-3 在没有vCenter的情况下
在使用vSphere客户端登陆到ESXi服务器的时候,由于没有安装vCenter,而发现无法克隆虚拟机。而如果要安装vCenter的Windows版,有时候需要创建多台Windows Server主机,这种时候可以通过复制ESXi datastore里的虚拟机文件来创建多台相同的Windows Server虚拟机。
py3study
2020/01/07
1.1K0
在没有外链情况下,如何提高PR值?
外链是提高PR值的有利方式,但现在外链建设愈发困难,各家都对自己的网站进行链接屏蔽,即使你的外链建设成功,在代码状态下依然是Nofollow状态,所以seoer对外链格外关注。
蝙蝠侠IT
2021/03/22
5390
在没有外链情况下,如何提高PR值?
【黄啊码】MySQL入门—17、在没有备份的情况下,如何恢复数据库数据?
大家好!我是黄啊码,MySQL的入门篇已经讲到第16个课程了,今天我们继续讲讲大白篇系列——科技与狠活之恢复数据库
黄啊码
2022/11/01
5.9K0
【黄啊码】MySQL入门—17、在没有备份的情况下,如何恢复数据库数据?
在没有数据的情况下使用贝叶斯定理设计知识驱动模型
数据是模型的基础,但是没有数据只有领域专家也可以很好地描述或甚至预测给定环境的“情况”。我将根据贝叶斯概率来总结知识驱动模型的概念,然后是一个实际教程,以演示将专家的知识转换为贝叶斯模型以进行推理的步骤。我将使用 Sprinkler 系统从概念上解释过程中的步骤:从知识到模型。最后我将讨论复杂的知识驱动模型的挑战,以及由于质疑和提取知识而可能发生的系统错误。所有示例都是使用 python 的 bnlearn 库创建的。
deephub
2021/10/09
2.2K0
在没有数据的情况下使用贝叶斯定理设计知识驱动模型
在没有 'try-with-resources' 语句的情况下使用 'xxx' 是什么意思
在没有使用 try-with-resources 语句的情况下使用 xxx,意味着在代码中没有显式地关闭 xxx对象资源,如果没有使用 try-with-resources,那么在使用xxx对象后,需要手动调用 close() 方法关闭xxx对象以释放资源,防止资源泄露。
高久峰
2023/09/30
4.2K0
神兵利器 - 在没有任何权限的情况下破解任何 Microsoft Windows 用户密码
项目地址:https://github.com/DarkCoderSc/win-brute-logon
Khan安全团队
2022/04/02
1.7K0
神兵利器 - 在没有任何权限的情况下破解任何 Microsoft Windows 用户密码
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
谷歌AI研究人员正在将计算机视觉应用于声波视觉效果,从而在不使用语言模型的情况下实现最先进的语音识别性能。
AiTechYun
2019/05/13
9480
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
在没有abi文件的情况下调用智能合约方法,web3py实现
前几天,回答了一个问题,感觉还可以,写成一篇文章记录一下。问题在:如何用 web3py 调用闭源合约[2]
Tiny熊
2022/02/22
2.4K0
在没有abi文件的情况下调用智能合约方法,web3py实现
在没有技术术语的情况下介绍Adaptive、GBDT、XGboosting等提升算法的原理简介
这篇文章将不使用任何的术语介绍每个提升算法如何决定每棵树的票数。通过理解这些算法是如何工作的,我们将了解什么时候使用哪种工具。
deephub
2020/07/14
8910
尽量减少网站域名在没有启用 CDN 情况下的各种检测、扫描、测速等操作
今天明月给大家分享个比较可怕的事儿,那就是轻松获取你站点服务器真实 IP 的途径和办法,很多小白站长不知道自己服务器真实 IP 的重要性,因此一些不好的习惯就会暴露你的真实 IP 到网上,从而造成被各种恶意扫描和爬虫抓取骚扰,甚至严重的被人当做练手的 CC/DDos 攻击靶子。
明月登楼的博客
2019/05/15
1.1K0
尽量减少网站域名在没有启用 CDN 情况下的各种检测、扫描、测速等操作
研究人员开发机器学习算法,使其在没有负面数据的情况下进行分类
分类对我们的日常生活至关重要,例如,我们要检测垃圾邮件,虚假的政治新闻,以及一些日常的东西,如物体或面孔。当使用AI时,这些任务基于机器学习中的“分类技术”, 让计算机使用正负数据的边界进行学习,如“正面”数据将是带有幸福面孔的照片,“负面”数据是带有悲伤面部的照片。
AiTechYun
2018/12/24
8000
研究人员开发机器学习算法,使其在没有负面数据的情况下进行分类
在GAN中通过上下文的复制和粘贴,在没有数据集的情况下生成新内容
GAN体系结构一直是通过AI生成内容的标准,但是它可以实际在训练数据集中提供新内容吗?还是只是模仿训练数据并以新方式混合功能?
deephub
2020/09/28
1.6K0
在GAN中通过上下文的复制和粘贴,在没有数据集的情况下生成新内容
在没有源代码的情况下对Linux二进制代码进行模糊测试
AFL配合DynamoRIO,没错,就是drAFL。在drAFL的帮助下,我们就可以在没有源代码的情况下对LInux二进制代码进行模糊测试了。
FB客服
2019/05/31
1.5K0
学习Python与Excel:使用xlwt在没有Excel的情况下编写电子表格
原始数据被搅和在一起,账号和类别没有分开,有些数据甚至没有账号。将这些数据写入Excel工作表并格式化,如下图1所示。
fanjy
2023/02/24
1.8K0
学习Python与Excel:使用xlwt在没有Excel的情况下编写电子表格
Hibernate 5 在保存数据的时候提示数据库没有选择
09:06:40.277 [http-nio-8080-exec-1] ERROR o.h.id.enhanced.TableStructure - could not read a hi value
HoneyMoose
2020/04/15
1.5K0
Hibernate 5 在保存数据的时候提示数据库没有选择
Android Button 单击事件
方法一:在XML文件中指定 单击事件函数 <Button             android:id="@+id/button1"             android:layout_width="120dip"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_below="@+id/textView1
磊哥
2018/05/08
1.7K0
Vue路由嵌套刷新后页面没有重新渲染
Vue路由嵌套刷新后页面没有重新渲染
Java架构师必看
2021/09/14
1.5K0
在已有的数据库里添加一列,并写入python的数组数据
总结就是,暂时没有直接添加列的办法,只能先读入python,利用pandas写一个dataframe,加入新的列,再将整备好的dataframe写入数据库。
一个有趣的灵魂W
2020/09/15
3.8K0
没有网线情况下使用树莓派连接WiFi
烧录系统后,在boot/文件夹下创建wpa_supplicant.conf文件 添加代码:
全栈程序员站长
2022/08/23
3280

相似问题

ReactJS:如何在没有单击延迟的情况下刷新组件

11

在没有刷新的情况下隐藏/显示,更改单击以表现为切换

12

如何在没有引号的情况下写入数据库

20

在没有错误的情况下,无法将Firebase写入数据库

10

在没有输入的情况下单击按钮更新数据库记录

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文