ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater/Docking/UI/UIMemoryViewer.cs
(Generate patch)

Comparing trunk/RomCheater/Docking/UI/UIMemoryViewer.cs (file contents):
Revision 202 by william, Thu May 31 08:38:16 2012 UTC vs.
Revision 203 by william, Thu May 31 09:03:53 2012 UTC

--- trunk/RomCheater/Docking/UI/UIMemoryViewer.cs	2012/05/31 08:38:16	202
+++ trunk/RomCheater/Docking/UI/UIMemoryViewer.cs	2012/05/31 09:03:53	203
@@ -15,6 +15,7 @@ namespace RomCheater.Docking.UI
 {
     public partial class UIMemoryViewer : UserControl, IProcessConfig, IAcceptsPlugin<IConfigPlugin>//, IAcceptsMemoryRange
     {
+        private bool first_load = true;
         public UIMemoryViewer()
         {
             InitializeComponent();
@@ -43,7 +44,21 @@ namespace RomCheater.Docking.UI
 
             txtAddresses.MouseWheel += new MouseEventHandler(txtAddresses_MouseWheel);
             txtData.MouseWheel += new MouseEventHandler(txtData_MouseWheel);
-        } 
+        }
+
+        private void GetFirstNonZeroByte()
+        {
+            if (!DesignMode)
+            {
+                Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader();
+                reader.ReadProcess = this.AcceptedProcess;
+                reader.OpenProcess();
+                uint addr = 0;
+                reader.ReadFirstNonZeroByte(MemoryStart, MemorySize, out addr);
+                GotoAddress(addr);
+            }
+        }
+
         #region IProcessConfig Members
         private Process _AcceptedProcess;
         public Process AcceptedProcess
@@ -54,6 +69,8 @@ namespace RomCheater.Docking.UI
                 _AcceptedProcess = value;
                 update_timer.Enabled = (value != null);
                 UpdateEnabled = update_timer.Enabled;
+                if (value != null)
+                    GetFirstNonZeroByte();
             }
         }
         #endregion