golangwin32 프로그래밍의 dll 구덩이

1822 단어
예.
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("   http://blog.csdn.net/songbohr"), win.MB_OK)
}

유일하게 win이 있어요. 이 고모드에 구덩이가 있어요. pd.고중
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")
}

Pdh Add English CounterW 이api는vista 이상 버전에서만 지원되기 때문에 xp에서 실행하면 불러올 때 이 함수의 주소를 찾지 못해 충돌합니다. 임시 해결 방안, 폭력 주석
//pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW") // XXX: only supported on versions > Vista.

더 풍부한 예:https://github.com/lxn/walk
초보적으로 go로 win gui를 쓰는 것은 재미없는 일이라고 느낀다!
후기: 방금 베이더를 찾아봤는데 전재한 것도 출처를 밝히지 않았어요...oh,shit!

좋은 웹페이지 즐겨찾기