Comments (2)
package main
import (
"C"
"fmt"
"syscall"
"unsafe"
)
var (
kernel32 = syscall.NewLazyDLL("kernel32.dll")
createThread = kernel32.NewProc("CreateThread")
waitForSingleObject = kernel32.NewProc("WaitForSingleObject")
getExitCodeThread = kernel32.NewProc("GetExitCodeThread")
)
func ThreadFunc(P uintptr) int64 {
fmt.Printf("Hello from thread\n")
return 0xAA // or your favorite number
}
func CreateThread(attrib, stackSize, startAddress, parameter, createFlag uintptr,
threadID *uint) uintptr {
hand, _, _ := createThread.Call(
attrib,
stackSize,
startAddress,
parameter,
createFlag,
uintptr(unsafe.Pointer(threadID)))
return hand
}
func WaitForSingleObject(handle, milliSeconds uintptr) uintptr {
value, _, _ := waitForSingleObject.Call(
handle,
milliSeconds)
return value
}
func GetExitCodeThread(handle uintptr, exitCode *uint) bool {
value, _, _ := getExitCodeThread.Call(
handle,
uintptr(unsafe.Pointer(exitCode)))
return value != 0
}
func main() {
var threadId uint = 0
funcAddr := syscall.NewCallback(ThreadFunc)
h := CreateThread(0, 0, funcAddr, 0, 0, &threadId)
if h != 0 {
fmt.Printf("threadId: %d h: %d\n", threadId, h)
waitResult := WaitForSingleObject(h, 1000)
if waitResult == 0 {
var exitCode uint = 0
GetExitCodeThread(h, &exitCode)
fmt.Printf("ThreadExitCode: %d\n", exitCode)
}
}
}
from w32.
This has been addressed, I assume?
from w32.
Related Issues (20)
- Unable to install after 1 May merges HOT 1
- Could not determine kind of name for C.DWORD and C.INPUT HOT 7
- mobiles HOT 2
- why this package need cgo?
- add RedrawWindow and RDW_FRAME
- Does this package need panic when error is return or just return the error? HOT 1
- Cannot run in windows7 64bit。why?How can fix it? HOT 4
- I've gotten an error "0x3b02 User stopped resource enumeration." while I used the ExtractIcon HOT 1
- failed install on Windows 10 Home 64 bit HOT 5
- user32.go:1039:10: cannot use flag (type uint32) as type uintptr in argument to procRedrawWindow.Call HOT 7
- restart gracefully
- cannot use flag (type uint32) as type uintptr in argument to procRedrawWindow.Call HOT 2
- Unable to Use for cross compiling HOT 1
- GPL HOT 1
- I Tried to pull the package and i got a error HOT 1
- how to check current user language (locale)
- how do i use go to call DLL
- [The solution] user32.go:1039:10: cannot use flag (type uint32) as type uintptr in argument to procRedrawWindow.Call HOT 5
- Is there an example of the call of readeventlog? Thank you
- Callback example
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from w32.