当前位置:编程学习 > 网站相关 >>

golang win32编程的一个dll坑

 
package main  
  
import (  
    "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.HWND  
    cxScreen := 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() {  
// Library  
libpdhDll = syscall.MustLoadDLL("pdh.dll")  
  
  
// Functions  
pdh_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.  

 

 
 
补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,