用Go控制另一个窗口

时间:2015-04-04 14:52:58

标签: go

我想知道是否有任何图书馆可以帮我控制另一个窗口。例如,如果用户运行了calc.exe,我希望我的代码移动它,调整大小,甚至删除它的框架,附加内容,idk。

现在我只知道如何使用autoit或autohotkey等脚本语言来做这件事。

1 个答案:

答案 0 :(得分:4)

是的,有几个库可以使用godoc.orggo-search.org找到。在此示例中,我使用w32w32syscall(提供了一些附加功能):

package main

import (
    "log"
    "strings"
    "syscall"

    "github.com/AllenDang/w32"
    "github.com/hnakamur/w32syscall"
)

func main() {
    err := w32syscall.EnumWindows(func(hwnd syscall.Handle, lparam uintptr) bool {
        h := w32.HWND(hwnd)
        text := w32.GetWindowText(h)
        if strings.Contains(text, "Calculator") {
            w32.MoveWindow(h, 0, 0, 200, 600, true)
        }
        return true
    }, 0)
    if err != nil {
        log.Fatalln(err)
    }
}

这两个库只是以最少的包装暴露底层的win32 API,因此您必须阅读Microsoft的corresponding documentation才能真正了解如何使用它们。