I don't know the answer but if I were you, I would start from looking at 
Windows applications written in Go and see how they have done.
For instance, the package https://github.com/lxn/walk has implemented lots 
of Windows GUI stuff. It would probably provide the information you are 
looking for.

On Friday, September 2, 2016 at 8:12:19 PM UTC+8, kumargv wrote:
>
> Hello friends,
>
> i am trying to write some win api in golang ,because  these API not 
> implemented any PKG.
>
> "syscall"
>
> "github.com/contester/runlib/win32"
>
> "golang.org/x/sys/windows"
>
>
> API are code in C++
>
>
> OpenDesktop
>
>       hdesk = OpenDesktop(
>               _T("default"),     // the interactive window station 
>               0,             // no interaction with other desktop processes
>               FALSE,         // handle is not inheritable
>               READ_CONTROL | // request the rights to read and write the DACL
>               WRITE_DAC | 
>               DESKTOP_WRITEOBJECTS | 
>               DESKTOP_READOBJECTS);
>
>
>
> OpenWindowStation
>
>
>       hwinsta = OpenWindowStation(
>               _T("winsta0"),                   // the interactive window 
> station 
>               FALSE,                       // handle is not inheritable
>               READ_CONTROL | WRITE_DAC);
>
> is my implemention correct or i did some mistake.
>
>
> Now my implemented code in GOLANG
>
> func OpenWindowStation() (win32.Hwinsta, error) {
>
>
>     winst, _ := syscall.UTF16FromString("winsta0")
>
>     //    r1, _, e1 := syscall.Syscall(procOpenWindowStation.Addr(), 
> uintptr(unsafe.Pointer(&winst[0])), uintptr(0), uintptr(READ_CONTROL), 
> uintptr(WRITE_DAC))
>
>     r1, _, e1 := procOpenWindowStation.Call(
>
>         uintptr(unsafe.Pointer(&winst[0])),
>
>         uintptr(0),
>
>         uintptr(READ_CONTROL),
>
>         uintptr(WRITE_DAC))
>
>
>     if int(r1) == 0 {
>
>         return win32.Hwinsta(r1), os.NewSyscallError("OpenWindowStation", e1)
>
>     }
>
>     return win32.Hwinsta(r1), nil
>
> }
>
> func OpenDesktop(lpszDesktop *uint16, dwFlags uint32, fInherit uint32) 
> (win32.Hdesk, error) {
>
>
>     r1, _, e1 := procOpenDesktop.Call(
>
>         uintptr(unsafe.Pointer(lpszDesktop)),
>
>         uintptr(dwFlags),
>
>         uintptr(READ_CONTROL),
>
>         uintptr(WRITE_DAC),
>
>         uintptr(DESKTOP_WRITEOBJECTS),
>
>         uintptr(DESKTOP_READOBJECTS),
>
>         uintptr(fInherit))
>
>
>     if int(r1) == 0 {
>
>         return win32.Hdesk(r1), os.NewSyscallError("OpenWindowStation", e1)
>
>     }
>
>     return win32.Hdesk(r1), nil
>
> }
>
>
> My another question is when to use which function listed below like 
> (syscal.syscall,logonProc.Addr(),logonProc.call())
>
> But i am not able to understand some time 
>
> >>>>>>>syscall.Syscall6(logonProc.Addr(), 6, uintptr(unsafe.Pointer(&pu[0])),
>
>         uintptr(unsafe.Pointer(&domain[0])),
>
>         uintptr(unsafe.Pointer(&pp[0])),
>
>         LOGON32_LOGON_NETWORK,
>
>         LOGON32_PROVIDER_DEFAULT,
>
>         uintptr(unsafe.Pointer(&token)))
>
>
> >>>>>>>>logonProc.Call()
>
> >>>>>>>>syscall.Syscall()
>
> >>>>>>>>syscall.Syscall9()
>
>
>
> Please suggest from where do i get this info.
>
> Thanks
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to