我想知道是否有任何图书馆可以帮我控制另一个窗口。例如,如果用户运行了calc.exe,我希望我的代码移动它,调整大小,甚至删除它的框架,附加内容,idk。
现在我只知道如何使用autoit或autohotkey等脚本语言来做这件事。
答案 0 :(得分:4)
是的,有几个库可以使用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才能真正了解如何使用它们。