add more functions
This commit is contained in:
parent
0959dfb96a
commit
03b79c4247
17
kernel32.go
17
kernel32.go
@ -399,3 +399,20 @@ func RtlMoveMemory(Destination, Source unsafe.Pointer, Length uintptr) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetModuleHandle(lpModuleName *uint16) (HINSTANCE, error) {
|
||||||
|
kernel32, err := syscall.LoadLibrary("kernel32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(kernel32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(kernel32), "GetModuleHandleW")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
r, _, err := syscall.Syscall(proc, 1, uintptr(unsafe.Pointer(lpModuleName)), 0, 0)
|
||||||
|
if r == 0 {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return HINSTANCE(r), nil
|
||||||
|
}
|
||||||
|
|||||||
88
user32.go
88
user32.go
@ -356,7 +356,7 @@ func CreateWindowEx(dwExStyle DWORD, lpClassName, lpWindowName string, dwStyle D
|
|||||||
return HWND(r), nil
|
return HWND(r), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func DestoryWindow(hWnd HWND) (bool, error) {
|
func DestroyWindow(hWnd HWND) (bool, error) {
|
||||||
user32, err := syscall.LoadLibrary("user32.dll")
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, errors.New("Can't Load User32 API")
|
return false, errors.New("Can't Load User32 API")
|
||||||
@ -386,3 +386,89 @@ func GetMessage(lpMsg *MSG, hWnd HWND, wMsgFilterMin, wMsgFilterMax DWORD) (DWOR
|
|||||||
}
|
}
|
||||||
return DWORD(r), nil
|
return DWORD(r), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TranslateMessage(lpMsg *MSG) (bool, error) {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "TranslateMessage")
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall(proc, 1, uintptr(unsafe.Pointer(lpMsg)), 0, 0)
|
||||||
|
return r != 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func DispatchMessage(lpMsg *MSG) (LRESULT, error) {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "DispatchMessageW")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
r, _, err := syscall.Syscall(proc, 1, uintptr(unsafe.Pointer(lpMsg)), 0, 0)
|
||||||
|
return LRESULT(r), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func DefWindowProc(hWnd HWND, uMsg UINT, wParam WPARAM, lParam LPARAM) LRESULT {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "DefWindowProcW")
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall6(proc, 4, uintptr(hWnd), uintptr(uMsg), uintptr(wParam), uintptr(lParam), 0, 0)
|
||||||
|
return LRESULT(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostMessage(hWnd HWND, msg UINT, wParam WPARAM, lParam LPARAM) (bool, error) {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "PostMessageW")
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall6(proc, 4, uintptr(hWnd), uintptr(msg), uintptr(wParam), uintptr(lParam), 0, 0)
|
||||||
|
return r != 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func PostQuitMessage(nExitCode int) {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "PostQuitMessage")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
syscall.Syscall(proc, 1, uintptr(nExitCode), 0, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RegisterClassEx(lpWndClass *WNDCLASSEX) (uint16, error) {
|
||||||
|
user32, err := syscall.LoadLibrary("user32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(user32)
|
||||||
|
proc, err := syscall.GetProcAddress(syscall.Handle(user32), "RegisterClassExW")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
r, _, err := syscall.Syscall(proc, 1, uintptr(unsafe.Pointer(lpWndClass)), 0, 0)
|
||||||
|
if r == 0 {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return uint16(r), nil
|
||||||
|
}
|
||||||
|
|||||||
@ -224,7 +224,26 @@ type MSG struct {
|
|||||||
type POINT struct {
|
type POINT struct {
|
||||||
X, Y int32
|
X, Y int32
|
||||||
}
|
}
|
||||||
|
type WNDCLASSEX struct {
|
||||||
|
CbSize UINT
|
||||||
|
Style uint32
|
||||||
|
LpfnWndProc uintptr
|
||||||
|
CbClsExtra int32
|
||||||
|
CbWndExtra int32
|
||||||
|
HInstance HINSTANCE
|
||||||
|
HIcon HICON
|
||||||
|
HCursor HCURSOR
|
||||||
|
HbrBackground HBRUSH
|
||||||
|
LpszMenuName *uint16
|
||||||
|
LpszClassName *uint16
|
||||||
|
HIconSm HICON
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
WM_CLIPBOARDUPDATE DWORD = 0x031D
|
CS_HREDRAW = 0x0002
|
||||||
|
CS_VREDRAW = 0x0001
|
||||||
|
CW_USEDEFAULT = 0x80000000
|
||||||
|
WM_CLIPBOARDUPDATE = 0x031D
|
||||||
|
WM_QUIT = 0x0012
|
||||||
|
WM_DESTROY = 0x0002
|
||||||
)
|
)
|
||||||
|
|||||||
@ -4,6 +4,10 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
WM_USER UINT = 0x0400
|
||||||
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
ATOM uint16
|
ATOM uint16
|
||||||
BOOL int32
|
BOOL int32
|
||||||
@ -62,6 +66,7 @@ type (
|
|||||||
USN int64
|
USN int64
|
||||||
LARGE_INTEGER LONGLONG
|
LARGE_INTEGER LONGLONG
|
||||||
LONGLONG int64
|
LONGLONG int64
|
||||||
|
UINT uint32
|
||||||
)
|
)
|
||||||
|
|
||||||
type WTS_SESSION_INFO struct {
|
type WTS_SESSION_INFO struct {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user