public void RegisterDllOcx(string fileName) { IntPtr hLib = LoadLibrary(fileName); IntPtr proc = GetProcAddress(hLib, "DllRegisterServer"); if (proc != IntPtr.Zero) { DllRegisterServer drs = (DllRegisterServer)Marshal.GetDelegateForFunctionPointer(proc, typeof(DllRegisterServer)); drs(); } FreeLibrary(hLib); }
private static ExitCode CallDllRegisterServer(IntPtr modulePtr) { IntPtr DllRegisterServerPtr = GetProcAddress(modulePtr, "DllRegisterServer"); if (DllRegisterServerPtr == IntPtr.Zero) { return(ExitCode.DllRegisterServerNotFound); } DllRegisterServer DllRegisterServerFunc = (DllRegisterServer)Marshal.GetDelegateForFunctionPointer(DllRegisterServerPtr, typeof(DllRegisterServer)); IntPtr callResult = DllRegisterServerFunc(); if (callResult == IntPtr.Zero) { return(ExitCode.Success); } else if (callResult.ToInt32() == -2147467259) { return(ExitCode.AccessDenied); } return(ExitCode.FailedToCallRegisterMethod); }