Go获取Windows下的窗口
Go调用Windows下的DLL
package main import ( "fmt" "syscall" "unsafe" ) var ( kernel32DLL = syscall.MustLoadDLL("User32.dll") procEnumWindows = kernel32DLL.MustFindProc("EnumWindows") ) func StringToCharPtr(str string) *uint8 { chars := append([]byte(str), 0) return &chars[0] } // 回调函数,用于EnumWindows中的回调函数,第一个参数是hWnd,第二个是自定义穿的参数 func AddElementFunc(hWnd syscall.Handle, hWndList *[]syscall.Handle) uintptr { *hWndList = append(*hWndList, hWnd) return 1 } // 获取桌面下的所有窗口句柄,包括没有Windows标题的或者是窗口的。 func GetDesktopWindowHWND() { var hWndList []syscall.Handle hL := &hWndList r1, _, err := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(syscall.NewCallback(AddElementFunc)), uintptr(unsafe.Pointer(hL)), 0) if err != 0 { fmt.Println(err) } fmt.Println(r1) fmt.Println(hWndList) } func main() { GetDesktopWindowHWND() }
关于syscall.Syscall
中,第一个参数是DLL加载进来函数的指针,第二个是参数的个数,后边三个是参数,没有的话用0
代替,其他几个同理。
作者: 咕咚!
出处: https://www.cnblogs.com/linga/
关于作者:专注虚拟化,运维开发,RPA,Rust,Go,Python!
本文版权归作者和博客园共有,禁止*.csdn.net转载,禁止以盈利为目的的转载,转载文章,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(oldsixa@163.com)咨询.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步