void OpenFile(string fileName) { if (!File.Exists(fileName)) { MessageBox.Show("File does not exist!"); return; } if (hexBox1.ByteProvider != null) { if (CloseFile() == DialogResult.Cancel) { return; } } try { FileByteProvider fileByteProvider = new FileByteProvider(fileName); fileByteProvider.Changed += new EventHandler(byteProvider_Changed); hexBox1.ByteProvider = fileByteProvider; _fileName = fileName; _lastFilename = _fileName; // DisplayText(fileName); } catch (Exception ex1) { MessageBox.Show(ex1.Message, "HexEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { ManageAbility(); } }
/// <summary> /// Saves the file at the given index - optimized for using an already open stream /// </summary> void Core_SaveFile(int index) { try { FileByteProvider file = FileHexBoxes[index].ByteProvider as FileByteProvider; file.ApplyChanges(); } catch (Exception ex) { Program.ShowError("The file could not be saved.", ex); } }
/// <summary> /// Opens a file. /// </summary> /// <param name="path">the file name of the file to open</param> void Core_OpenFile(string path) { if (!File.Exists(path)) { Program.ShowMessage("The file does not exist."); return; } try { FileByteProvider file; try { // try to open in write mode file = new FileByteProvider(path); file.Changed += new EventHandler(HexBox_ByteProvider_Changed); file.LengthChanged += new EventHandler(HexBox_ByteProvider_LengthChanged); } catch (IOException) // write mode failed { try { // try to open in read-only mode file = new FileByteProvider(path, true); if (Program.ShowQuestion("This file can only be opened as read-only. Proceed ?") == DialogResult.No) { file.Dispose(); return; } } catch (IOException ex) // read-only also failed { // file cannot be opened Program.ShowError("The attempt to open the file has failed.", ex); return; } } Core_CreateTabPage(file, path); Menu_File_RecentFiles.AddFile(path); } catch (Exception ex) { Program.ShowError(ex); return; } }
/// <summary> /// Saves the current file. /// </summary> void SaveFile() { if (hexBox1.ByteProvider == null) { return; } try { if (File.Exists(_fileName)) { File.Copy(_fileName, _fileName + "-backup" + DateTime.Now.Ticks.ToString()); FileByteProvider fileByteProvider = hexBox1.ByteProvider as FileByteProvider; DynamicByteProvider dynamicByteProvider = hexBox1.ByteProvider as DynamicByteProvider; DynamicFileByteProvider dynamicFileByteProvider = hexBox1.ByteProvider as DynamicFileByteProvider; if (fileByteProvider != null) { fileByteProvider.ApplyChanges(); } else if (dynamicFileByteProvider != null) { dynamicFileByteProvider.ApplyChanges(); } else if (dynamicByteProvider != null) { byte[] data = dynamicByteProvider.Bytes.ToArray(); using (FileStream stream = File.Open(_fileName, FileMode.Create, FileAccess.Write, FileShare.Read)) { stream.Write(data, 0, data.Length); } dynamicByteProvider.ApplyChanges(); } } } catch (Exception ex1) { MessageBox.Show(ex1.Message, "T5Suite 2.0", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { ManageAbility(); } }
private void buttonHex_Click(object sender, EventArgs e) { if (byteProvider != null) { byteProvider.Dispose(); } OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Filter = "Hex文件|*.hex|所有文件|*.*"; if (fileDialog.ShowDialog() == DialogResult.OK) { File.Copy(fileDialog.FileName, "./temp/" + Path.GetFileName(fileDialog.FileName), true); byteProvider = new FileByteProvider("./temp/" + Path.GetFileName(fileDialog.FileName)); hexBoxPRG.ByteProvider = byteProvider; textBoxHex.Text = fileDialog.FileName; FileInfo fileInfo = new FileInfo("./temp/" + Path.GetFileName(fileDialog.FileName)); textBoxHexSize.Text = (fileInfo.Length / 1024).ToString() + "KB"; } }
/// <summary> /// Creates a new TabPage for the given file /// </summary> void Core_CreateTabPage(FileByteProvider file, string fileName) { TabPage tabpage = new TabPage(); tabpage.Name = "FileTabPage" + FileTabPages.Count; tabpage.Text = fileName; tabpage.Padding = new Padding(3); tabpage.Size = MainTabPage.Size; HexBox hexbox = new HexBox(); hexbox.ByteProvider = file; hexbox.Name = "MainHexBox"; hexbox.LineInfoVisible = true; hexbox.ColumnInfoVisible = true; hexbox.StringViewVisible = true; hexbox.VScrollBarVisible = true; hexbox.UseFixedBytesPerLine = true; hexbox.Location = new Point(-2, 0); hexbox.Size = MainHexBox.Size; hexbox.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right); hexbox.BorderStyle = BorderStyle.None; hexbox.TabIndex = 0; hexbox.SelectionStartChanged += new System.EventHandler(this.HexBox_SelectionStartChanged); hexbox.SelectionLengthChanged += new System.EventHandler(this.HexBox_SelectionLengthChanged); hexbox.CurrentLineChanged += new System.EventHandler(this.HexBox_Position_Changed); hexbox.CurrentPositionInLineChanged += new EventHandler(this.HexBox_Position_Changed); hexbox.Copied += new System.EventHandler(this.HexBox_Copy); hexbox.CopiedHex += new System.EventHandler(this.HexBox_CopyHex); tabpage.Controls.Add(hexbox); FilePaths.Add(fileName); FileTabPages.Add(tabpage); FileHexBoxes.Add(hexbox); Tabs_Control.Controls.Add(tabpage); Tabs_Control.SelectTab(Tabs_Control.TabCount - 1); hexbox.Focus(); }
void OpenFile(string fileName) { if (!File.Exists(fileName)) { MessageBox.Show("File does not exist!"); return; } if (hexBox1.ByteProvider != null) { if (CloseFile() == DialogResult.Cancel) return; } try { FileByteProvider fileByteProvider = new FileByteProvider(fileName); fileByteProvider.Changed += new EventHandler(byteProvider_Changed); hexBox1.ByteProvider = fileByteProvider; _fileName = fileName; _lastFilename = _fileName; // DisplayText(fileName); } catch (Exception ex1) { MessageBox.Show(ex1.Message, "HexEditor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { ManageAbility(); } }
public DumpHandle(DumpUnit unit) { this.Unit = unit; this.Provider = new FileByteProvider(unit.path); }