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); }
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; }
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(); }
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(); }
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; }