Example #1
0
        public static IntPtr FindFirstInternal(string path, IntPtr findFileData, bool isUnicode)
        {
            var result = NativeMethods.INVALID_HANDLE;

            _callSignature = $"FindFirst ({path})";
            try {
                var o = Plugin.FindFirst(path, out var findData);
                if (o == null)
                {
                    TraceCall(TraceLevel.Info, "<None>");
                }
                else
                {
                    findData.CopyTo(findFileData, isUnicode);
                    result = TcHandles.AddHandle(o);
                    TraceCall(TraceLevel.Info, findData.FileName);
                }
            }
            catch (NoMoreFilesException) {
                TraceCall(TraceLevel.Info, "<Nothing>");
                NativeMethods.SetLastError(NativeMethods.ERROR_NO_MORE_FILES);
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return(result);
        }
Example #2
0
        public static IntPtr LoadW(IntPtr parentWin,
                                   [MarshalAs(UnmanagedType.LPWStr)] string fileToLoad, int flags)
        {
            IntPtr    listerHandle = IntPtr.Zero;
            ShowFlags showFlags    = (ShowFlags)flags;

            callSignature = String.Format("Load ({0}, {1})", fileToLoad, showFlags.ToString());
            try {
                object listerControl = Plugin.Load(fileToLoad, showFlags);
                listerHandle = ListerHandlerBuilder.GetHandle(listerControl, parentWin);
                if (listerHandle != IntPtr.Zero)
                {
                    Plugin.ListerHandle = listerHandle;
                    Plugin.ParentHandle = parentWin;
                    long windowState = NativeMethods.GetWindowLong(parentWin, NativeMethods.GWL_STYLE);
                    Plugin.IsQuickView = ((windowState & NativeMethods.WS_CHILD) != 0);
                    TcHandles.AddHandle(listerHandle, listerControl);
                    NativeMethods.SetParent(listerHandle, parentWin);
                }
                TraceCall(TraceLevel.Warning, listerHandle.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return(listerHandle);
        }
Example #3
0
        public static IntPtr StartMemPackW(int options, [MarshalAs(UnmanagedType.LPWStr)] string fileName)
        {
            IntPtr         result    = IntPtr.Zero;
            MemPackOptions mpOptions = (MemPackOptions)options;

            callSignature = String.Format("StartMemPack {0} ({1})", fileName, mpOptions.ToString());
            try {
                object o = Plugin.StartMemPack(mpOptions, fileName);
                if (o != null)
                {
                    result = TcHandles.AddHandle(o);
                }

                TraceCall(TraceLevel.Warning, (result == IntPtr.Zero) ? "ERROR" : result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return(result);
        }
Example #4
0
        public static IntPtr OpenArchiveInternal(OpenArchiveData data)
        {
            IntPtr result = IntPtr.Zero;

            callSignature = String.Format("OpenArchive {0} ({1})", data.ArchiveName, data.Mode.ToString());
            try {
                object o = Plugin.OpenArchive(ref data);
                if (o != null && data.Result == PackerResult.OK)
                {
                    result = TcHandles.AddHandle(o);
                    data.Update();
                }

                TraceCall(TraceLevel.Info, (result == IntPtr.Zero) ?
                          String.Format("Error ({0})", data.Result.ToString()) : result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
                result = IntPtr.Zero;
            }
            return(result);
        }
Example #5
0
        public static IntPtr OpenArchiveInternal(OpenArchiveData data)
        {
            var result = IntPtr.Zero;

            _callSignature = $"OpenArchive {data.ArchiveName} ({data.Mode.ToString()})";
            try {
                object o = Plugin.OpenArchive(ref data);
                if (o != null && data.Result == PackerResult.OK)
                {
                    result = TcHandles.AddHandle(o);
                    data.Update();
                }

                TraceCall(TraceLevel.Info, result == IntPtr.Zero ? $"Error ({data.Result.ToString()})" : result.ToString());
            }
            catch (Exception ex) {
                ProcessException(ex);
                result = IntPtr.Zero;
            }

            return(result);
        }