如何在 Go 中使用 alert() 来显示消息框
How to alert() in Go to show messagebox
在javascript中,如果我们想在浏览器中显示带有自定义消息的弹出消息框,我们可以使用alert("message")
函数。
如何在Go
中完成?
我做了一个非常简单的包来做到这一点。
还有其他软件包(如 sqweek's)具有更多功能,但我只是在寻找一些简单的启动错误。
用go get -u tawesoft.co.uk/go
下载
然后像这样使用它:
package main
import "tawesoft.co.uk/go/dialog"
func main() {
dialog.Alert("Message")
dialog.Alert("There are %d lights", 4)
}
注意事项:
- 目前仅支持windows和linux(contribute)
更新
我看到一些人在编写服务器端代码时误用了它。此消息框只会出现在计算机运行 Go 程序 上。如果您正在显示 HTML 页面并希望在用户的计算机上显示一个消息框,则需要在用户正在访问的页面上输出 JavaScript 警报代码!
对于Windows
操作系统,您可以使用user32.dll
来帮助您,如下所示。
package main
import ("fmt";"syscall";"unsafe")
func main() {
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw
var user32DLL = syscall.NewLazyDLL("user32.dll")
var procMessageBox = user32DLL.NewProc("MessageBoxW") // Return value: Type int
const (
MB_OK = 0x00000000
MB_OKCANCEL = 0x00000001
MB_YESNO = 0x00000004
MB_YESNOCANCEL = 0x00000003
)
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw#return-value
const (
IDCANCEL = 2
IDYES = 6
IDNO = 7
)
lpCaption, _ := syscall.UTF16PtrFromString("Done Title") // LPCWSTR
lpText, _ := syscall.UTF16PtrFromString("This test is Done.") // LPCWSTR
responseValue, _, _ := procMessageBox.Call(uintptr(0x00),
uintptr(unsafe.Pointer(lpText)),
uintptr(unsafe.Pointer(lpCaption)),
uintptr(MB_YESNOCANCEL))
if responseValue == IDYES {
fmt.Printf("select Yes")
}
}
在javascript中,如果我们想在浏览器中显示带有自定义消息的弹出消息框,我们可以使用alert("message")
函数。
如何在Go
中完成?
我做了一个非常简单的包来做到这一点。
还有其他软件包(如 sqweek's)具有更多功能,但我只是在寻找一些简单的启动错误。
用go get -u tawesoft.co.uk/go
然后像这样使用它:
package main
import "tawesoft.co.uk/go/dialog"
func main() {
dialog.Alert("Message")
dialog.Alert("There are %d lights", 4)
}
注意事项:
- 目前仅支持windows和linux(contribute)
更新
我看到一些人在编写服务器端代码时误用了它。此消息框只会出现在计算机运行 Go 程序 上。如果您正在显示 HTML 页面并希望在用户的计算机上显示一个消息框,则需要在用户正在访问的页面上输出 JavaScript 警报代码!
对于Windows
操作系统,您可以使用user32.dll
来帮助您,如下所示。
package main
import ("fmt";"syscall";"unsafe")
func main() {
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw
var user32DLL = syscall.NewLazyDLL("user32.dll")
var procMessageBox = user32DLL.NewProc("MessageBoxW") // Return value: Type int
const (
MB_OK = 0x00000000
MB_OKCANCEL = 0x00000001
MB_YESNO = 0x00000004
MB_YESNOCANCEL = 0x00000003
)
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw#return-value
const (
IDCANCEL = 2
IDYES = 6
IDNO = 7
)
lpCaption, _ := syscall.UTF16PtrFromString("Done Title") // LPCWSTR
lpText, _ := syscall.UTF16PtrFromString("This test is Done.") // LPCWSTR
responseValue, _, _ := procMessageBox.Call(uintptr(0x00),
uintptr(unsafe.Pointer(lpText)),
uintptr(unsafe.Pointer(lpCaption)),
uintptr(MB_YESNOCANCEL))
if responseValue == IDYES {
fmt.Printf("select Yes")
}
}