5

感谢您的阅读和您可能有的任何意见。

语境:

  • 我从事 UI/R&D 开发(原型设计等)已有 20 多年,并且刚刚开始服务器/后端开发。
  • 我对 Go 非常陌生 - 不到 2 个月 - 并且 1) 运行了大部分 GoByExample 和 2) 在 Amazon EC2 实例上设置了一个原始的、工作的 Web 服务器。
  • 我用另一种语言创建了一个 UI,它为另一个 3rd 方应用程序提供 HUD(平视显示器)——一个产生多个窗口的游戏。(想想在多个窗口中运行的多个扑克桌。)
  • 我将 HUD 连接到我创建的 Go 客户端。
  • 由于第一语言的限制,我使用 Go 来获取操作系统信息。
  • 我想继续使用 Go,因为我真的很喜欢它。
  • 我在 Windows 7 机器上。

目标:

  • 大图:当用户移动窗口时,我希望 HUD 随之移动。
  • 为此,我需要有关 WindowText 以“游戏”开头的主窗口的信息。
  • 理想的情况是这样的:

    windows: [ { windowHwnd:hwnd, windowText:windowText, windowX:x, windowY:y, windowWidth:width, windowHeight:height },
    .
    .
    .
    { windowHwnd:hwnd, windowText:windowText, windowX:x, windowY:y, windowWidth:width, windowHeight:height } ]
    

我采取的步骤:

  • 我已经抓取并修改了 github.com/AllenDang/w32,我认为它格式化了 Go 的系统调用。
    • 当我需要来自 user32.go 的未列出函数时,我会添加它。
  • 尝试使用 GetForegroundWindow 和 GetWindowText 与结果,然后 GetWindow( hwnd, previous ) 只是演练一切
  • 通读:
    • 系统调用文档(http://golang.org/pkg/syscall/
    • 系统调用/dll_windows.go
    • 系统调用/env_windows.go
    • 系统调用/exec_windows.go
    • 系统调用/syscall.go
    • 系统调用/syscall_windows.go
    • 系统调用/syscall_windows_386.go
    • 系统调用/syscall_windows_amd86.go
    • 系统调用/syscall_windows_test.go
    • 系统调用/zsyscall_windows_386.go
    • 系统调用/zsyscall_windows_amd86.go
    • 系统调用/ztypes_windows.go
    • 系统调用/ztypes_windows_386.go
    • 系统调用/ztypes_windows_amd86.go
  • Windows 开发中心的每个潜在窗口函数
  • 搜索 StackExchange、谷歌、DuckDuckGo
  • 我可以看到有一些东西(TestEnumWindows)

问题:

  • 更好的解决方案?在我的无知中,我很容易忽略一些方法,例如:GiveGeoffreyExactlyWhatHeWants()
  • 我在正确的球场吗?
  • 这在 Go 中可行吗?
  • 正确的前进方向是什么?
  • 这是其他人需要的吗?
4

1 回答 1

9

目前尚不清楚您想要什么,但也许http://play.golang.org/p/YfGDtIuuBw会有所帮助。它使用 EnumWindows 来查找具有特定标题的窗口。

亚历克斯

于 2013-10-18T02:55:35.080 回答