private static string GetGumpType(IntPtr pHandle, IntPtr gHandle) { byte[] data = new byte[128]; IntPtr stringAddress = (IntPtr)GumpHelper.GetUINT(pHandle, gHandle, 8); if (stringAddress == IntPtr.Zero) return ""; Memory.Read(pHandle, stringAddress, data, true); for (int x = 1; x < data.Length; x++) { if (data[x] == 0) { return ASCIIEncoding.ASCII.GetString(data, 0, x); } } return ""; }
public static GumpInfo[] GetGumpList(int client) { ClientInfo ci; List <GumpInfo> gumpList = new List <GumpInfo>(); if (ClientInfoCollection.GetClient(client, out ci)) { gumpList.Add(new GumpInfo(ci.Handle, ci.GumpFunctionCaveAddress, ci.TopGumpHandle, ci.DateStamp)); IntPtr[] gumpHandles = GumpHelper.GetGumpHandles(ci.Handle, ci.TopGumpHandle); foreach (IntPtr i in gumpHandles) { gumpList.Add(new GumpInfo(ci.Handle, ci.GumpFunctionCaveAddress, i, ci.DateStamp)); } } return(gumpList.ToArray()); }
public GumpInfo(IntPtr processHandle, IntPtr gumpFunctionCaveAddress, IntPtr gumpHandle, int datestamp) { myProcessHandle = processHandle; myGumpFunctionCaveAddress = gumpFunctionCaveAddress; myGumpHandle = gumpHandle; myType = GetGumpType(processHandle, gumpHandle); myXAddress = (IntPtr)((ulong)gumpHandle + 0x34); myYAddress = (IntPtr)((ulong)gumpHandle + 0x38); myWidth = GumpHelper.GetINT(processHandle, gumpHandle, 0x24); myHeight = GumpHelper.GetINT(processHandle, gumpHandle, 0x28); myID = GetID(processHandle, gumpHandle, myType); mySerial = GetSerial(processHandle, gumpHandle, myType, datestamp); myGumpHandleBytes = BitConverter.GetBytes((uint)gumpHandle); myDateStamp = datestamp; List<GumpInfo> gumpInfoList = new List<GumpInfo>(); IntPtr[] gumpHandles = GumpHelper.GetSubGumps(processHandle, gumpHandle); foreach (IntPtr i in gumpHandles) { gumpInfoList.Add(new GumpInfo(processHandle, gumpFunctionCaveAddress, i, datestamp)); } mySubGumps = gumpInfoList.ToArray(); }
private static byte[] GetVTableBytes(IntPtr pHandle, IntPtr gHandle) { return(BitConverter.GetBytes((GumpHelper.GetUINT(pHandle, gHandle)))); }