Beispiel #1
0
        public bool UnlockProcess(Process ra3Process, Pinvokes.ProcessAccessFlags flags)
        {
            LockProcess();

            Logger.Debug($"attempt to unlock process (open process). using pid {ra3Process.Id}");
            IntPtr tmpHandle = Pinvokes.OpenProcess(
                flags
                , false
                , ra3Process.Id
                );

            if (tmpHandle != IntPtr.Zero)
            {
                _processUnlocked = true;
                Handle           = tmpHandle;
                Ra3ProcessHandle.Add(tmpHandle, ra3Process);
                Logger.Debug("OK.. unlock process (open process)");
                return(true);
            }

            _processUnlocked = false;
            int errCode = Marshal.GetLastWin32Error();

            Logger.Error($"ER.. unlock process (open process). code: {errCode}");
            return(false);
        }
Beispiel #2
0
        public static IntPtr OpenProcess(Pinvokes.ProcessAccessFlags processAccess, bool bInheritHandle, int processId)
        {
            IntPtr handle = Pinvokes.OpenProcess(processAccess, bInheritHandle, processId);

            if (handle == IntPtr.Zero)
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }


            return(handle);
        }