Ejemplo n.º 1
0
        public static int DoneMemPack(IntPtr hMemPack)
        {
            var result = PackerResult.ErrorClose;

            _callSignature = $"DoneMemPack ({hMemPack.ToString()})";
            try {
                var o = TcHandles.GetObject(hMemPack);
                if (o != null)
                {
                    result = Plugin.DoneMemPack(o);
                    if (o is IDisposable dip)
                    {
                        dip.Dispose();
                    }

                    var count = TcHandles.RemoveHandle(hMemPack);
                    TraceCall(TraceLevel.Warning, $"{count} calls.");
                }
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 3
0
        public static int ReadHeaderInternal(IntPtr arcData, IntPtr headerData, HeaderDataMode mode)
        {
            PackerResult result = PackerResult.EndArchive;

            callSignature = String.Format("ReadHeader ({0})", arcData.ToString());
            try {
                object o = TcHandles.GetObject(arcData);
                if (o == null)
                {
                    return((int)PackerResult.ErrorOpen);
                }
                HeaderData header;
                result = Plugin.ReadHeader(ref o, out header);
                if (result == PackerResult.OK)
                {
                    header.CopyTo(headerData, mode);
                    TcHandles.UpdateHandle(arcData, o);
                }

                // !!! may produce much trace info !!!
                TraceCall(TraceLevel.Verbose, String.Format("{0} ({1})",
                                                            result.ToString(), (result == PackerResult.OK) ? header.FileName : null));
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 4
0
        public static int CloseArchive(IntPtr arcData)
        {
            PackerResult result = PackerResult.ErrorClose;

            callSignature = String.Format("FindClose ({0})", arcData.ToString());
            try {
                object o = TcHandles.GetObject(arcData);
                if (o != null)
                {
                    result = Plugin.CloseArchive(o);
                    IDisposable disp = o as IDisposable;
                    if (disp != null)
                    {
                        disp.Dispose();
                    }

                    int count = (TcHandles.RemoveHandle(arcData) - 1) / 2;

                    TraceCall(TraceLevel.Info, String.Format("{0} items.", count));
                }
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 5
0
        public static int ProcessFileW(IntPtr arcData, int operation,
                                       [MarshalAs(UnmanagedType.LPWStr)] string destPath,
                                       [MarshalAs(UnmanagedType.LPWStr)] string destName)
        {
            PackerResult         result = PackerResult.NotSupported;
            ProcessFileOperation oper   = (ProcessFileOperation)operation;
            string fileName             = String.IsNullOrEmpty(destPath) ? destName : Path.Combine(destPath, destName);

            callSignature = String.Format("ProcessFile ({0}, {1}, {2})",
                                          arcData.ToString(), oper.ToString(), fileName);
            try {
                object o = TcHandles.GetObject(arcData);
                if (o != null)
                {
                    result = Plugin.ProcessFile(o, oper, fileName);
                    if (result == PackerResult.OK)
                    {
                        TcHandles.UpdateHandle(arcData, o);
                    }
                }

                // !!! may produce much trace info !!!
                TraceCall(TraceLevel.Verbose, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 6
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);
        }
Ejemplo n.º 7
0
        public static bool FindNextInternal(IntPtr hdl, IntPtr findFileData, bool isUnicode)
        {
            var result = false;

            _callSignature = "FindNext";
            try {
                FindData findData = null;
                var      o        = TcHandles.GetObject(hdl);
                if (o != null)
                {
                    result = Plugin.FindNext(ref o, out findData);
                    if (result)
                    {
                        findData.CopyTo(findFileData, isUnicode);
                        TcHandles.UpdateHandle(hdl, o);
                    }
                }

                // !!! may produce much trace info !!!
                TraceCall(TraceLevel.Verbose, result ? findData.FileName : "<None>");
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return(result);
        }
Ejemplo n.º 8
0
        public static int ReadHeaderInternal(IntPtr arcData, IntPtr headerData, HeaderDataMode mode)
        {
            var result = PackerResult.EndArchive;

            _callSignature = $"ReadHeader ({arcData.ToString()})";
            try {
                var o = TcHandles.GetObject(arcData);
                if (o == null)
                {
                    return((int)PackerResult.ErrorOpen);
                }

                result = Plugin.ReadHeader(ref o, out var header);
                if (result == PackerResult.OK)
                {
                    header.CopyTo(headerData, mode);
                    TcHandles.UpdateHandle(arcData, o);
                }

                // !!! may produce much trace info !!!
                TraceCall(TraceLevel.Verbose, $"{result.ToString()} ({((result == PackerResult.OK) ? header.FileName : null)})");
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 9
0
        public static int PackToMem(IntPtr hMemPack,
                                    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] byte[] bufIn,
                                    int inLen, ref int taken,
                                    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 5)] byte[] bufOut,
                                    int outLen, ref int written, int seekBy)
        {
            PackerResult result = PackerResult.NotSupported;

            callSignature = String.Format("PackToMem ({0} - {1}, {2}, {3})",
                                          hMemPack.ToString(), inLen, outLen, seekBy);
            string traceRes = null;

            try {
                object o = TcHandles.GetObject(hMemPack);
                if (o != null)
                {
                    result   = Plugin.PackToMem(ref o, bufIn, ref taken, bufOut, ref written, seekBy);
                    traceRes = result.ToString();
                    if (result == PackerResult.OK)
                    {
                        TcHandles.UpdateHandle(hMemPack, o);
                        traceRes += String.Format(" - {0}, {1}", taken, written);
                    }
                }

                TraceCall(TraceLevel.Verbose, traceRes);
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 10
0
        public static int CloseArchive(IntPtr arcData)
        {
            var result = PackerResult.ErrorClose;

            _callSignature = $"FindClose ({arcData.ToString()})";
            try {
                var o = TcHandles.GetObject(arcData);
                if (o != null)
                {
                    result = Plugin.CloseArchive(o);
                    if (o is IDisposable dip)
                    {
                        dip.Dispose();
                    }

                    var count = (TcHandles.RemoveHandle(arcData) - 1) / 2;

                    TraceCall(TraceLevel.Info, $"{count} items.");
                }
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 11
0
 public static void CloseWindow(IntPtr listWin)
 {
     callSignature = String.Format("CloseWindow ({0})", listWin.ToString());
     try {
         object listerControl = TcHandles.GetObject(listWin);
         Plugin.CloseWindow(listerControl);
         int count = TcHandles.RemoveHandle(listWin);
         NativeMethods.DestroyWindow(listWin);
         TraceCall(TraceLevel.Warning, String.Format("{0} calls.", count));
     } catch (Exception ex) {
         ProcessException(ex);
     }
 }
Ejemplo n.º 12
0
 public static void CloseWindow(IntPtr listWin)
 {
     _callSignature = $"CloseWindow ({listWin.ToString()})";
     try {
         var listerControl = TcHandles.GetObject(listWin);
         Plugin.CloseWindow(listerControl);
         var count = TcHandles.RemoveHandle(listWin);
         NativeMethods.DestroyWindow(listWin);
         TraceCall(TraceLevel.Warning, $"{count} calls.");
     }
     catch (Exception ex) {
         ProcessException(ex);
     }
 }
Ejemplo n.º 13
0
        public static int SearchDialog(IntPtr listWin, int findNext)
        {
            ListerResult result = ListerResult.Error;

            callSignature = String.Format("SearchDialog ({0}, {1})",
                                          listWin.ToString(), findNext);
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.SearchDialog(listerControl, (findNext != 0));
                TraceCall(TraceLevel.Info, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 14
0
        public static int SearchDialog(IntPtr listWin, int findNext)
        {
            var result = ListerResult.Error;

            _callSignature = $"SearchDialog ({listWin.ToString()}, {findNext})";
            try {
                var listerControl = TcHandles.GetObject(listWin);
                result = Plugin.SearchDialog(listerControl, findNext != 0);
                TraceCall(TraceLevel.Info, result.ToString());
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 15
0
        public static int NotificationReceived(IntPtr listWin, int message, int wParam, int lParam)   // 32, 64 ???
        {
            int result = 0;

            callSignature = String.Format("NotificationReceived ({0}, {1}, {2}, {3})",
                                          listWin.ToString(), message, wParam, lParam);
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.NotificationReceived(listerControl, message, wParam, lParam);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Info, result.ToString(CultureInfo.InvariantCulture));
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return(result);
        }
Ejemplo n.º 16
0
        public static int NotificationReceived(IntPtr listWin, int message, int wParam, int lParam) // 32, 64 ???
        {
            var result = 0;

            _callSignature = $"NotificationReceived ({listWin.ToString()}, {message}, {wParam}, {lParam})";
            try {
                var listerControl = TcHandles.GetObject(listWin);
                result = Plugin.NotificationReceived(listerControl, message, wParam, lParam);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Info, result.ToString(CultureInfo.InvariantCulture));
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return(result);
        }
Ejemplo n.º 17
0
        public static int LoadNextW(IntPtr parentWin, IntPtr listWin,
                                    [MarshalAs(UnmanagedType.LPWStr)] string fileToLoad, int flags)
        {
            ListerResult result    = ListerResult.Error;
            ShowFlags    showFlags = (ShowFlags)flags;

            callSignature = String.Format("LoadNext ({0}, {1}, {2})",
                                          listWin.ToString(), fileToLoad, showFlags.ToString());
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.LoadNext(listerControl, fileToLoad, showFlags);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Warning, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 18
0
        public static int SendCommand(IntPtr listWin, int command, int parameter)
        {
            ListerResult  result = ListerResult.Error;
            ListerCommand cmd    = (ListerCommand)command;
            ShowFlags     par    = (ShowFlags)parameter;

            callSignature = String.Format("SendCommand ({0}, {1}, {2})",
                                          listWin.ToString(), cmd.ToString(), par.ToString());
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.SendCommand(listerControl, cmd, par);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Info, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 19
0
        public static int PrintW(IntPtr listWin, [MarshalAs(UnmanagedType.LPWStr)] string fileToPrint, [MarshalAs(UnmanagedType.LPWStr)] string defPrinter, int flags, PrintMargins margins)
        {
            var result     = ListerResult.Error;
            var printFlags = (PrintFlags)flags;

            _callSignature = $"Print ({listWin.ToString()}, {fileToPrint}, {defPrinter}, {printFlags.ToString()})";
            try {
                var listerControl = TcHandles.GetObject(listWin);
                result = Plugin.Print(listerControl, fileToPrint, defPrinter, printFlags, margins);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Warning, result.ToString());
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 20
0
        public static int PrintW(IntPtr listWin, [MarshalAs(UnmanagedType.LPWStr)] string fileToPrint,
                                 [MarshalAs(UnmanagedType.LPWStr)] string defPrinter, int flags, PrintMargins margins)
        {
            ListerResult result     = ListerResult.Error;
            PrintFlags   printFlags = (PrintFlags)flags;

            callSignature = String.Format("Print ({0}, {1}, {2}, {3})",
                                          listWin.ToString(), fileToPrint, defPrinter, printFlags.ToString());
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.Print(listerControl, fileToPrint, defPrinter, printFlags, margins);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Warning, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 21
0
        public static int SearchTextW(IntPtr listWin,
                                      [MarshalAs(UnmanagedType.LPWStr)] string searchString, int searchParameter)
        {
            ListerResult    result = ListerResult.Error;
            SearchParameter sp     = (SearchParameter)searchParameter;

            callSignature = String.Format("SearchText ({0}, {1}, {2})",
                                          listWin.ToString(), searchString, sp.ToString());
            try {
                object listerControl = TcHandles.GetObject(listWin);
                result = Plugin.SearchText(listerControl, searchString, sp);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Warning, result.ToString());
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }
Ejemplo n.º 22
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);
        }
Ejemplo n.º 23
0
        public static int SendCommand(IntPtr listWin, int command, int parameter)
        {
            var result = ListerResult.Error;
            var cmd    = (ListerCommand)command;
            var par    = (ShowFlags)parameter;

            _callSignature = $"SendCommand ({listWin.ToString()}, {cmd.ToString()}, {par.ToString()})";
            try {
                var listerControl = TcHandles.GetObject(listWin);
                result = Plugin.SendCommand(listerControl, cmd, par);
                TcHandles.UpdateHandle(listWin, listerControl);
                TraceCall(TraceLevel.Info, result.ToString());
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return((int)result);
        }
Ejemplo n.º 24
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);
        }
Ejemplo n.º 25
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);
        }
Ejemplo n.º 26
0
        public static int FindClose(IntPtr hdl)
        {
            _callSignature = "FindClose";
            try {
                var count = 0;

                var o = TcHandles.GetObject(hdl);
                if (o != null)
                {
                    Plugin.FindClose(o);
                    (o as IDisposable)?.Dispose();
                    count = TcHandles.RemoveHandle(hdl);
                }

                TraceCall(TraceLevel.Info, $"{count} item(s)");
            }
            catch (Exception ex) {
                ProcessException(ex);
            }

            return(0);
        }
Ejemplo n.º 27
0
        public static int DoneMemPack(IntPtr hMemPack)
        {
            PackerResult result = PackerResult.ErrorClose;

            callSignature = String.Format("DoneMemPack ({0})", hMemPack.ToString());
            try {
                object o = TcHandles.GetObject(hMemPack);
                if (o != null)
                {
                    result = Plugin.DoneMemPack(o);
                    IDisposable disp = o as IDisposable;
                    if (disp != null)
                    {
                        disp.Dispose();
                    }

                    int count = TcHandles.RemoveHandle(hMemPack);
                    TraceCall(TraceLevel.Warning, String.Format("{0} calls.", count));
                }
            } catch (Exception ex) {
                ProcessException(ex);
            }
            return((int)result);
        }