public static List <ChatRoom> GetOpenChatRooms() { var results = new List <ChatRoom>(); var winmx = WinMX.GetWinMXWindow(); if (winmx == IntPtr.Zero) { return(results); } // Check for inner chat windows. var inner = Imports.FindWindowEx(winmx, IntPtr.Zero, null, null); while (inner != IntPtr.Zero) { var title = new StringBuilder(100); Imports.GetWindowText(inner, title, 100); if (title.ToString().Contains("on WinMX Peer Network")) { results.Add(new ChatRoom() { RoomName = title.ToString().Replace(" on WinMX Peer Network", ""), Window = inner }); } inner = Imports.FindWindowEx(winmx, inner, null, null); } // Check for floating chat windows. var top = Imports.FindWindowEx(IntPtr.Zero, IntPtr.Zero, null, null); while (top != IntPtr.Zero) { var title = new StringBuilder(100); Imports.GetWindowText(top, title, 100); if (title.ToString().Contains("on WinMX Peer Network")) { results.Add(new ChatRoom() { RoomName = title.ToString().Replace(" on WinMX Peer Network", ""), Window = top }); } top = Imports.FindWindowEx(IntPtr.Zero, top, null, null); } return(results); }
public static IntPtr GetChannelListWindow() { var winmx = WinMX.GetWinMXWindow(); if (winmx == IntPtr.Zero) { return(IntPtr.Zero); } // Check for inner window var inner = Imports.FindWindowEx(winmx, IntPtr.Zero, null, null); while (inner != IntPtr.Zero) { var title = new StringBuilder(100); Imports.GetWindowText(inner, title, 100); if (title.ToString().Contains("WinMX Peer Network") && !title.ToString().Contains("on WinMX Peer Network")) { return(inner); } inner = Imports.FindWindowEx(winmx, inner, null, null); } // Check for floating window var channels = Imports.FindWindowEx(IntPtr.Zero, IntPtr.Zero, null, null); while (channels != IntPtr.Zero) { var Title = new StringBuilder(100); Imports.GetWindowText(channels, Title, 100); if (Title.ToString() == "WinMX Peer Network") { return(channels); } channels = Imports.FindWindowEx(IntPtr.Zero, channels, null, null); } // Failed return(IntPtr.Zero); }