Files
Work/hookproc/PROCADDR.TPP
2024-08-07 09:16:27 -04:00

35 lines
661 B
C++

template <class T>
ProcAddress<T>::ProcAddress(void)
{
}
template <class T>
ProcAddress<T>::~ProcAddress()
{
}
#if defined(_MSC_VER)
template <class T>
int ProcAddress<T>::getProcAddress(LPFNMETHODVOID lpfnMethod)
{
typedef void (*LPFNPROCVOID)(void);
int methodAddress=*((int*)&lpfnMethod);
return methodAddress;
}
#else
template <class T>
int ProcAddress<T>::getProcAddress(void (T::* /*lpfnMethod*/ )(void))
{
typedef void (*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