小编Kei*_*ped的帖子

从Node-JS将焦点设置为Windows应用程序

我有一个在Windows上运行的NodeJS应用程序,当用户执行某个操作时,需要显示并将焦点切换到正在运行的Windows应用程序.我一直在使用node-ffi包来进行Windows API调用,但却无法使其一致地切换焦点.这是我正在使用的代码.它成功获取正在运行的Calculator应用程序的HWND,但随后尝试将焦点切换到该HWND,它只在以下情况下有效:

    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);   
Run Code Online (Sandbox Code Playgroud)

这些命令的组合似乎与我尝试过的命令最为一致,但它并不是一直有效.如果我想要将焦点切换到的窗口最小化,它将始终弹出到顶部.如果窗口没有最小化,但只是在另一个窗口后面,它将只是间歇性地显示.我不确定如何始终如一地使正在运行的Windows应用程序始终移动到订单的顶部,即使它当前已最小化.

javascript winapi node.js node-ffi

10
推荐指数
1
解决办法
3064
查看次数

标签 统计

javascript ×1

node-ffi ×1

node.js ×1

winapi ×1