first commit
commit
1c10d6c89f
@ -0,0 +1,88 @@
|
|||||||
|
package win32api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"strconv"
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ShellExecute(hwnd HWND, lpOperation, lpFile, lpParameters, lpDirectory string, nShowCmd int) error {
|
||||||
|
shell32, err := syscall.LoadLibrary("shell32.dll")
|
||||||
|
var op, param, directory uintptr
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load Shell32 API")
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(shell32)
|
||||||
|
ShellExecute, err := syscall.GetProcAddress(syscall.Handle(shell32), "ShellExecuteW")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load ShellExecute API")
|
||||||
|
}
|
||||||
|
if len(lpOperation) != 0 {
|
||||||
|
op = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpOperation)))
|
||||||
|
}
|
||||||
|
if len(lpParameters) != 0 {
|
||||||
|
param = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpParameters)))
|
||||||
|
}
|
||||||
|
if len(lpDirectory) != 0 {
|
||||||
|
directory = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpDirectory)))
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall6(uintptr(ShellExecute), 6,
|
||||||
|
uintptr(hwnd),
|
||||||
|
op,
|
||||||
|
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpFile))),
|
||||||
|
param,
|
||||||
|
directory,
|
||||||
|
uintptr(nShowCmd))
|
||||||
|
if r < 32 {
|
||||||
|
return errors.New("ERROR:" + strconv.Itoa(int(r)))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
func ShellExecuteEX2(hwnd HWND, lpVerb, lpFile, lpParameters, lpDirectory string, nShow int) error {
|
||||||
|
var newcmd SHELLEXECUTEINFOW
|
||||||
|
newcmd.cbSize = DWORD(unsafe.Sizeof(newcmd))
|
||||||
|
newcmd.hwnd = hwnd
|
||||||
|
newcmd.lpVerb = lpVerb
|
||||||
|
newcmd.lpFile = lpFile
|
||||||
|
newcmd.lpParameters = lpParameters
|
||||||
|
newcmd.lpDirectory = lpDirectory
|
||||||
|
newcmd.nShow = nShow
|
||||||
|
shell32, err := syscall.LoadLibrary("shell32.dll")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load Shell32 API")
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(shell32)
|
||||||
|
ShellExecuteEx, err := syscall.GetProcAddress(syscall.Handle(shell32), "ShellExecuteExW")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load ShellExecuteEx API")
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall6(ShellExecuteEx, 1, uintptr(unsafe.Pointer(&newcmd)), 0, 0, 0, 0, 0)
|
||||||
|
fmt.Println(strconv.Itoa(int(r)))
|
||||||
|
fmt.Println(strconv.Itoa(int(newcmd.hInstApp)))
|
||||||
|
if r != 0 {
|
||||||
|
return errors.New("Error Recured")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
func ShellExecuteEx(muzika SHELLEXECUTEINFOW) error {
|
||||||
|
shell32, err := syscall.LoadLibrary("shell32.dll")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load Shell32 API")
|
||||||
|
}
|
||||||
|
defer syscall.FreeLibrary(shell32)
|
||||||
|
ShellExecuteEx, err := syscall.GetProcAddress(syscall.Handle(shell32), "ShellExecuteExW")
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("Can't Load ShellExecuteEx API")
|
||||||
|
}
|
||||||
|
r, _, _ := syscall.Syscall6(ShellExecuteEx, 1, uintptr(unsafe.Pointer(&muzika)), 0, 0, 0, 0, 0)
|
||||||
|
if r != 0 {
|
||||||
|
return errors.New("Error Recured")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package win32api
|
||||||
|
|
||||||
|
type SHELLEXECUTEINFOW struct {
|
||||||
|
cbSize DWORD
|
||||||
|
fMask ULONG
|
||||||
|
hwnd HWND
|
||||||
|
lpVerb string
|
||||||
|
lpFile string
|
||||||
|
lpParameters string
|
||||||
|
lpDirectory string
|
||||||
|
nShow int
|
||||||
|
hInstApp HINSTANCE
|
||||||
|
lpIDList LPVOID
|
||||||
|
lpClass string
|
||||||
|
hkeyClass HKEY
|
||||||
|
dwHotKey DWORD
|
||||||
|
union UNION
|
||||||
|
hProcess HANDLE
|
||||||
|
}
|
||||||
|
|
||||||
|
type UNION struct {
|
||||||
|
hIcon HANDLE
|
||||||
|
hMonitor HANDLE
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package win32api
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
type (
|
||||||
|
ATOM uint16
|
||||||
|
BOOL int32
|
||||||
|
COLORREF uint32
|
||||||
|
DWM_FRAME_COUNT uint64
|
||||||
|
DWORD uint32
|
||||||
|
HACCEL HANDLE
|
||||||
|
HANDLE uintptr
|
||||||
|
HBITMAP HANDLE
|
||||||
|
HBRUSH HANDLE
|
||||||
|
HCURSOR HANDLE
|
||||||
|
HDC HANDLE
|
||||||
|
HDROP HANDLE
|
||||||
|
HDWP HANDLE
|
||||||
|
HENHMETAFILE HANDLE
|
||||||
|
HFONT HANDLE
|
||||||
|
HGDIOBJ HANDLE
|
||||||
|
HGLOBAL HANDLE
|
||||||
|
HGLRC HANDLE
|
||||||
|
HHOOK HANDLE
|
||||||
|
HICON HANDLE
|
||||||
|
HIMAGELIST HANDLE
|
||||||
|
HINSTANCE HANDLE
|
||||||
|
HKEY HANDLE
|
||||||
|
HKL HANDLE
|
||||||
|
HMENU HANDLE
|
||||||
|
HMODULE HANDLE
|
||||||
|
HMONITOR HANDLE
|
||||||
|
HPEN HANDLE
|
||||||
|
HRESULT int32
|
||||||
|
HRGN HANDLE
|
||||||
|
HRSRC HANDLE
|
||||||
|
HTHUMBNAIL HANDLE
|
||||||
|
HWND HANDLE
|
||||||
|
LPARAM uintptr
|
||||||
|
LPCVOID unsafe.Pointer
|
||||||
|
LPVOID unsafe.Pointer
|
||||||
|
LRESULT uintptr
|
||||||
|
PVOID unsafe.Pointer
|
||||||
|
QPC_TIME uint64
|
||||||
|
ULONG uint32
|
||||||
|
ULONG_PTR uintptr
|
||||||
|
WPARAM uintptr
|
||||||
|
TRACEHANDLE uintptr
|
||||||
|
)
|
Loading…
Reference in New Issue