来自:zip11 > 馆藏分类
配色: 字号:
golang弹出消息框
2022-10-23 | 阅:  转:  |  分享 
  
//?golang弹出?消息框?,?加载?win?dllpackage?mainimport?(?"syscall"?"time"?"uns
afe")//?------?msgbox?start------func?IntPtr(n?int)?uintptr?{?//u
intptr是golang的内置类型,是能存储指针的整型?return?uintptr(n)}func?StrPtr(s?stri
ng)?uintptr?{?//unsafe.Pointer是特别定义的一种指针类型(译注:类似C语言中的void类型的指针),?
//它可以包含任意类型变量的地址。当然,我们不可以直接通过p来获取unsafe.Pointer指针指向的真实变量的值,?//因为
我们并不知道变量的具体类型?return?uintptr(unsafe.Pointer(syscall.StringToUTF16
Ptr(s)))}func?ShowMessage2(tittle,?text?string)?{?//立即加载DLL?user3
2dll,?_?:=?syscall.LoadLibrary("user32.dll")?//懒加载方式加载DLL?user32?
:=?syscall.NewLazyDLL("user32.dll")?MessageBoxW?:=?user32.NewProc
("MessageBoxW")?MessageBoxW.Call(IntPtr(0),?StrPtr(text),?StrPtr(
tittle),?IntPtr(0))?//不再需要使用DLL里的函数之后可以卸载DLL?defer?syscall.FreeLi
brary(user32dll)}//?---?msgbox?end?------func?main()?{?go?func()?
{?for?{?ShowMessage2("遇到障碍物!",?"第1列")?time.Sleep(3??time.Second)
?}?}()?select?{}}
献花(0)
+1
(本文系zip11首藏)