分享

golang win32编程的一个dll坑

 quasiceo 2014-01-16
分类: golang 2013-08-29 13:46 612人阅读 评论(0) 收藏 举报

例子

  1. package main  
  2.   
  3. import (  
  4.     "github.com/lxn/win"  
  5.     "strconv"  
  6.     "syscall"  
  7. )  
  8.   
  9. func _TEXT(_str string) *uint16 {  
  10.     return syscall.StringToUTF16Ptr(_str)  
  11. }  
  12. func _toString(_n int32) string {  
  13.     return strconv.Itoa(int(_n))  
  14. }  
  15. func main() {  
  16.     var hwnd win.HWND  
  17.     cxScreen := win.GetSystemMetrics(win.SM_CXSCREEN)  
  18.     cyScreen := win.GetSystemMetrics(win.SM_CYSCREEN)  
  19.     win.MessageBox(hwnd, _TEXT("屏幕长-:"+_toString(cxScreen)+"宽:"+_toString(cyScreen)), _TEXT(" 消息<a target="_blank" href="http://blog.csdn.net/songbohr">http://blog.csdn.net/songbohr</a>"), win.MB_OK)  
  20. }  


唯一的就是有一个win这个go module里有一个坑,在phd.go 中

  1. func init() {  
  2. // Library  
  3. libpdhDll = syscall.MustLoadDLL("pdh.dll")  
  4.   
  5.   
  6. // Functions  
  7. pdh_AddCounterW = libpdhDll.MustFindProc("PdhAddCounterW")  
  8. pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.  
  9. pdh_CloseQuery = libpdhDll.MustFindProc("PdhCloseQuery")  
  10. pdh_CollectQueryData = libpdhDll.MustFindProc("PdhCollectQueryData")  
  11. pdh_GetFormattedCounterValue = libpdhDll.MustFindProc("PdhGetFormattedCounterValue")  
  12. pdh_GetFormattedCounterArrayW = libpdhDll.MustFindProc("PdhGetFormattedCounterArrayW")  
  13. pdh_OpenQuery = libpdhDll.MustFindProc("PdhOpenQuery")  
  14. pdh_ValidatePathW = libpdhDll.MustFindProc("PdhValidatePathW")  
  15. }  

PdhAddEnglishCounterW这个api只在vista以上版本支持,所以如果在xp下运行,在载入时会因找不到该函数的地址崩溃,临时解决方案,暴力注释掉
  1. //pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.  


更丰富的例子:https://github.com/lxn/walk


初步感觉用go写win gui,是个没意思的事!


后记:刚才搜了下baidu,转载的都没注明出处。。。。oh,shit!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多