Closed wuchuguang closed 1 year ago
使用窗口工具 获取窗口句柄 对比下是否一致 有可能是子进程也拥有了句柄 比如小组件(顶部栏,关闭按钮这些) 虽然chrome只有一个句柄但是关闭按钮这些都是而外的句柄 操作窗口需要使用的是主句柄 带有Mian的 工具:https://cos.kiic.top/assets/LookHandles.exe
如果句柄一致 无法修改那就是没有权限或者被拦截 当前BUG无法复现,后期我会增加一个debug的选项打开时 当遇上修改失败不返回布尔 而是报错
我是用admin启动的node,权限是够的。我用你发的工具试一下。
进程是对的, getHandleProcessID的handler和你发的工具看到的handle不匹配。
能不能根据一个pid拿到所有window handle,然后自已做判断,再操作想要的handle
puppeteer应该是个傀儡,有子进程进行控制一个进程控制,进程/子进程之间不互通,我的建议是直接枚举系统所有窗口获取窗口 getAllWindowsHandle函数 因为这个是所有句柄并不管是不是窗口 所以需要先判断句柄过滤掉没用的 ` //只获取窗口句柄 而不是组件句柄,等信息一起返回 hmc.getAllWindowsHandle().filter(hwnd=>hwnd.isHandle)
`
const winHandleList =hmc.getAllWindowsHandle().filter(hwnd=>hwnd.isHandle);
for (let index = 0; index < winHandleList.length; index++) {
const handle = winHandleList[index];
if(handle?.title?.includes('chrome的句柄操作不了')){
handle.setTitle("问题解决")
}
}
getAllWindowsHandle 返回的是伪句柄类 已经预先封装了很多个方法绑定,
您的想法很棒 这个api我会尽快补上
好的,我获取到了对应的handle了,但用hwin.setTitle的方式,false.用HMC.setWindowTitle是可以的。
用puppeteer打开后,通过pid获取handle后,SetTitle无效,均返回false