Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }