Пример #1
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);
        }
Пример #2
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);
        }
Пример #3
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);
        }
Пример #4
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);
        }
Пример #5
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);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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);
        }
Пример #9
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);
        }
Пример #10
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);
        }
Пример #11
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);
        }
Пример #12
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);
        }
Пример #13
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);
        }