這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
go語言讓windows發出聲音,或者播放音樂的例子:會發出alert警告的聲音
( 這是我應群員的求助寫的, 如果你需要瞭解其中的調用原理或過程 或更多go語言調用win32api的資料,加群: 218160862 , 答案我告訴你)
package main
func main(){
winSound()
}
// golang 讓windows發出警告的聲音 todo 需要完善播放mp3之類
func winSound( ) {
funInDllFile, err := syscall.LoadLibrary("Winmm.dll") // 調用的dll檔案
if err != nil {
print("cant not call : syscall.LoadLibrary , errorInfo :" + err.Error())
}
defer syscall.FreeLibrary(funInDllFile)
// 調用的dll裡面的函數是:
funName := "PlaySound"
// 註冊一長串調用代碼,簡化為 _win32Fun 變數.
win32Fun, err := syscall.GetProcAddress(syscall.Handle(funInDllFile), funName)
// 通過syscall.Syscall6()去調用win32的xxx函數,因為xxx函數有3個參數,故需取Syscall6才能放得下. 最後的3個參數,設定為0即可
_, _, err = syscall.Syscall6(
uintptr(win32Fun), // 調用的函數名
3, // 指明該函數的參數數量
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("alert") ) ), // 該函數的參數1. 可通過msdn尋找函數名 查參數含義
// SystemStart
uintptr( 0 ), // 該函數的參數2.
uintptr( 0 ), // 該函數的參數3.
0,
0,
0 )
}