用Go控制另一个窗口

用Go控制另一个窗口,go,Go,我想知道是否有任何库可以帮助我控制另一个窗口。例如,如果用户运行calc.exe,我希望我的go代码移动它,调整它的大小,甚至可能删除它的框架,将内容附加到它,idk 现在我只知道如何使用脚本语言,如autoit、autohotkey或诸如此类的语言 是的,可以使用或找到多个库。在本例中,我使用and(它提供了一些附加函数): 这两个库都只是以最小的包装方式公开了底层win32 API,因此您必须阅读Microsoft的手册才能真正了解如何使用它们。是的,使用或可以找到多个库。在本例中,我使用a

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


现在我只知道如何使用脚本语言,如autoit、autohotkey或诸如此类的语言

是的,可以使用或找到多个库。在本例中,我使用and(它提供了一些附加函数):


这两个库都只是以最小的包装方式公开了底层win32 API,因此您必须阅读Microsoft的手册才能真正了解如何使用它们。

是的,使用或可以找到多个库。在本例中,我使用and(它提供了一些附加函数):


这两个库都只是以最小的包装方式公开了底层win32 API,因此您必须阅读Microsoft的手册才能真正了解如何使用它们。

实现了win32 API,并具有您需要的所有功能。实现Win32 API并具有所需的所有功能。谢谢。我也能用w32 go包装器实现这一点吗?看起来它是在w32库中定义的:它返回0并且没有做任何不幸的事情,即使在我说帧已更改w32.SetWindowPos(h,0,0,200,600,w32.SWP_FRAMECHANGED)之后,谢谢。我是否也能通过w32 go wrappers实现这一点?看起来它是在w32库中定义的:它返回0并且没有做任何不幸的事情,即使在我说帧已更改w32.SetWindowPos(h,0,0,0,200,600,w32.SWP_FRAMECHANGED)之后
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)
    }
}