⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typelib.cpp

📁 nsis是一个流传比较广的程序安装和解安装封装软件
💻 CPP
字号:
/*  NSIS plug-in for Type Library Registration/UnRegistration  Written by Joost Verburg*/#include <windows.h>#include "../../ExDLL/exdll.h"#define NSISFunction(funcname) extern "C" void __declspec(dllexport) funcname(HWND hwndParent, int string_size, char *variables, stack_t **stacktop)extern "C" BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) {  return TRUE;}// FunctionsNSISFunction(Register) {  EXDLL_INIT();  char filename[1024];  popstring(filename);  wchar_t ole_filename[1024];  MultiByteToWideChar(CP_ACP, 0, filename, 1024, ole_filename, 1024);  ITypeLib* typeLib;  HRESULT hr;  hr = LoadTypeLib(ole_filename, &typeLib);  if (SUCCEEDED(hr)) {    RegisterTypeLib(typeLib, ole_filename, NULL);    hr = typeLib->Release();  }}NSISFunction(UnRegister) {  EXDLL_INIT();  char filename[1024];  popstring(filename);  wchar_t ole_filename[1024];  MultiByteToWideChar(CP_ACP, 0, filename, 1024, ole_filename, 1024);  ITypeLib* typeLib;  HRESULT hr;  hr = LoadTypeLibEx(ole_filename, REGKIND_NONE, &typeLib);  if (SUCCEEDED(hr))  {    TLIBATTR* typelibAttr;    hr = typeLib->GetLibAttr(&typelibAttr);    if(SUCCEEDED(hr))    {      UnRegisterTypeLib(typelibAttr->guid,        typelibAttr->wMajorVerNum,        typelibAttr->wMinorVerNum,        typelibAttr->lcid,        typelibAttr->syskind);      typeLib->ReleaseTLibAttr(typelibAttr);    }    typeLib->Release();  }}NSISFunction(GetLibVersion) {  EXDLL_INIT();  char filename[1024];  popstring(filename);  wchar_t ole_filename[1024];  MultiByteToWideChar(CP_ACP, 0, filename, 1024, ole_filename, 1024);  ITypeLib* typeLib;  HRESULT hr;  hr = LoadTypeLib(ole_filename, &typeLib);  if (SUCCEEDED(hr))  {    TLIBATTR* typelibAttr;    hr = typeLib->GetLibAttr(&typelibAttr);    if (SUCCEEDED(hr))    {      char buf[33];      wsprintf(buf, "%d", typelibAttr->wMajorVerNum);      pushstring(buf);      wsprintf(buf, "%d", typelibAttr->wMinorVerNum);      pushstring(buf);      typeLib->ReleaseTLibAttr(typelibAttr);    }    else    {      pushstring("0");      pushstring("0");    }    typeLib->Release();  }  else  {    pushstring("0");    pushstring("0");  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -