Skip to content

Instantly share code, notes, and snippets.

@milo2012
Created January 27, 2023 19:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save milo2012/9bb483577303a2965cdfd5df19d9898f to your computer and use it in GitHub Desktop.
Save milo2012/9bb483577303a2965cdfd5df19d9898f to your computer and use it in GitHub Desktop.
sendKeys.go
package main
import (
//"flag"
"log"
"fmt"
"strings"
"time"
"github.com/stephen-fox/user32util"
)
var timeout time.Duration = 1
func checkErr(err error, args ...string) {
if err != nil {
fmt.Printf("Error: %q", err.Error())
}
}
func sendKeys(cmd string){
user32, err := user32util.LoadUser32DLL()
if err != nil {
log.Fatalf("failed to load user32.dll - %s", err.Error())
}
command := strings.ToUpper(cmd)
for _, ch := range command {
err := user32util.SendKeydbInput(user32util.KeybdInput{WVK: uint16(ch),}, user32)
checkErr(err)
}
time.Sleep(timeout * time.Second)
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x0A,}, user32)
checkErr(err)
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x0D,}, user32)
checkErr(err)
time.Sleep(timeout * time.Second)
}
func windowsR(){
user32, err := user32util.LoadUser32DLL()
if err != nil {
log.Fatalf("failed to load user32.dll - %s", err.Error())
}
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x5B,}, user32)
checkErr(err)
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x52,}, user32)
checkErr(err)
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x5B, DwFlags: 0x0002}, user32)
checkErr(err)
time.Sleep(timeout * time.Second)
}
func windowsCmdEsc(){
user32, err := user32util.LoadUser32DLL()
if err != nil {
log.Fatalf("failed to load user32.dll - %s", err.Error())
}
//CTRL+ESC
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x11,}, user32)
checkErr(err)
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x1B,}, user32)
checkErr(err)
//release windows key
err = user32util.SendKeydbInput(user32util.KeybdInput{WVK: 0x11, DwFlags: 0x0002}, user32)
checkErr(err)
time.Sleep(timeout * time.Second)
}
func main() {
//https://raw.githubusercontent.com/stephen-fox/user32util/v0.3.1/examples/sendinput/main.go
//flag.Parse()
user32, err := user32util.LoadUser32DLL()
if err != nil {
log.Fatalf("failed to load user32.dll - %s", err.Error())
}
_ = user32
sendKeys("ipconfig")
//windowsCmdEsc()
windowsR()
sendKeys("cmd")
sendKeys("ipconfig")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment