Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 13:12   #1
overhandos
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 23
По умолчанию Заголовок hwnd IDE Default, PostMessage не работает

Нахожу нужный мне pid перебором процессов, далее перебирая окна пока не будет соответсвовать pid, в итоге получаю искомый hwnd, но название окна GetWindowText возращает IDE Default и PostMessage отказывается работать, хотя SetForegroundWindow свободно активирует окно по hwnd.
overhandos вне форума Ответить с цитированием
Старый 11.05.2012, 13:22   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

PostMessage врятли не работает.
скорее уж окно игнорирует ваше сообщение.

что шлете то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 14:01   #3
overhandos
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 23
По умолчанию

нажатие кнопок, занятная вещь что когда активирую окно и переназначаю hwnd на активное, все сразу встает на свои места и имя отображает адекватное и кнопки засылает.
overhandos вне форума Ответить с цитированием
Старый 11.05.2012, 14:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не всякое окно обрабатывает нажатия если не активно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 15:59   #5
overhandos
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 23
По умолчанию

Вообщем после выполнения

SetForegroundWindow(hwnd);
Sleep(1200);
hwnd = GetForegroundWindow();

я уже могу полноценно работать с окном, возможно ли както переназначить окно без его активации? или хотя бы чтото дополнить для корректной работы, может я чейто чужой hwnd зацепил?

Последний раз редактировалось overhandos; 11.05.2012 в 16:02.
overhandos вне форума Ответить с цитированием
Старый 11.05.2012, 16:27   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хендл может быть или тот, или не тот.
активация на это не влияет.

часто игры так делают.
хотя иногда их и можно хакнуть на этот момент.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 17:17   #7
overhandos
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 23
По умолчанию

ладно допустим , тогда вопрос к другому сводится как вычислить hwnd по handle'у?)
overhandos вне форума Ответить с цитированием
Старый 11.05.2012, 17:26   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

hwnd это и есть handle.

я вам говорю одно, а вы на другое.

вы нашли окно, у вас есть его хендл(раз активируете вы его), но окно не обязано реагировать на сообщения будучи неактивным.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.05.2012, 17:38   #9
overhandos
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 23
По умолчанию

ога понял, если допустим есть несколько окон одинакового имени аля 2+ запущенных калькуляторов, как мне захватить второе/третье окно, если FindWindow находит только первое окно?
overhandos вне форума Ответить с цитированием
Старый 11.05.2012, 17:41   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

EnumWindows
FindWindowEx
GetWindow

на выбор.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Interbase как правильно заполненить поле по Default tarakan1983 БД в Delphi 13 20.08.2011 09:53
C++ проблема с switch и default Script Помощь студентам 3 16.07.2011 16:07
PostMessage [Qj] Win Api 1 21.08.2009 20:29
default параметры NieL Общие вопросы Delphi 2 19.12.2008 17:16
Строка DEFAULT Altera Компоненты Delphi 2 07.03.2008 17:12