/[RomCheater]/trunk/RomCheater/Docking/MemorySearch/SearchRangePatcher.cs
ViewVC logotype

Contents of /trunk/RomCheater/Docking/MemorySearch/SearchRangePatcher.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 477 - (show annotations) (download)
Mon Jun 3 18:35:45 2013 UTC (7 years, 3 months ago) by william
File size: 4492 byte(s)
revert r471: pass process informatin by using the process's PID, instead of passing the process as a reference

+ pass the process instead
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using RomCheater.Logging;
9 using System.Diagnostics;
10 using Sojaner.MemoryScanner.MemoryProviers;
11 using RomCheater.PluginFramework.Interfaces;
12
13
14 namespace RomCheater.Docking.MemorySearch
15 {
16 public partial class SearchRangePatcher : Form,
17 IAcceptsPlugin<IConfigPlugin>,
18 IAcceptsProcess<Process>,
19 IAcceptsProcessAndConfig
20 {
21 #region IAcceptsProcess<Process> Members
22 public Process AcceptedProcess { get; set; }
23 #endregion
24 #region IAcceptsPlugin<IConfigPlugin> Members
25 public IConfigPlugin AcceptedPlugin { get; set; }
26 #endregion
27 //PCSX2MemoryProvider provider;
28 //SearchDataTypes DataType;
29 //bool Unsigned = false;
30 private List<ResultDataType> PatchList;
31 public SearchRangePatcher(IAcceptsProcessAndConfig pconfig ,List<ResultDataType> patchList)
32 {
33 InitializeComponent();
34 this.AcceptedPlugin = pconfig.AcceptedPlugin;
35 this.AcceptedProcess = pconfig.AcceptedProcess;
36 PatchList = patchList;
37 int CurrentBitSize = 0;
38 // get the larget datatype
39 foreach (ResultDataType patch in PatchList)
40 {
41 if ((int)patch.ValueType > CurrentBitSize)
42 {
43 CurrentBitSize = (int)patch.ValueType;
44 }
45 }
46 switch (CurrentBitSize)
47 {
48 case (int)SearchDataTypes._8bits: txtValue.CreateTypeSize<byte>(); break;
49 case (int)SearchDataTypes._16bits: txtValue.CreateTypeSize<ushort>(); break;
50 case (int)SearchDataTypes._32bits: txtValue.CreateTypeSize<uint>(); break;
51 case (int)SearchDataTypes._64bits: txtValue.CreateTypeSize<ulong>(); break;
52 }
53
54 }
55
56 private void SearchPatcher_Load(object sender, EventArgs e)
57 {
58 txtValue.ReadOnly = false;
59 }
60 private void btnCancel_Click(object sender, EventArgs e)
61 {
62 this.Close();
63 }
64 private void btnOK_Click(object sender, EventArgs e)
65 {
66 using (GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this))
67 {
68 provider.OpenProvider();
69 foreach (ResultDataType patch in PatchList)
70 {
71 switch (patch.ValueType)
72 {
73 case SearchDataTypes._8bits:
74 if (patch.IsUnsigned) { provider.PatchMemory(patch.Address, (byte)txtValue.Value); }
75 else { provider.PatchMemory(patch.Address, (sbyte)txtValue.Value); }
76 break;
77 case SearchDataTypes._16bits:
78 if (patch.IsUnsigned) { provider.PatchMemory(patch.Address, (ushort)txtValue.Value); }
79 else { provider.PatchMemory(patch.Address, (short)txtValue.Value); }
80 break;
81 case SearchDataTypes._32bits:
82 if (patch.IsUnsigned) { provider.PatchMemory(patch.Address, (uint)txtValue.Value); }
83 else { provider.PatchMemory(patch.Address, (int)txtValue.Value); }
84 break;
85 case SearchDataTypes._64bits:
86 if (patch.IsUnsigned) { provider.PatchMemory(patch.Address, (ulong)txtValue.Value); }
87 else { provider.PatchMemory(patch.Address, (long)txtValue.Value); }
88 break;
89 }
90 }
91 provider.CloseProvider();
92 }
93 this.Close();
94 }
95
96 private void CopyToClipboard(string data)
97 {
98 Clipboard.SetData(DataFormats.Text, data);
99 }
100
101 private void btnCopyvaluetoClipboard_Click(object sender, EventArgs e)
102 {
103 this.CopyToClipboard(txtValue.Text);
104 }
105
106 private void SearchPatcher_KeyDown(object sender, KeyEventArgs e)
107 {
108 if (e.KeyCode == Keys.Enter) btnOK.PerformClick();
109 }
110 }
111 }

  ViewVC Help
Powered by ViewVC 1.1.22