2016-05-23 10 views
1

私は、WindowsのみでLinuxとOSXのサポートは必要ない、特定の開いているウィンドウを隠すためにNPMを検索してきました。例えば、私はメモ帳ウィンドウを隠すことができるようにしたいと思いますが、複数のメモ帳ウィンドウを開いていれば、それらをすべて非表示にしたくないので、特定のものを隠すだけです。私はそれをタスクバーから隠したいだけで、不透明度を不可視に設定するのではありません。Electron Appから他のウィンドウやプログラムを隠す

この機能を備えたNPMパッケージは誰でも知っていますか、それとも可能ですか?

私はC#でこれの等距離は、user32.dllのから

感謝をSHOWWINDOWされるだろうと考えています。

答えて

2

すぐに使用できる解決策を見つけることができませんでしたが、問題の答えにはヒントがあります。 user32.dllは、node-ffiを使用してnode.js/electronからアクセスできます。

node-ffiをインストールするには、node-gypとそのすべての依存関係をWindowsにインストールする必要があります。 https://github.com/nodejs/node-gyp#installation

次を参照してください、あなたは、次の操作を行う必要があります。最後の1は電子のネイティブバイナリを再構築することである

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

こと。

あなたの電子アプリケーションに次のコードの塊を入れて:

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); 

起動メモ帳を、ウィンドウのタイトルが「無題 - メモ帳」であることを確認してください。電子アプリを起動すると、ウィンドウは非表示になりますが、プロセスはそのまま残ります。あなたは非表示にしたいウィンドウを識別するためにいくつかの方法が必要になります...あなたの質問の後半については

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に変換することです。

+0

ああ、あなたは本当のMvPです。私は十分にあなたに感謝することはできません、あなたは義務の上に、そして義務を超えて、世界中の良さを広げるあなたのような人々を傷つけません。ありがとうございます。とても感謝しています。 – Ducky

+0

親切な言葉ありがとう! :-) FFIがElectron社で正しく動作するには、しばらく時間がかかりました。それは言われています、もしあなたが何かトラブルがあれば、私に知らせてください。 –

+0

ねえ、私はこれをUser32.dllからEnumWindowsを使用するためにhttp://stackoverflow.com/a/10819641/3055031見つけました。明日、私はそれらをNodeで動作させる方法を頭に入れて試してみるつもりです。ちょうど私は "WNDENUMPROC"をどのような変数型にマッピングするのかはわかりません。もう一度あなたの助けをありがとう、それは非常に感謝しています。 – Ducky

関連する問題