コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }