go - 检查进程是否有窗口

标签 go window exec topmost

在我的Go代码中,我正在启动一个外部GUI应用程序(Firefox),并试图使其成为前窗口(最顶部的窗口)。尝试robotgo后,我发现它不起作用,因为当我调用ActivePID时,该窗口仍未加载,因此没有将robotgo设置为最高窗口的窗口。

如何检测Firefox何时加载了GUI? (以跨平台方式)

cmd := exec.Command("firefox")
cmd.Start()
robotgo.ActivePID(int32(cmd.Process.Pid))
cmd.Wait()

最佳答案

如果有人也遇到这个问题,我发现robotgo有一个名为robotgo.GetPID的API,它获取当前 Activity 窗口的进程ID!

这意味着我们可以反复检查robotgo.GetPID是否返回我们的目标进程ID:

for int32(processID) != robotgo.GetPID() {
    robotgo.ActivePID(int32(processID))
}

关于go - 检查进程是否有窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581937/

相关文章:

php - 并行执行多个 PHP 脚本,并在完成时收到通知

go - 如何用httprouter写测试

linux - 如何使用 Ada 代码关闭图形窗口/小部件?

我们可以在 fork() C 调用的进程之间切换吗,比如切换播放器

javascript - 为什么 jquery 源代码不直接将其传递给其 IIFE 的第一个参数?

javascript - 如何在打开的窗口关闭后触发 React 中的事件

Windows 上的 Java Runtime.getRuntime().exec 错误

go - 互斥锁如何与单例一起使用?

go - slice 指向 slice 的指针

go - 这些功能之间有什么区别?