Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 07.11.2013, 01:33   #16
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Пытался разобраться без вашей помощи но впал в отчаянье. Перечислить все окна процесса мы можем. Можем и найти и вывести окно по имени класса. Но как перечислить найденные окна по имени класса, если их больше чем одно?
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 07:04   #17
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Пару вопросов на счет окон.

public static List<IntPtrFindWindowsByClassInProcess(string windowClassNamestring processName)
        {
            var 
windows = new List<IntPtr>();
            var 
processWindowHandles EnumerateProcessWindowHandles(
                
Process.GetProcessesByName("explorer").First().Id);

            foreach (var 
handle in processWindowHandles)
            {
                if (
GetWindowClassName(handle).StartsWith(windowClassName))
                {
                    
windows.Add(handle);
                }
            }

            return 
windows;
        } 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
riot (07.11.2013)
Старый 07.11.2013, 09:10   #18
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Спасибо большое. Скажу честно не сразу удалось правильно переписать код под изменённую функцию ))
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 09:53   #19
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

            try
            {
                var windows = new List<IntPtr>();

                foreach (var hwnd in EnumerateProcessWindowHandles(Process.GetProcessesByName("processXXX").First().Id))
                {
                    if (GetWindowClassName(hwnd).StartsWith("XXXClass"))
                        {
                            windows.Add(hwnd);
                            Console.WriteLine("Finded Name: " + GetWindowName(hwnd));
                            Console.WriteLine("Finded Class: " + GetWindowClassName(hwnd));
                            Console.WriteLine(hwnd);
                            Console.WriteLine();

                            IntPtr hwndchat = FindWindowEx(hwnd, IntPtr.Zero, "XXXchildClass", "");
                            if (hwndchat != IntPtr.Zero)
                            {
                                Console.WriteLine("Finded child Name: " + GetWindowName(hwndchat));
                                Console.WriteLine("Finded child Class: " + GetWindowClassName(hwndchat));
                                Console.WriteLine(hwndchat);
                                Console.WriteLine();
                                Console.WriteLine();
                            }
                            else
                            {
                                Console.WriteLine("Не найдено дочернего окна");
                            }
                        }
                }
            }
            catch
            {
                Console.WriteLine("Не запущен");
            }
Стал вопрос о присвоении каждому дочернему окну своего указателя
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 13:01   #20
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Пару вопросов на счет окон.

Что за указателя?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 14:15   #21
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Ну чтобы к каждому окну из hwndchat обращаться отдельно
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 14:19   #22
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Ну а указатель это номер который получает каждое окно при запуске от системы случайно.

Ну вроде как то так...
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 14:42   #23
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Пару вопросов на счет окон.

Ну так hwndchat и есть хэндл окна, обращайся к нему через него.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 19:07   #24
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

                foreach (var hwnd in EnumerateProcessWindowHandles(Process.GetProcessesByName("Procces").First().Id))
                {
                    if (GetWindowClassName(hwnd).StartsWith("Class"))
                        {
                            windows.Add(hwnd);
                            Console.WriteLine("Finded Name: " + GetWindowName(hwnd));
                            Console.WriteLine("Finded Class: " + GetWindowClassName(hwnd));
                            Console.WriteLine(hwnd);
                            Console.WriteLine();

                            IntPtr hwndchat = FindWindowEx(hwnd, IntPtr.Zero, "PokerStarsChatClass", "");
                            if (hwndchat != IntPtr.Zero)
                            {
                                Console.WriteLine("Finded child Name: " + GetWindowName(hwndchat));
                                Console.WriteLine("Finded child Class: " + GetWindowClassName(hwndchat));
                                Console.WriteLine(hwndchat);
                                Console.WriteLine();
                                Console.WriteLine();

                                string stol1 = Convert.ToString(hwndchat);

                                Console.WriteLine(stol1);
                            }
                            else
                            {
                                Console.WriteLine("Не найдено дочернего окна");
                            }
                        }
                }
В переменную stol1 записывается хэндл последнего найденного окна, а как быть с другими?
(Offline)
 
Ответить с цитированием
Старый 07.11.2013, 19:18   #25
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Пару вопросов на счет окон.

Создай поле ( http://msdn.microsoft.com/ru-ru/library/ms173118.aspx ) в своем классе например список (List<string>) и в него сохраняй.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
riot (07.11.2013)
Старый 07.11.2013, 19:34   #26
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Спасибо
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:20.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com