template ProcAddress::ProcAddress(void) { } template ProcAddress::~ProcAddress() { } #if defined(_MSC_VER) template int ProcAddress::getProcAddress(LPFNMETHODVOID lpfnMethod) { typedef BOOL (*LPFNPROCVOID)(void); int methodAddress=*((int*)&lpfnMethod); return methodAddress; } #else template int ProcAddress::getProcAddress(void (T::* /*lpfnMethod*/ )(void)) { typedef BOOL (*LPFNPROCVOID)(void); int methodAddress; char assign[]={0x8B,0x5D,0x0C,0xC3}; char address[]={0x00,0x00,0x00,0x00}; *((DWORD*)address)=(DWORD)((DWORD*)assign); ((LPFNPROCVOID)address)(); return methodAddress; } #endif