github.com/tonto/cli@v0.0.0-20180104210444-aec958fa47db/run_windows.go (about) 1 // +build windows 2 3 package main 4 5 import ( 6 "io" 7 "os" 8 "syscall" 9 "unsafe" 10 ) 11 12 func stdin() io.Reader { 13 if isTerminal(int(os.Stdin.Fd())) { 14 return nil 15 } 16 return os.Stdin 17 } 18 19 func isTerminal(fd int) bool { 20 kernel32 := syscall.NewLazyDLL("kernel32.dll") 21 procGetConsoleMode := kernel32.NewProc("GetConsoleMode") 22 var st uint32 23 r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0) 24 return r != 0 && e == 0 25 }