语境:

  • 我是一个UI/R & d DEV(成型等)超过20年,刚开始的服务器/后端开发。
  • 我对Go非常陌生 - 不到2个月 - 并且1)遍历GoByExample的大部分内容,并且2)在Amazon EC2实例上设置一个原始的正常运行的Web服务器。
  • 我创建了另一种语言的用户界面,为另一个第三方应用程序提供HUD(平视显示器) - 这是一款产生多个窗口的游戏。 (想想在多个窗口中运行多个扑克桌。)
  • 我将HUD连接到了我创建的Go客户端。
  • 由于第一语言的限制,我使用Go来获取操作系统信息。
  • 我想继续使用Go,因为我非常喜欢它。
  • 我在Windows 7机器上。

目标(S):

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,以前的),只是演练一切
  • 通读:
    • 系统调用/ dll_windows.go
    • syscall/env_windows.go
    • syscall/exec_windows.go
    • syscall/syscall.go
    • 系统调用/ syscall_windows.go
    • 系统调用/ syscall_windows_386.go
    • 系统调用/ syscall_windows_amd86.go
    • 系统调用/ syscall_windows_test.go
    • 系统调用/ zsyscall_windows_386.go
    • 系统调用/ zsyscall_windows_amd86。去
    • 系统调用/ ztypes_windows.go
    • 系统调用/ ztypes_windows_386.go
    • 系统调用/ ztypes_windows_amd86.go
  • 在Windows开发人员中心的每一个潜在的窗函数
  • 搜索StackExchange,谷歌,DuckDuckGo
  • 我可以看到有什么东西(TestEnumWindows)
    • 虽然这个功能不会syscall_windows_test.go

问题存在:

  • 更好的解决方案吗?在我的无知中,我可以很容易地忽略一些方法,如:GiveGeoffreyExactlyWhatHeWants()
  • 我是否在正确的球场?
  • 这在Go中可行吗?
  • 什么是正确的方向?
  • 这是别人需要的东西吗?

2013-10-17 Geoffrey

+0

正想发布另一个链接到https://code.google.com/p/go-wiki/wiki/WindowsDLLs我希望有答案,但亚历克斯可能会指出我在正确的方向! –