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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? modulver.cpp

?? 目錄RAS高級編程是一個RAS撥號程序高級開發(fā)
?? 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 
}

//////////////////
// 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;

   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;
}

BOOL CModuleVersion::GetDLLVersionInfo(LPTSTR filename)
{
   m_translation.charset = 1252;    // default = ANSI code page
   memset((VS_FIXEDFILEINFO*)this, 0, sizeof(VS_FIXEDFILEINFO));

   // get module handle
   HMODULE hModule = LoadLibrary(filename);
   if (hModule==NULL) return FALSE;

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

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

   LPVOID lpvi;
   UINT iLen;
   if (!VerQueryValue(m_pVersionInfo, _T("\\"), &lpvi, &iLen))
   {
	   FreeLibrary(hModule);
	   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);
   }
	FreeLibrary(hModule);
	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 <langID><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));
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文成人综合网| 欧美人成免费网站| 国产精品久久久久久福利一牛影视 | 国产精品无遮挡| 国产精品2024| 欧美激情资源网| 99久久免费国产| 一区二区三区高清不卡| 在线亚洲高清视频| 日本女优在线视频一区二区| 欧美一区二区三区免费| 极品尤物av久久免费看| 日本一区二区免费在线| 91小视频免费看| 无吗不卡中文字幕| 久久久一区二区三区| 成人av午夜电影| 午夜日韩在线电影| 精品福利视频一区二区三区| 粉嫩绯色av一区二区在线观看| 国产精品福利在线播放| 欧美在线观看视频一区二区三区| 日本不卡123| 久久久久久97三级| 色老汉av一区二区三区| 丝袜美腿亚洲色图| 久久久久久久久一| 在线免费观看成人短视频| 奇米影视一区二区三区| 亚洲国产精品v| 在线成人免费视频| 风间由美一区二区av101| 一二三区精品视频| 亚洲精品一区二区三区四区高清| 成人aaaa免费全部观看| 水蜜桃久久夜色精品一区的特点 | 久久亚洲私人国产精品va媚药| 国产suv精品一区二区6| 亚洲国产精品久久一线不卡| 欧美xxxxx牲另类人与| 一本大道av伊人久久综合| 久久99久久精品| 一区二区三区四区在线| 久久你懂得1024| 欧美老人xxxx18| av在线播放不卡| 久久99精品久久久| 午夜久久久久久电影| 欧美国产一区视频在线观看| 欧美日韩免费一区二区三区视频| 国产成人综合在线播放| 秋霞午夜鲁丝一区二区老狼| 1区2区3区精品视频| 国产香蕉久久精品综合网| 欧美精品视频www在线观看| 色综合久久综合网欧美综合网| 国产一区二区中文字幕| 日日夜夜免费精品视频| 亚洲国产一区二区视频| 亚洲精品日日夜夜| 国产精品久久影院| 国产农村妇女毛片精品久久麻豆| 欧美videossexotv100| 欧美精品一卡两卡| 欧美日韩日日骚| 欧洲av一区二区嗯嗯嗯啊| 91在线porny国产在线看| 成人h精品动漫一区二区三区| 国产美女精品在线| 国内精品视频666| 久久精品国产久精国产爱| 日韩成人一级大片| 日产精品久久久久久久性色| 亚洲电影一区二区三区| 亚洲曰韩产成在线| 亚洲主播在线播放| 亚洲va欧美va国产va天堂影院| 一区二区三区免费网站| 一区二区三区国产豹纹内裤在线| 亚洲免费观看高清完整| 一区二区三区在线免费视频| 亚洲综合在线五月| 亚洲一区电影777| 亚洲第一福利视频在线| 亚洲成人先锋电影| 日韩vs国产vs欧美| 毛片不卡一区二区| 国产揄拍国内精品对白| 国产乱码字幕精品高清av| 国产一区二区伦理| 成人激情动漫在线观看| 91麻豆国产香蕉久久精品| 欧美视频在线观看一区二区| 欧美一区国产二区| 久久综合九色综合97婷婷| 国产午夜久久久久| 亚洲婷婷综合色高清在线| 夜夜亚洲天天久久| 老司机午夜精品| 成人激情免费电影网址| 欧美亚洲图片小说| 日韩午夜电影av| 日本一区二区三区久久久久久久久不 | 成人中文字幕合集| 97se亚洲国产综合自在线| 欧美性猛交xxxx黑人交| 日韩午夜激情视频| 国产日韩欧美电影| 亚洲一区二区欧美激情| 久久国产成人午夜av影院| 粉嫩一区二区三区性色av| 色偷偷久久人人79超碰人人澡| 欧美日韩国产色站一区二区三区| 日韩无一区二区| 国产精品国产三级国产三级人妇| 亚洲自拍欧美精品| 国产主播一区二区| 欧洲精品在线观看| 久久久久国产精品厨房| 尤物在线观看一区| 久久99精品国产91久久来源| youjizz国产精品| 欧美一区二区免费| 国产精品成人一区二区艾草 | 国产精品一区二区你懂的| 色呦呦一区二区三区| 日韩欧美国产一区在线观看| 国产欧美精品一区二区三区四区| 亚洲欧美韩国综合色| 久久99精品久久久| 欧美吞精做爰啪啪高潮| 国产午夜精品一区二区三区四区| 亚洲精品欧美激情| 国产高清精品久久久久| 欧美一级国产精品| 亚洲精品免费在线播放| 国产精品一区2区| 欧美一区二区在线看| 亚洲综合视频在线观看| 成人av综合一区| 亚洲精品一线二线三线| 日韩精品欧美成人高清一区二区| 丁香啪啪综合成人亚洲小说 | 亚洲国产成人精品视频| 丁香天五香天堂综合| 精品电影一区二区| 日本欧美久久久久免费播放网| 91色视频在线| 中文字幕制服丝袜一区二区三区| 久久机这里只有精品| 欧美日韩视频在线第一区| 亚洲欧美另类在线| 成人va在线观看| 亚洲国产乱码最新视频| 91免费观看视频| 国产精品欧美极品| 国产福利精品一区二区| 精品国产99国产精品| 日韩1区2区3区| 91麻豆精品国产91久久久久久久久| 亚洲伦在线观看| av亚洲精华国产精华精华| 国产精品午夜在线观看| 丁香六月综合激情| 国产精品日韩成人| 99久久伊人久久99| 亚洲欧洲美洲综合色网| 91在线一区二区| 一区二区三区在线视频免费| 色综合久久中文字幕| 亚洲免费观看在线观看| 色噜噜狠狠成人中文综合| 亚洲欧美欧美一区二区三区| 色综合中文字幕国产 | 成人avav影音| 国产精品看片你懂得| 91视频com| 午夜电影网亚洲视频| 欧美久久久久久久久| 久久国产视频网| 欧美国产综合色视频| 91在线丨porny丨国产| 亚洲综合视频在线| 欧美一区二区三区小说| 精品在线免费观看| 欧美激情艳妇裸体舞| 99久久精品99国产精品| 亚洲精选免费视频| 欧美日韩大陆在线| 秋霞午夜鲁丝一区二区老狼| 欧美岛国在线观看| 国产成人av在线影院| 亚洲色图另类专区| 欧美日韩视频在线观看一区二区三区 | 日韩福利视频导航| 国产午夜一区二区三区| 日本久久一区二区| 蜜桃av噜噜一区| 国产精品成人午夜| 欧美日本视频在线|