WindowsでNodeJSアプリケーションを実行しているときに、ユーザーが特定のアクションを実行したときに、実行中のWindowsアプリケーションにフォーカスを切り替えて表示する必要があります。私はWindows API呼び出しを行うためにnode-ffiパッケージを使用していますが、一貫してフォーカスを切り替えることができませんでした。ここに私が使用しているコードがあります。それが正常に実行されている電卓アプリのHWNDを取得しますが、そのHWNDにフォーカスを切り替えしようとすると、それだけで、時には作品:Node-JSからWindowsアプリケーションにフォーカスを設定
var ffi = require('ffi');
var intPtr = ref.refType('long');
var user32 = new ffi.Library('user32', {
'FindWindowA': ['long', [ 'string', 'string']],
'SetForegroundWindow': ['bool', ['long']],
'BringWindowToTop': ['bool', ['long']],
});
var winToSetOnTop = user32.FindWindowA(null,"calculator")
var res = user32.ShowWindow(winToSetOnTop, 9);
res = user32.SetForegroundWindow(winToSetOnTop);
res = user32.BringWindowToTop(winToSetOnTop);
このコマンドの組み合わせが最も一貫し、私が試してみましたものの動作しているようですが、それは常に動作しません。フォーカスを切り替えるウィンドウが最小化されている場合、ウィンドウは常にトップにポップアップします。ウィンドウが最小化されずに別のウィンドウのすぐ後ろにある場合、断続的にしか表示されません。私は、たとえそれが現在最小化されていても、実行中のウィンドウアプリケーションを常にオーダーの先頭に移動させる方法を確実にはわかりません。
あなたは両方とも、最小化されたウィンドウでは常に機能し、一貫して動作しないと言います。どちらが本当ですか? – IInspectable
エラーをチェックしません。 SetForegroundWindowのドキュメント、特に条件のリストを読んでください。 –
@IInspectable常に最小化されたウィンドウを上部に表示します。ウィンドウが最小化されておらず、別のウィンドウの後ろにある場合、ウィンドウは断続的に上に移動します。 – KeithTheBiped