亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modulver.cpp

?? VC界面類編程技巧大全附源碼(DOC)
?? CPP
字號:
////////////////////////////////////////////////////////////////
// 1998 Microsoft Systems Journal
// If this code works, it was written by Paul DiLascia.
// If not, I don't know who wrote it.
//
// CModuleVersion provides an easy way to get version info
// for a module.(DLL or EXE).
//
#include "StdAfx.h"
#include "ModulVer.h"

CModuleVersion::CModuleVersion()
{
	m_pVersionInfo = NULL;				// raw version info data 
}

//////////////////
// *** Kirk Stowell - Return the module version.
//
int CModuleVersion::GetModuleVer(CString cs)
{
	DLLVERSIONINFO dvi;
	return DllGetVersion(cs, dvi) ?
		(dvi.dwMajorVersion*100 + dvi.dwMinorVersion) : 0;
}

//////////////////
// Destroy: delete version info
//
CModuleVersion::~CModuleVersion()
{
	delete [] m_pVersionInfo;
}

//////////////////
// Get file version info for a given module
// Allocates storage for all info, fills "this" with
// VS_FIXEDFILEINFO, and sets codepage.
//
BOOL CModuleVersion::GetFileVersionInfo(LPCTSTR modulename)
{
	m_translation.charset = 1252;		// default = ANSI code page
	memset((VS_FIXEDFILEINFO*)this, 0, sizeof(VS_FIXEDFILEINFO));

	// get module handle
	TCHAR filename[_MAX_PATH];
	HMODULE hModule = ::GetModuleHandle(modulename);
	if (hModule==NULL && modulename!=NULL)
		return FALSE;

	// get module file name
	DWORD len = GetModuleFileName(hModule, filename,
		sizeof(filename)/sizeof(filename[0]));
	if (len <= 0)
		return FALSE;

	// read file version info
	DWORD dwDummyHandle; // will always be set to zero
	len = GetFileVersionInfoSize(filename, &dwDummyHandle);
	if (len <= 0)
		return FALSE;

	// delete old, if any
	if (m_pVersionInfo)
		delete m_pVersionInfo;

	m_pVersionInfo = new BYTE[len]; // allocate version info
	if (!::GetFileVersionInfo(filename, 0, len, m_pVersionInfo))
		return FALSE;

	LPVOID lpvi;
	UINT iLen;
	if (!VerQueryValue(m_pVersionInfo, _T("\\"), &lpvi, &iLen))
		return FALSE;

	// copy fixed info to myself, which am derived from VS_FIXEDFILEINFO
	*(VS_FIXEDFILEINFO*)this = *(VS_FIXEDFILEINFO*)lpvi;

	// Get translation info
	if (VerQueryValue(m_pVersionInfo,
		"\\VarFileInfo\\Translation", &lpvi, &iLen) && iLen >= 4) {
		m_translation = *(TRANSLATION*)lpvi;
		TRACE("code page = %d\n", m_translation.charset);
	}

	return dwSignature == VS_FFI_SIGNATURE;
}

//////////////////
// Get string file info.
// Key name is something like "CompanyName".
// returns the value as a CString.
//
CString CModuleVersion::GetValue(LPCTSTR lpKeyName)
{
	CString sVal;
	if (m_pVersionInfo) {

		// To get a string value must pass query in the form
		//
		//    "\StringFileInfo\<langID><codepage>\keyname"
		//
		// where <lang-codepage> is the languageID concatenated with the
		// code page, in hex. Wow.
		//
		CString query;
		query.Format(_T("\\StringFileInfo\\%04x%04x\\%s"),
			m_translation.langID,
			m_translation.charset,
			lpKeyName);

		LPCTSTR pVal;
		UINT iLenVal;
		if (VerQueryValue(m_pVersionInfo, (LPTSTR)(LPCTSTR)query,
				(LPVOID*)&pVal, &iLenVal)) {

			sVal = pVal;
		}
	}
	return sVal;
}

// typedef for DllGetVersion proc
typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);

/////////////////
// Get DLL Version by calling DLL's DllGetVersion proc
//
BOOL CModuleVersion::DllGetVersion(LPCTSTR modulename, DLLVERSIONINFO& dvi)
{
	HINSTANCE hinst = LoadLibrary(modulename);
	if (!hinst)
		return FALSE;

	// Must use GetProcAddress because the DLL might not implement 
	// DllGetVersion. Depending upon the DLL, the lack of implementation of the 
	// function may be a version marker in itself.
	//
	DLLGETVERSIONPROC pDllGetVersion =
		(DLLGETVERSIONPROC)GetProcAddress(hinst, _T("DllGetVersion"));

	if (!pDllGetVersion)
		return FALSE;

	memset(&dvi, 0, sizeof(dvi));			 // clear
	dvi.cbSize = sizeof(dvi);				 // set size for Windows

	return SUCCEEDED((*pDllGetVersion)(&dvi));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产传媒久久文化传媒| 亚洲不卡一区二区三区| 在线观看日韩精品| k8久久久一区二区三区| 国产精品一区不卡| 国产综合一区二区| 麻豆精品一二三| 久久国产精品99精品国产| 免费av成人在线| 欧美一区二区三区四区视频| 精品国内二区三区| 7777精品久久久大香线蕉| 不卡的av中国片| 色婷婷激情一区二区三区| 欧美日韩免费在线视频| 欧美一区二区成人6969| 欧美激情一区二区三区四区| 国产精品久久久久久久第一福利| 国产亚洲成aⅴ人片在线观看 | 日本一区二区三区视频视频| 国产欧美精品一区二区色综合 | 色拍拍在线精品视频8848| 欧美三级在线播放| 久久影院午夜论| 亚洲动漫第一页| 国产二区国产一区在线观看| 欧美综合一区二区| 久久综合色婷婷| 亚洲一区二区三区视频在线播放 | 91丨porny丨国产入口| 日韩女优av电影| 亚洲18女电影在线观看| 91亚洲国产成人精品一区二区三| 91精品国产色综合久久不卡蜜臀 | 色婷婷综合在线| 精品一二三四区| 欧美三级三级三级爽爽爽| 国产欧美日韩一区二区三区在线观看| av亚洲精华国产精华| 欧美欧美欧美欧美| 亚洲午夜免费电影| 成人白浆超碰人人人人| 久久久久久97三级| 经典三级一区二区| 欧美成人性福生活免费看| 亚洲一区在线播放| 91国偷自产一区二区三区观看 | 日本麻豆一区二区三区视频| 91传媒视频在线播放| 亚洲综合男人的天堂| 91久久精品国产91性色tv| 亚洲最大的成人av| 4438x亚洲最大成人网| 蜜臀精品一区二区三区在线观看| 666欧美在线视频| 久久99久久久久久久久久久| 国产精品99久| 一区二区三区在线观看动漫| 日韩理论片网站| 欧美自拍丝袜亚洲| 日韩av网站免费在线| 久久久综合视频| 在线精品视频免费播放| 视频在线在亚洲| 国产午夜亚洲精品不卡| 在线中文字幕不卡| 国产一区久久久| 夜夜嗨av一区二区三区四季av| 91麻豆精品国产91久久久资源速度 | 亚洲影院久久精品| 精品国产亚洲在线| 91福利在线导航| 亚洲人一二三区| 欧美日韩视频在线观看一区二区三区| 麻豆精品国产91久久久久久| 粉嫩aⅴ一区二区三区四区五区| 国产精品久久久久影院色老大| 在线不卡免费av| 成人黄色免费短视频| 韩国一区二区在线观看| 亚洲444eee在线观看| 亚洲精品中文字幕乱码三区| 国产精品午夜在线| 国产成人精品www牛牛影视| 亚洲成av人在线观看| 久久综合99re88久久爱| 在线综合亚洲欧美在线视频| 欧美日韩精品一区二区三区蜜桃| 国产91丝袜在线播放0| 风流少妇一区二区| 不卡的看片网站| 一本到三区不卡视频| hitomi一区二区三区精品| 亚洲蜜臀av乱码久久精品蜜桃| 国产日韩v精品一区二区| 久久影音资源网| 日本一区二区视频在线| 亚洲欧美日韩国产另类专区| 亚洲精品精品亚洲| 亚洲国产精品一区二区久久| 亚洲成av人片在线观看无码| 欧美猛男超大videosgay| 日韩欧美不卡一区| 久久综合五月天婷婷伊人| 亚洲三级视频在线观看| 亚欧色一区w666天堂| 蜜桃av一区二区在线观看| 国产成人无遮挡在线视频| 色天使久久综合网天天| 久久国产尿小便嘘嘘尿| 成人国产精品免费观看视频| 色综合天天综合给合国产| 日韩午夜中文字幕| 91精品国产色综合久久ai换脸| 日韩精品一区二| 久久久久久免费| 亚洲品质自拍视频| 美女视频黄免费的久久 | 91热门视频在线观看| 精品久久人人做人人爽| 亚洲午夜在线观看视频在线| 国产99久久久久| 欧美一区二区在线免费观看| 亚洲激情六月丁香| 成人深夜视频在线观看| 久久女同精品一区二区| 五月婷婷久久丁香| 欧洲亚洲精品在线| 亚洲伦在线观看| aaa欧美日韩| 亚洲色图视频网| 91在线观看视频| 亚洲欧美日韩国产综合在线| youjizz国产精品| 国产精品免费av| 色综合久久久久综合| 综合欧美亚洲日本| 91高清在线观看| 日韩在线卡一卡二| 日韩精品中文字幕一区二区三区| 亚洲国产日产av| 欧美高清性hdvideosex| 欧美一区二区三区日韩| 日本欧美一区二区| 久久新电视剧免费观看| 成人性色生活片| 亚洲国产精品久久久男人的天堂| 在线精品视频免费播放| 亚洲成精国产精品女| 国产精品小仙女| 国产精品久久免费看| 色综合网色综合| 奇米精品一区二区三区在线观看一 | av激情亚洲男人天堂| 亚洲女同女同女同女同女同69| 亚洲妇熟xx妇色黄| 久久久欧美精品sm网站| 91色九色蝌蚪| 国产精品一区二区黑丝| 亚洲成av人片一区二区| 欧美午夜在线观看| 美女mm1313爽爽久久久蜜臀| 亚洲情趣在线观看| 欧美精彩视频一区二区三区| 亚洲美女在线一区| 久久综合色8888| 日韩一区二区视频在线观看| 欧美在线制服丝袜| 成人黄色在线网站| 国产伦精品一区二区三区视频青涩| 樱花影视一区二区| 亚洲欧洲一区二区在线播放| 亚洲精品在线免费播放| 激情综合色播五月| 国产精品久久久久久久久图文区| 精品国产乱码久久久久久夜甘婷婷 | 亚洲第一福利视频在线| 一区二区三区中文在线| 国产精品久久久久影院亚瑟| 中文av字幕一区| 国产精品剧情在线亚洲| 国产精品视频麻豆| 中文字幕 久热精品 视频在线| 国产欧美精品一区| 国产精品久久久久久久久免费丝袜 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 蜜臀久久99精品久久久久宅男| 亚洲网友自拍偷拍| 毛片一区二区三区| 国产成人av电影免费在线观看| 国产成人自拍网| 北条麻妃国产九九精品视频| 亚洲男同性视频| 久久精品国内一区二区三区| 国产成人aaaa| 欧美久久久久中文字幕| 国模娜娜一区二区三区| 91麻豆免费看| 精品国产乱码久久久久久夜甘婷婷| 日本一区二区三区dvd视频在线|