gpt4 book ai didi

node.js - 从 Electron App 隐藏其他窗口/程序

转载 作者:可可西里 更新时间:2023-11-01 09:58:07 25 4
gpt4 key购买 nike

我一直在 NPM 中搜索一些允许我隐藏特定打开窗口的软件包,仅适用于 Linux 和 OSX 支持,不需要 Windows。例如,我希望能够隐藏和取消隐藏一个记事本窗口,但是如果我打开了多个记事本窗口,我不想将它们全部隐藏,我只想隐藏一个特定的窗口。我希望它从任务栏中隐藏起来,而不仅仅是将不透明度设置为不可见。

有没有人知 Prop 有此功能的 NPM 包或者它是否可能?

我相信这在 C# 中的等距将是来自 user32.dll 的 ShowWindow

谢谢。

最佳答案

我无法为您找到开箱即用的解决方案,但您在问题中暗示了问题的答案。 user32.dll 可以使用 node-ffi 从 node.js/electron 访问。

要安装 node-ffi,您需要 node-gyp 及其在 Windows 上的所有依赖项。参见 https://github.com/nodejs/node-gyp#installation

接下来您需要执行以下操作:

npm install ffi
npm install electron-rebuild
.\node_modules\.bin\electron-rebuild.cmd

最后一个是为 Electron 重建原生二进制文件。

将以下代码块放入您的 Electron 应用程序中:

var FFI = require('ffi');

function TEXT(text){
return new Buffer(text, 'ucs2').toString('binary');
}

var user32 = new FFI.Library('user32', {
'FindWindowW': ['int', ['string', 'string']],
'ShowWindow': ['int', ['int', 'int']]
});

var handle = user32.FindWindowW(null, TEXT('Untitled - Notepad'));
console.log(handle);
user32.ShowWindow(handle, 0);

启动记事本并确保窗口标题为“无标题 - 记事本”。如果您启动您的 Electron 应用程序,窗口应该隐藏,但该过程仍然存在。我发布了一个视频来证明这确实有效:https://youtu.be/4thydneqtyQ

至于你问题的后半部分...

您需要一些方法来确定要隐藏的窗口。如果你可以使用窗口标题,那么上面的方法就可以了。

如果不能,那么您将需要一些其他方法来通过 Win32 API 评估窗口并做出决定。您可以通过 FFI 使用 EnumWindows ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx ) 来获取每个窗口,然后使用其他函数来检查它并做出决定。

如果您确切地提供了您打算如何区分,我会看看是否可以找到具体的解决方案。否则,我的建议是研究如何使用 C# 或 C++ 通过 user32.dll 完成它,然后使用 FFI 将结果转换为 Electron。

关于node.js - 从 Electron App 隐藏其他窗口/程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com