diff --git a/kernel32.go b/kernel32.go index 2fa5644..72647cc 100644 --- a/kernel32.go +++ b/kernel32.go @@ -73,7 +73,8 @@ var ( setLastError uintptr systemTimeToFileTime uintptr getProfileString uintptr - setConsoleTitle uintptr + setConsoleTitle uintptr + getTickCount uintptr ) type ( @@ -135,6 +136,8 @@ func init() { systemTimeToFileTime = MustGetProcAddress(libkernel32, "SystemTimeToFileTime") setConsoleTitle = MustGetProcAddress(libkernel32, "SetConsoleTitleW") + getTickCount = MustGetProcAddress(libkernel32, "GetTickCount") + } func CloseHandle(hObject HANDLE) bool { @@ -308,4 +311,12 @@ func SetConsoleTitle(title string) int { //fmt.Println("callErr", callErr) } return int(ret) -} \ No newline at end of file +} + +func GetTickCount() int64 { + ret, _, _ := syscall.Syscall(getTickCount, 0, + 0, + 0, + 0) + return int64(ret) +} diff --git a/user32.go b/user32.go index 8b1a84a..3c57864 100644 --- a/user32.go +++ b/user32.go @@ -1602,6 +1602,7 @@ var ( translateMessage uintptr updateWindow uintptr windowFromPoint uintptr + sendMessageTimeout uintptr ) func init() { @@ -1741,6 +1742,7 @@ func init() { translateMessage = MustGetProcAddress(libuser32, "TranslateMessage") updateWindow = MustGetProcAddress(libuser32, "UpdateWindow") windowFromPoint = MustGetProcAddress(libuser32, "WindowFromPoint") + sendMessageTimeout = MustGetProcAddress(libuser32, "SendMessageTimeoutW") } func AdjustWindowRect(lpRect *RECT, dwStyle uint32, bMenu bool) bool { @@ -2680,6 +2682,21 @@ func SendMessage(hWnd HWND, msg uint32, wParam, lParam uintptr) uintptr { return ret } +// SendMessageTimeout +func SendMessageTimeout(hWnd HWND, msg uint32, wParam, lParam uintptr, fuFlags, uTimeout uint32, lpdwResult uintptr) bool { + ret, _, _ := syscall.Syscall9(sendMessageTimeout, 7, + uintptr(hWnd), + uintptr(msg), + wParam, + lParam, + uintptr(fuFlags), + uintptr(uTimeout), + lpdwResult, + 0, + 0) + + return ret == 0 +} func SetActiveWindow(hWnd HWND) HWND { ret, _, _ := syscall.Syscall(setActiveWindow, 1, uintptr(hWnd),