void InvokeAssemblyResource()
{
IInvokeAssemblyPtr pInvoker; //COM Pointer to the .Net Interface
源代码网整理以下if(FAILED(pInvoker.CreateInstance(CLSID_CInvokeAssembly)))
{
MessageBox(NULL,_T("Unable to Create Invoke Assembly Object !!"),_T("Error"),MB_OK|MB_ICONERROR);
return;
}
源代码网整理以下HRSRC hRC = FindResource(NULL,MAKEINTRESOURCE(IDR_EMBEDDED_ASSEMBLY),"RT_EMBEDDED_ASSEMBLY");
HGLOBAL hRes = LoadResource(NULL,hRC);
DWORD dwSize = SizeofResource(NULL,hRC);
源代码网整理以下SAFEARRAY* pSA = NULL;
源代码网整理以下if(NULL !=(pSA = SafeArrayCreateVector(VT_UI1, 0, dwSize)))
{
LPVOID pBuf = NULL;
源代码网整理以下if(FAILED(SafeArrayAccessData(pSA,&pBuf)))
MessageBox(NULL,_T("Unable to Access SafeArray Data"), _T("Error"),MB_OK|MB_ICONERROR);
else
{
LPVOID hAsm = LockResource(hRes);
源代码网整理以下memcpy(pBuf, hAsm, dwSize);
源代码网整理以下UnlockResource(hRes);
源代码网整理以下SafeArrayUnaccessData(pSA);
}
源代码网整理以下pInvoker->LoadAndExecute(pSA); //Invoke the Reflection to load and Execute our Byte[]
}
else
MessageBox(NULL,_T("Unable to Allocate Memory"),_T("Memory Allocate Error"),MB_OK|MB_ICONERROR);
源代码网整理以下if(pSA) SafeArrayDestroy(pSA);
}