我想知道是否有任何库可以帮助我控制另一个窗口。例如,如果用户正在运行calc.exe,我希望我的go代码可以移动它,调整大小,甚至删除它的框架,附加内容,idk。
现在,我只知道如何使用脚本语言(例如autoit或autohotkey或诸如此类)来做到这一点。
最佳答案
是的,可以使用godoc.org或go-search.org找到几个库。在此示例中,我使用w32和w32syscall(提供一些其他功能):
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才能真正知道如何使用它们。