예제 #1
0
        private UInt32 AddFilesToList(String file, String FullDirectoryName)
        {
            UInt32         Count;
            FileAttributes Attribute;

            Count = 0;

            try
            {
                Attribute = File.GetAttributes(file);
                if ((Attribute & FileAttributes.Directory) != 0)
                {
                    String[] Files = Directory.GetDirectories(file);

                    for (UInt32 i = 0; i != Files.Length; ++i)
                    {
                        Count += AddFilesToList(Files[i], FullDirectoryName);
                    }

                    Files = Directory.GetFiles(file);
                    for (UInt32 i = 0; i != Files.Length; ++i)
                    {
                        Count += AddFilesToList(Files[i], FullDirectoryName);
                    }
                }
                else
                {
                    String RelativePath;
                    RelativePath = Path.GetFullPath(file);

                    if (RelativePath.IndexOf(FullDirectoryName) != -1)
                    {
                        RelativePath = file.Substring(FullDirectoryName.Length);
                    }

//                    if (listBoxFiles.FindString(RelativePath) == CheckedListBox.NoMatches)
                    {
                        SPackFileInfo info;

                        info          = new SPackFileInfo();
                        info.Compress = 0;
                        info.Encrypt  = 0;
                        info.FileName = RelativePath;
                        FileInfo.Add(info);
//                        listBoxFiles.Items.Add(RelativePath);
                        ++Count;
                    }
                }
            }
            catch (Exception e)
            {
                MyMsgBox(e.ToString());
            }

            return(Count);
        }
예제 #2
0
 public void SetParam(Packer Caller, 
                   IntPtr hModule, 
                   SPackFileInfo[] PackInfo, 
                   Delegate PackFiles, 
                   String FullOutput, 
                   String FullInputPath, 
                   String Parameter)
 {
     this.Caller = Caller;
     this.hModule = hModule;
     this.info = PackInfo;
     this.PackFiles = (FPackCallback)PackFiles;
     this.FullOutput = FullOutput;
     this.FullInputPath = FullInputPath;
     this.Parameter = Parameter;
 }
예제 #3
0
        private void btnPack_Click(object sender, EventArgs e)
        {
            if (PackThread.IsAlive)
            {
                NeedStop = true;
                return;
            }

            if (textBoxOutput.Text == null || textBoxOutput.Text == "")
            {
                return;
            }
            else if (FileInfo.Count == 0)
            {
                return;
            }

            IntPtr        hModule;
            FPackCallback PackFiles;

            SPackFileInfo[] info;

            hModule = LoadLibraryExW(textBoxPlugin.Text, IntPtr.Zero, 0);
            if (hModule == IntPtr.Zero)
            {
                MyMsgBox("Can't load \"" + textBoxPlugin.Text + "\"");
                return;
            }

            PackFiles = (FPackCallback)GetFuncionAddress(hModule, "PackFiles", typeof(FPackCallback));
            if (PackFiles == null)
            {
                MyMsgBox("Invalid plugin: \"" + textBoxPlugin.Text + "\"");
                return;
            }

            info = new SPackFileInfo[FileInfo.Count];
            info = (SPackFileInfo[])FileInfo.ToArray(typeof(SPackFileInfo));

            NeedStop = false;
            Worker.SetParam(this, hModule, info, PackFiles,
                            Path.GetFullPath(textBoxOutput.Text), FullInputPath, textBoxParam.Text);
            PackThread = new Thread(Worker.Pack);
            PackThread.Start();
        }
예제 #4
0
        private void btnPack_Click(object sender, EventArgs e)
        {
            if (PackThread.IsAlive)
            {
                NeedStop = true;
                return;
            }

            if (textBoxOutput.Text == null || textBoxOutput.Text == "")
                return;
            else if (FileInfo.Count == 0)
                return;

            IntPtr hModule;
            FPackCallback PackFiles;
            SPackFileInfo[] info;

            hModule = LoadLibraryExW(textBoxPlugin.Text, IntPtr.Zero, 0);
            if (hModule == IntPtr.Zero)
            {
                MyMsgBox("Can't load \"" + textBoxPlugin.Text + "\"");
                return;
            }

            PackFiles = (FPackCallback)GetFuncionAddress(hModule, "PackFiles", typeof(FPackCallback));
            if (PackFiles == null)
            {
                MyMsgBox("Invalid plugin: \"" + textBoxPlugin.Text + "\"");
                return;
            }

            info = new SPackFileInfo[FileInfo.Count];
            info = (SPackFileInfo[])FileInfo.ToArray(typeof(SPackFileInfo));

            NeedStop = false;
            Worker.SetParam(this, hModule, info, PackFiles, 
                Path.GetFullPath(textBoxOutput.Text), FullInputPath, textBoxParam.Text);
            PackThread = new Thread(Worker.Pack);
            PackThread.Start();
        }
예제 #5
0
        private UInt32 AddFilesToList(String file, String FullDirectoryName)
        {
            UInt32 Count;
            FileAttributes Attribute;

            Count = 0;

            try
            {
                Attribute = File.GetAttributes(file);
                if ((Attribute & FileAttributes.Directory) != 0)
                {
                    String[] Files = Directory.GetDirectories(file);

                    for (UInt32 i = 0; i != Files.Length; ++i)
                    {
                        Count += AddFilesToList(Files[i], FullDirectoryName);
                    }

                    Files = Directory.GetFiles(file);
                    for (UInt32 i = 0; i != Files.Length; ++i)
                    {
                        Count += AddFilesToList(Files[i], FullDirectoryName);
                    }
                }
                else
                {
                    String RelativePath;
                    RelativePath = Path.GetFullPath(file);

                    if (RelativePath.IndexOf(FullDirectoryName) != -1)
                        RelativePath = file.Substring(FullDirectoryName.Length);

//                    if (listBoxFiles.FindString(RelativePath) == CheckedListBox.NoMatches)
                    {
                        SPackFileInfo info;

                        info = new SPackFileInfo();
                        info.Compress = 0;
                        info.Encrypt = 0;
                        info.FileName = RelativePath;
                        FileInfo.Add(info);
//                        listBoxFiles.Items.Add(RelativePath);
                        ++Count;
                    }
                }
            }
            catch (Exception e)
            {
                MyMsgBox(e.ToString());
            }

            return Count;
        }