public void SelectEntry(string reference = "") { int n = GetWordList().FindIndex(w => w.Contains(reference)); if (n < 1) { return; } //var el = AutomationElement.FromHandle(hwndlstWords); //var walker = TreeWalker.ContentViewWalker; //int i = 0; //for (var child = walker.GetFirstChild(el); child != null; child = walker.GetNextSibling(child)) // if (i++ == n) // { // (child.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern).Select(); // //SendMessage(hwndlstWords, WM_KEYDOWN, (int)VK_RETURN, 1); // //SendMessage(hwndlstWords, WM_KEYUP, (int)VK_RETURN, 1); // return; // } uint processid = 0; uint threadid = GetWindowThreadProcessId(hwndlstWords, out processid); //open process IntPtr vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false, processid); //allocate memory in this process address space IntPtr vPointer = VirtualAllocEx(vProcess, IntPtr.Zero, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); try { LVItem[] vItem = new LVItem[1]; vItem[0].stateMask = LVIS_FOCUSED | LVIS_SELECTED; vItem[0].state = LVIS_FOCUSED | LVIS_SELECTED; uint vNumberOfBytesRead = 0; //write the struct to the memory of target process WriteProcessMemory(vProcess, vPointer, Marshal.UnsafeAddrOfPinnedArrayElement(vItem, 0), Marshal.SizeOf(typeof(LVItem)), ref vNumberOfBytesRead); //let the target process read item text to this struct SendMessage(hwndlstWords, LVM_SETITEMSTATE, n, vPointer.ToInt32()); SendMessage(hwndlstWords, WM_KEYDOWN, (int)VK_RETURN, 1); SendMessage(hwndlstWords, WM_KEYUP, (int)VK_RETURN, 1); } finally { VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); CloseHandle(vProcess); } }
/// <summary> /// カスタマイズされたリストビューアイテムを生成 /// </summary> /// <returns></returns> public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(AreaName); lvit.SubItems.Add(Friend.ToString()); lvit.SubItems.Add(Foe.ToString()); lvit.SubItems.Add(Rank); lvit.SubItems.Add(ShipDropped); lvit.Info = this; return(lvit); }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Date.ToLongDateString(); if (PrevItem == null) { lvit.SubItems.Add(Fuel.ToString()); lvit.SubItems.Add(Ammo.ToString()); lvit.SubItems.Add(Steel.ToString()); lvit.SubItems.Add(Bauxite.ToString()); lvit.SubItems.Add(FastRepair.ToString()); lvit.SubItems.Add(FastBuild.ToString()); lvit.SubItems.Add(Devel.ToString()); lvit.SubItems.Add(Updater.ToString()); } else { int diff = Fuel - PrevItem.Fuel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Fuel, diff)); diff = Ammo - PrevItem.Ammo; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Ammo, diff)); diff = Steel - PrevItem.Steel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Steel, diff)); diff = Bauxite - PrevItem.Bauxite; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Bauxite, diff)); diff = FastRepair - PrevItem.FastRepair; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", FastRepair, diff)); diff = FastBuild - PrevItem.FastBuild; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", FastBuild, diff)); diff = Devel - PrevItem.Devel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Devel, diff)); diff = Updater - PrevItem.Updater; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Updater, diff)); } lvit.Info = this; return(lvit); }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(ItemName); lvit.SubItems.Add(ItemType); lvit.SubItems.Add(Resource.Fuel.ToString()); lvit.SubItems.Add(Resource.Ammo.ToString()); lvit.SubItems.Add(Resource.Steel.ToString()); lvit.SubItems.Add(Resource.Bauxite.ToString()); lvit.SubItems.Add(SecretaryShip); lvit.SubItems.Add(OfficeLv.ToString()); lvit.Info = this; return(lvit); }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(AreaName); lvit.SubItems.Add(QuestName); lvit.SubItems.Add(string.Join(",", Member)); lvit.SubItems.Add(SucceededMsg); lvit.SubItems.Add(Material.Fuel.ToString()); lvit.SubItems.Add(Material.Ammo.ToString()); lvit.SubItems.Add(Material.Steel.ToString()); lvit.SubItems.Add(Material.Bauxite.ToString()); lvit.SubItems.Add(string.Join(",", Item)); lvit.Info = this; return(lvit); }
private List <string> GetWordList() { //var el = AutomationElement.FromHandle(hwndlstWords); //var walker = TreeWalker.ContentViewWalker; //var words = new List<string>(); //for (var child = walker.GetFirstChild(el); child != null; child = walker.GetNextSibling(child)) //{ // var w = walker.GetNextSibling(walker.GetFirstChild(child)).Current.Name; // words.Add(w.Replace("-", "").Replace("・", "").Replace("・", "")); //} //return words; uint processid = 0; uint threadid = GetWindowThreadProcessId(hwndlstWords, out processid); //open process IntPtr vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false, processid); //get the number of list item int count = SendMessage(hwndlstWords, LVM_GETITEMCOUNT, 0, 0); //allocate memory in this process address space IntPtr vPointer = VirtualAllocEx(vProcess, IntPtr.Zero, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); var words = new List <string>(); try { for (int i = 0; i < count; i++) { byte[] buffer = new byte[100]; LVItem[] vItem = new LVItem[1]; vItem[0].mask = LVIF_TEXT; vItem[0].iItem = i; vItem[0].iSubItem = 1; vItem[0].cchTextMax = buffer.Length; vItem[0].pszText = (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVItem))); uint vNumberOfBytesRead = 0; //write the struct to the memory of target process WriteProcessMemory(vProcess, vPointer, Marshal.UnsafeAddrOfPinnedArrayElement(vItem, 0), Marshal.SizeOf(typeof(LVItem)), ref vNumberOfBytesRead); //let the target process read item text to this struct SendMessage(hwndlstWords, LVM_GETITEMTEXT, i, vPointer.ToInt32()); //read this struct ReadProcessMemory(vProcess, (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVItem))), Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0), buffer.Length, ref vNumberOfBytesRead); var w = Marshal.PtrToStringUni(Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0)); //add this item text to array words.Add(w.Replace("-", "").Replace("・", "").Replace("・", "")); } } finally { VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); CloseHandle(vProcess); } return(words); }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Date.ToLongDateString(); if (PrevItem == null) { lvit.SubItems.Add(Fuel.ToString()); lvit.SubItems.Add(Ammo.ToString()); lvit.SubItems.Add(Steel.ToString()); lvit.SubItems.Add(Bauxite.ToString()); lvit.SubItems.Add(FastRepair.ToString()); lvit.SubItems.Add(FastBuild.ToString()); lvit.SubItems.Add(Devel.ToString()); lvit.SubItems.Add(Updater.ToString()); } else { int diff = Fuel - PrevItem.Fuel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Fuel, diff)); diff = Ammo - PrevItem.Ammo; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Ammo, diff)); diff = Steel - PrevItem.Steel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Steel, diff)); diff = Bauxite - PrevItem.Bauxite; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Bauxite, diff)); diff = FastRepair - PrevItem.FastRepair; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", FastRepair, diff)); diff = FastBuild - PrevItem.FastBuild; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", FastBuild, diff)); diff = Devel - PrevItem.Devel; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Devel, diff)); diff = Updater - PrevItem.Updater; lvit.SubItems.Add(string.Format("{0}{1:(+#);(-#); }", Updater, diff)); } lvit.Info = this; return lvit; }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(AreaName); lvit.SubItems.Add(QuestName); lvit.SubItems.Add(string.Join(",", Member)); lvit.SubItems.Add(SucceededMsg); lvit.SubItems.Add(Material.Fuel.ToString()); lvit.SubItems.Add(Material.Ammo.ToString()); lvit.SubItems.Add(Material.Steel.ToString()); lvit.SubItems.Add(Material.Bauxite.ToString()); lvit.SubItems.Add(string.Join(",", Item)); lvit.Info = this; return lvit; }
/// <summary> /// カスタマイズされたリストビューアイテムを生成 /// </summary> /// <returns></returns> public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(AreaName); lvit.SubItems.Add(Friend.ToString()); lvit.SubItems.Add(Foe.ToString()); lvit.SubItems.Add(Rank); lvit.SubItems.Add(ShipDropped); lvit.Info = this; return lvit; }
public System.Windows.Forms.ListViewItem CreateVirtualListViewItem() { LVItem lvit = new LVItem(); lvit.Text = Number.ToString(); lvit.SubItems.Add(Date.ToString()); lvit.SubItems.Add(ItemName); lvit.SubItems.Add(ItemType); lvit.SubItems.Add(Resource.Fuel.ToString()); lvit.SubItems.Add(Resource.Ammo.ToString()); lvit.SubItems.Add(Resource.Steel.ToString()); lvit.SubItems.Add(Resource.Bauxite.ToString()); lvit.SubItems.Add(SecretaryShip); lvit.SubItems.Add(OfficeLv.ToString()); lvit.Info = this; return lvit; }