private void readWriteAddressMemoryMenuItem_Click(object sender, EventArgs e) { PromptBox prompt = new PromptBox(); if (prompt.ShowDialog() == DialogResult.OK) { IntPtr address = new IntPtr(-1); IntPtr regionAddress = IntPtr.Zero; long regionSize = 0; bool found = false; try { address = ((long)BaseConverter.ToNumberParse(prompt.Value)).ToIntPtr(); } catch { PhUtils.ShowError("You have entered an invalid address."); return; } List<MemoryItem> items = new List<MemoryItem>(); foreach (MemoryItem item in _provider.Dictionary.Values) items.Add(item); items.Sort((i1, i2) => i1.Address.CompareTo(i2.Address)); int i = 0; foreach (MemoryItem item in items) { if (item.Address.CompareTo(address) > 0) { MemoryItem regionItem = items[i - 1]; listMemory.Items[regionItem.Address.ToString()].Selected = true; listMemory.Items[regionItem.Address.ToString()].EnsureVisible(); regionAddress = regionItem.Address; regionSize = regionItem.Size; found = true; break; } i++; } if (!found) { PhUtils.ShowError("Unable to find the memory address."); return; } MemoryEditor m_e = MemoryEditor.ReadWriteMemory(_pid, regionAddress, (int)regionSize, false, new Program.MemoryEditorInvokeAction(delegate(MemoryEditor f) { f.Select(address.Decrement(regionAddress).ToInt64(), 1); })); } }
private MfsCellId GetCellId(IntPtr cellView) { IntPtr view; view = this.GetBlock(cellView); return new MfsCellId( _views2[view].BlockId, (ushort)(cellView.Decrement(view).ToInt32() / _cellSize) ); }