Node.js 获取节点js中的浏览器选项卡标题

Node.js 获取节点js中的浏览器选项卡标题,node.js,winapi,process,npm,Node.js,Winapi,Process,Npm,我试图在浏览器中获取选项卡的标题,例如在我的节点应用程序中的谷歌浏览器。类似于Win32 API中的GetWindowText()。如果可能,它需要适用于多个浏览器 目前,在Node中,我可以检索当前进程的列表,但我找不到任何可以提供该进程详细信息的内容,相当于打开Task Manager并单击Google Chrome进程上的展开箭头,它会为您提供选项卡的名称 我尝试了npm的一些节点模块,但是它们似乎没有返回我需要的信息。我在这里也看到了类似的问题,但我没有发现任何与我在这里提出的问题类似的

我试图在浏览器中获取选项卡的标题,例如在我的节点应用程序中的谷歌浏览器。类似于Win32 API中的GetWindowText()。如果可能,它需要适用于多个浏览器

目前,在Node中,我可以检索当前进程的列表,但我找不到任何可以提供该进程详细信息的内容,相当于打开Task Manager并单击Google Chrome进程上的展开箭头,它会为您提供选项卡的名称

我尝试了npm的一些节点模块,但是它们似乎没有返回我需要的信息。我在这里也看到了类似的问题,但我没有发现任何与我在这里提出的问题类似的问题

如果有人能给我指出正确的方向我会很感激


谢谢

您应该在此处查看Chrome远程调试协议:

具体而言,本部分:

在这个场景中,您可以将开发人员工具前端替换为 您自己的实现。而不是导航到 ,您的应用程序可以发现可用页面 请求:

以及获取包含信息的JSON对象 关于可检查页面以及您需要的WebSocket地址 可以使用,以便开始检测它们

有几个node.js库可以使用该协议


这些可能会对您有所帮助。

我通过在应用程序中使用
ffi
ref
节点模块解决了我的问题,这些模块允许我使用user32.dll或我想要创建的任何其他.dll。然后,我从中找到了这段代码,我将其更改为JavaScript,为我实现了这一点

var voidPtr = ref.refType(ref.types.void);
var stringPtr = ref.refType(ref.types.CString);

var bindings = {
    EnumWindows: ['bool', [voidPtr, 'int32']],
    GetWindowTextA: ['long', ['long', stringPtr, 'long']]
};

var user32 = ffi.Library('user32', bindings);
var windowProc = ffi.Callback('bool', ['long', 'int32'], function (hwnd, lParam) {
    var buf = new Buffer(255);
    var ret = user32.GetWindowTextA(hwnd, buf, 255);
    var name = ref.readCString(buf, 0);     
    console.log(name);   
    return true;      
});

var checkTitles = user32.EnumWindows(windowProc, 0);

然而,这只适用于Windows,我还没有在OSX上找到(正确地寻找)解决方案。希望这能帮助其他人

我刚刚试过,这确实奏效了。。。然而,我正在寻找一些更通用的东西,它不需要启动Chrome或任何其他带有参数的浏览器。对不起,我可能应该在问题中说明这一点。我想我要看看Win32 API-GetWindowText()并在Node中尝试一下。谢谢,我可以获取浏览器实例并更新页面上的某些字段吗?