diff options
Diffstat (limited to 'common.go')
| -rw-r--r-- | common.go | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -3,8 +3,11 @@ package main import ( "syscall" + "unsafe" ) +// TODO filter out commctrl.h stuff because the combobox stuff has values that differ between windows versions and bleh + var ( user32 = syscall.NewLazyDLL("user32.dll") kernel32 = syscall.NewLazyDLL("kernel32.dll") @@ -37,7 +40,30 @@ func (w WPARAM) HIWORD() uint16 { return uint16((w >> 16) & 0xFFFF) } +func LPARAMFromString(str string) LPARAM { + return LPARAM(unsafe.Pointer(syscall.StringToUTF16Ptr(str))) +} + // microsoft's header files do this func MAKEINTRESOURCE(what uint16) uintptr { return uintptr(what) } + +// TODO adorn error messages with which step failed? +func getText(hwnd HWND) (text string, err error) { + var tc []uint16 + + length, err := SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0) + if err != nil { + return "", err + } + tc = make([]uint16, length + 1) + _, err = SendMessage(hwnd, + WM_GETTEXT, + WPARAM(length + 1), + LPARAM(unsafe.Pointer(&tc[0]))) + if err != nil { + return "", err + } + return syscall.UTF16ToString(tc), nil +} |
