目的
Goを使ってWindows端末のデスクトップ壁紙を変更してみます。
DLLの読み込みと実行をGoで試してみたかったのでやってみました。
壁紙の変更方法
Windowsの場合、壁紙変更はuser32.dll
のSystemParametersInfo
を呼び出すことで変更できます。また、Goはsyscall.LoadDLL
でDLLをロードし、DLL.FindProc
でDLL内のプロシージャを取得、Proc.Call
で実行できます。
package main
import (
"syscall"
"unsafe"
)
func main() {
user32, _ := syscall.LoadDLL("user32.dll")
defer user32.Release()
systemParametersInfoW, _ := user32.FindProc("SystemParametersInfoW")
path, _ := syscall.UTF16PtrFromString(`C:\Users\v\Pictures\example.png`)
systemParametersInfoW.Call(0x0014, 0, uintptr(unsafe.Pointer(path)), 0x02)
}
参考