這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
例子
package mainimport ("github.com/lxn/win""strconv""syscall")func _TEXT(_str string) *uint16 {return syscall.StringToUTF16Ptr(_str)}func _toString(_n int32) string {return strconv.Itoa(int(_n))}func main() {var hwnd win.HWNDcxScreen := win.GetSystemMetrics(win.SM_CXSCREEN)cyScreen := win.GetSystemMetrics(win.SM_CYSCREEN)win.MessageBox(hwnd, _TEXT("螢幕長-:"+_toString(cxScreen)+"寬:"+_toString(cyScreen)), _TEXT(" 訊息"), win.MB_OK)}
唯一的就是有一個win這個go module裡有一個坑,在phd.go 中
func init() {// LibrarylibpdhDll = syscall.MustLoadDLL("pdh.dll")// Functionspdh_AddCounterW = libpdhDll.MustFindProc("PdhAddCounterW")pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.pdh_CloseQuery = libpdhDll.MustFindProc("PdhCloseQuery")pdh_CollectQueryData = libpdhDll.MustFindProc("PdhCollectQueryData")pdh_GetFormattedCounterValue = libpdhDll.MustFindProc("PdhGetFormattedCounterValue")pdh_GetFormattedCounterArrayW = libpdhDll.MustFindProc("PdhGetFormattedCounterArrayW")pdh_OpenQuery = libpdhDll.MustFindProc("PdhOpenQuery")pdh_ValidatePathW = libpdhDll.MustFindProc("PdhValidatePathW")}
PdhAddEnglishCounterW這個api只在vista以上版本支援,所以如果在xp下運行,在載入時會因找不到該函數的地址崩潰,臨時解決方案,暴力注釋掉
//pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.
更豐富的例子:https://github.com/lxn/walk
初步感覺用go寫win gui,是個沒意思的事情!