Windows'da çalışan ve kullanıcının belirli bir eylemi gerçekleştirdiğinde çalışan bir Windows uygulamasına geçmesi gereken bir NodeJS uygulamasına sahibim. Windows API çağrılarını yapmak için node-ffi paketini kullanıyorum ancak sürekli olarak odağı değiştiremedim. İşte kullanıyorum kod. Başarıyla çalışan bir Hesaplama app HWND alır, ama o HWND odağı geçmek için çalışır ve sadece bazen çalışır:Odağı Windows uygulamasına ayarlama Node-JS
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);
komutların Bu kombinasyon en tutarlı ben denedim olanlar iş gibi görünüyor
ama her zaman işe yaramıyor. Odağı değiştirmek istediğim pencere en aza indirilirse, her zaman en üste gelecek. Pencere küçültülmemişse, ancak başka bir pencerenin arkasındaysa, yalnızca aralıklı olarak gösterilecektir. Şu anda küçültülmüş olsa bile, her zaman siparişin en üstüne geçmek için çalışan bir windows uygulaması almak için tutarlı bir şekilde emin değilim.
Her ikisini de söylerseniz, her zaman, sürekli olarak çalışmadığı gibi, en aza indirilmiş pencereler için de çalışır. Hangisi doğru? – IInspectable
Hataları kontrol etmiyorsunuz. SetForegroundWindow için dokümanları özellikle koşulların listesini okuyun. –
@IInspectable Her zaman en aza indirgenmiş bir pencereyi en üste getirecektir. Bir pencere simge durumuna küçültülmez, ancak yalnızca başka bir pencerenin arkasındaysa, yalnızca aralıklı olarak üst kısma getirilir. – KeithTheBiped