panic: Failed to find ShellExecuteW procedure in user32.dll: The specified proce dure could not be found.
时间: 2024-02-29 22:54:11 浏览: 82
user32.dll
这个错误可能是因为 `ShellExecuteW` 函数在你的系统上不可用,可能是因为你的系统版本过旧。你可以尝试使用 `ShellExecuteA` 函数代替 `ShellExecuteW` 函数,如下所示:
```go
package main
import (
"syscall"
"unsafe"
)
func main() {
url := "https://www.example.com"
user32 := syscall.MustLoadDLL("user32.dll")
MessageBox := user32.MustFindProc("MessageBoxW")
ShellExecute := user32.MustFindProc("ShellExecuteA")
// 打开一个弹窗
MessageBox.Call(0,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Message"))),
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Title"))),
0)
// 打开网址
ShellExecute.Call(0,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("open"))),
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(url))),
0,
0,
syscall.SW_SHOW)
}
```
这段代码中,我们将 `ShellExecuteW` 函数替换为 `ShellExecuteA` 函数,并将第三个参数从 `uintptr` 类型的指针转换为 `unsafe.Pointer` 类型的指针。这样可以避免编译器在调用 `ShellExecuteA` 函数时报错。
阅读全文