Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / неуловимое окно / 10 сообщений из 10, страница 1 из 1
20.10.2006, 23:24
    #34071426
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
Есть диалоговое окно, у которого нет заголовка, т.е. caption = “”. Как мне получить его handle? Если использовать EnumWindows, то оно не будет обнаружено, поэтому я решил воспользоваться EnumProcesses и EnumProcessModules. С их помощью я выясняю работает или нет exe-шник приложения, но как добраться до этого окна пока, что-то не допёр, натолкните на мыслю…

Спасибо.
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
21.10.2006, 01:21
    #34071464
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
Запускаешь spy++ что идет в комплекте с VC. Им выбираешь нужное окно. Spy++ покажет тебе имя класса окна. Потом отдаешь это имя класса в FindWindow первым параметром.
...
Рейтинг: 0 / 0
21.10.2006, 08:55
    #34071535
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
White OwlЗапускаешь spy++ что идет в комплекте с VC. Им выбираешь нужное окно. Spy++ покажет тебе имя класса окна. Потом отдаешь это имя класса в FindWindow первым параметром.
класс CDialog, только спай показывает его в виде #32770 (или что-то типа того), этого будет недостаточно, т.к. в этот момент могут работать и другие диалоги.
...
Рейтинг: 0 / 0
21.10.2006, 17:45
    #34071922
Тынц.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
Если прога ваша, то было бы удобно задать уникальное имя класса для этого диалога.
Если нет, то можно хэндл парента скормить FindWindowEx, тогда поиск будет осуществляться только для выбранного приложения.
...
Рейтинг: 0 / 0
23.10.2006, 08:11
    #34072918
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
Нет, к сожалению, прога не моя. На самом деле, в цикле CALLBACK EnumWindowProc было "небольшое недоразумение", которое приводило к тому, что окна, у которых не было заголовков функция не находила, я это исправил - все работает. Теперь не могу нажать на кнопку с помощью SendInput, написать текст в CEdit у меня получается, даже изменить саму надпись на кнопке, но нажатие не фиксируется... у кого-нибудь есть пример использования этой функции или может есть ссылка в MSDN'е (VS2005)? Заранее благодарен.
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
23.10.2006, 10:38
    #34073146
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
В MSDN, вроде, всё расписано... перед использованием надо заполнить 2 структуры: INPUT и MOUSEINPUT или KEYBDINPUT, можно с ними разобраться, но, по-моему, проще будет что-то вроде:

SendMessage(hWnd,WM_LBUTTONDOWN,0,0);
SendMessage(hWnd,WM_LBUTTONUP,0,0);

или ч/з mouse_event/keybd_event...
...
Рейтинг: 0 / 0
23.10.2006, 10:49
    #34073178
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
я делаю следующим образом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BOOL PushButton(HWND hButton)
{
	ASSERT(hButton);
	INPUT	   in[ 2 ];
	memset(in,  0 , sizeof(in));
	in[ 0 ].type	 = in[ 1 ].type = INPUT_KEYBOARD;
	in[ 0 ].ki.wVk	 = VK_RETURN;
	in[ 0 ].ki.dwFlags = KEYEVENTF_KEYUP;
	if(SendInput( 2 , in, sizeof(in)))
	    return TRUE;
	return FALSE;
}

но это не работает почему-то, предложенный вариант из 2 SendMessage тоже!
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
23.10.2006, 11:11
    #34073254
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
все - получилось с двумя Send'ами
Спасибо Dmitrii K. !
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
23.10.2006, 11:27
    #34073320
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
Кстати, GetLastError() на вашем коде после SendInput говорит 87, то бишь ERROR_INVALID_PARAMETER. Так что там шо то не то с параметрами для SendInput...
...
Рейтинг: 0 / 0
23.10.2006, 11:55
    #34073431
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неуловимое окно
А вот так всё ok (почему-то :) ).

SendInput(1, in, sizeof(in[0]));
SendInput(1, &in[1], sizeof(in[1]));

Только вот при этом должна быть в фокусе та кнопка, которую жмём...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / неуловимое окно / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]