conv_loaddll.cpp

来自「This software performs code conversion o」· C++ 代码 · 共 103 行

CPP
103
字号
// conv_loaddll.cpp

#include <windows.h>
#include "msc.h"
#include "filename.h"

#define CONV_LOAD_GLOBAL(type,name)       extern type name ; type name = (type) 0
// C++ 偱偼 const 偼僨僼僅儖僩偱偼撪晹寢崌偵側傞偺偱丄extern 偱偺愰尵傕昁梫

#include "conv_loaddll.h"



#define MAX_DLL_PATH    ( MAX_PATH * 2 )



// hInstance 偲摨偠僨傿儗僋僩儕偐傜 DLL 傪儘乕僪偡傞
// DLL 偺僴儞僪儖傪曉偡
HINSTANCE LoadDllA ( HINSTANCE hInstance, const char *szDllName ) {

   char szFileName [ MAX_DLL_PATH ] ;
   GetModuleFileNameA ( hInstance, szFileName, MAX_PATH ) ;
   ChangeFileNameA ( szFileName, szDllName ) ;

   return LoadLibraryA ( szFileName ) ;
}



// hInstance 偲摨偠僨傿儗僋僩儕偐傜 DLL 傪儘乕僪偡傞
// DLL 偺僴儞僪儖傪曉偡
HINSTANCE LoadDllW ( HINSTANCE hInstance, const wchar_t *szDllName ) {

   wchar_t szFileName [ MAX_DLL_PATH ] ;
   GetModuleFileNameW ( hInstance, szFileName, MAX_PATH ) ;
   ChangeFileNameW ( szFileName, szDllName ) ;

   return LoadLibraryW ( szFileName ) ;
}



////////////////////////////////////////
//          RTFCONV.EXE/COM           //
////////////////////////////////////////
#if defined RTFCONV_EXE || defined RTFCONV_COM



// DLL 傪儘乕僪
// 僄儔乕偑婲偒偨傜 0 埲奜傪曉偡
int LoadRtfconvDll ( void ) {

   if ( ! hRtfconv ) {
      if ( IsNT () ) hRtfconv = LoadDllW ( NULL, L"rtfconv.dll" ) ;
      else           hRtfconv = LoadDllA ( NULL,  "rtfconv.dll" ) ;
   }

   if ( GETPROCADDRESS ( hRtfconv, RTFCONVEXA, RtfconvExA ) ) return 1 ;
   if ( GETPROCADDRESS ( hRtfconv, RTFCONVEXW, RtfconvExW ) ) return 1 ;
   if ( GETPROCADDRESS ( hRtfconv, ABORTRTFCONV, AbortRtfconv ) ) return 1 ;
#ifdef RTFCONV_COM
   if ( GETPROCADDRESS ( hRtfconv, GETDLLVERSION, GetDllVersion ) ) return 1 ;
#endif

   return 0 ;
}



#endif // end of #if defined RTFCONV_EXE || defined RTFCONV_COM



////////////////////////////////////////
//          CHNCONV.EXE/COM           //
////////////////////////////////////////
#if defined CHNCONV_EXE || defined CHNCONV_COM



// DLL 傪儘乕僪
// 僄儔乕偑婲偒偨傜 0 埲奜傪曉偡
int LoadChnconvDll ( void ) {

   if ( ! hChnconv ) {
      if ( IsNT () ) hChnconv = LoadDllW ( NULL, L"chnconv.dll" ) ;
      else           hChnconv = LoadDllA ( NULL,  "chnconv.dll" ) ;
   }

   if ( GETPROCADDRESS ( hChnconv, CHNCONVEXA, ChnconvExA ) ) return 1 ;
   if ( GETPROCADDRESS ( hChnconv, CHNCONVEXW, ChnconvExW ) ) return 1 ;
   if ( GETPROCADDRESS ( hChnconv, ABORTCHNCONV, AbortChnconv ) ) return 1 ;
   if ( GETPROCADDRESS ( hChnconv, GETDLLVERSION, GetDllVersion ) ) return 1 ;

   return 0 ;
}



#endif // end of #if defined CHNCONV_EXE || defined CHNCONV_COM

⌨️ 快捷键说明

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