Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подтвердить диалоговое окно не активируя его / 10 сообщений из 10, страница 1 из 1
22.07.2006, 02:32
    #33871585
Danilo K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Можно ли подвердить диалоговое окно сторонней програмы
пока то находится на заднем плане?
Пробовал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 * нахожу хэндл кнопки "OK" пытаюсь имитировать клик:
    Call SendMessage(hBTOK, WM_LBUTTONDOWN, 0&, 0&)
    Call SendMessage(hBTOK, WM_LBUTTONUP, 0&, 0&)
    - нольэмоций
 * пробовал слать клавишу энтер (слал и кнопке и самой форме)
    Call SendMessage(hBTOK, WM_CHAR, 13&, 0&)
    - тоже нифига

Может существует какой-нибудь message, который
подтверждает форму. Типа "закрыть с утвердительным ответом"?
...
Рейтинг: 0 / 0
22.07.2006, 21:31
    #33872030
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Если эмулируешь клик, то форма должна быть поверх других, если это диалог то попробуй найти hwnd form-и и SendMessage(hwnd, WM_CLOSE, 0&, 0&)
...
Рейтинг: 0 / 0
22.07.2006, 23:27
    #33872092
Danilo K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
ArmenjЕсли эмулируешь клик, то форма должна быть поверх других
Это что - такое обязательное условие? Иначе клик нельзя сэмулировать?

Armenjесли это диалог то попробуй найти hwnd form-и и SendMessage(hwnd, WM_CLOSE, 0&, 0&)
Hwnd я, ясное дело, знаю - иначе и hwnd кнопки не смог бы найти.
WM_Close я тоже делал, да только форма закрывается, как буд-то бы нажали
"Отмена", а не "Ок". А мне нужно именно подтверждение.
...
Рейтинг: 0 / 0
23.07.2006, 08:39
    #33872219
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Для клика обязательно, если по дефаулту нужная тебе кнопка можешь попробовать так
Код: plaintext
1.
2.
3.
    Call SetForegroundWindow(dlgHwnd)
    SendKeys "{ENTER}", True
    Call SendMessage(dlgHwnd, WM_KEYLAST,  0 &,  0 &)
у меня этот вариант работает, с кликом тоже можешь попробовать SetForegroundWindow
...
Рейтинг: 0 / 0
23.07.2006, 08:43
    #33872220
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Попробовал вот такой вариант тоже работает:
Код: plaintext
1.
2.
3.
4.
5.
    Call SetForegroundWindow(dlgHwnd)
Call SendMessage( 10588 , WM_SETFOCUS,  0 &,  0 &)
    SendKeys "{ENTER}", True
    Call SendMessage(dlgHwnd, WM_KEYLAST,  0 &,  0 &)

...
Рейтинг: 0 / 0
23.07.2006, 08:46
    #33872221
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Call SendMessage(btnHwnd, WM_SETFOCUS, 0&, 0&)
...
Рейтинг: 0 / 0
23.07.2006, 16:59
    #33872418
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Код: plaintext
1.
Const BM_CLICK = &HF5 
SendMessage hButton, BM_CLICK,  0 &,  0 &
Работает даже для "запрещенных" и скрытых кнопок.
...
Рейтинг: 0 / 0
23.07.2006, 20:36
    #33872526
Armenj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Да так намного лучше.
...
Рейтинг: 0 / 0
24.07.2006, 19:27
    #33874995
Danilo K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Letter_D
Код: plaintext
1.
Const BM_CLICK = &HF5 
SendMessage hButton, BM_CLICK,  0 &,  0 &
Работает даже для "запрещенных" и скрытых кнопок.
О! Офигенно!!! Здорово - именно то, что нужно!
Вот мазафака! А че это ни в документации не описано,
ни в WIN32API.TXT нет!? Как о них ваще узнавать - о таких хитрых константах?
...
Рейтинг: 0 / 0
24.07.2006, 20:07
    #33875050
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подтвердить диалоговое окно не активируя его
Все описано. Выкинь свой WIN32API.TXT и ходи на MSDN (или выкачай себе PSDK).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/buttonreference/buttonmessages/bm_click.asp
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подтвердить диалоговое окно не активируя его / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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