📄 conv_loaddll.cpp
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -