Автор Тема: [Окна, Диалоги] SendMessage в выпадающее меню на Delphi  (Прочитано 7760 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226
  • Репутация: 60
  • Пол: Мужской
    • Награды
Всем привет!
Решил добить контроллы в программен на Delphi.
Есть кнопка красная, вобщем щас работаю с ней через MouseClick, после этого выпадает меню с такими параметрами:
(нажмите для показа/скрытия)
дальше кликается так же на пункт.

Щас начал осваивать работу в фоновом режиме.
Код: AutoIt [Выделить]
#Include <WinAPI.au3>

Global $hWnd974 = ControlGetHandle(WinGetHandle('ПРОГА'), '', '[CLASS:TToolbar97;INSTANCE:4]');Менюшко с +

DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd974, 'int', 0x0201, 'int', 1, 'dword', _WinAPI_MakeLong('12', '16'))
 

Этот код вызывает меню, после чего тормозится выполнение скрипта, пока это меню не закрыть, кликнув мышко по нему или в любое место в проге.
Winspector, ничего полезного не показал(
1. Почему блокируется выполнение скрипта? иначе в принципе можно было бы использовать такой же клик но уже ниже по пункту меню...
2. Как можно выбрать пункт меню, через SendMessage или  функции Control ...?


PS Пробывал работать с hwnd этой менюшки отдельно, тоже не вышло, ни ControlClick, ни Focus.
« Последнее редактирование: Январь 18, 2010, 22:05:54 от r35p3ct »

Русское сообщество AutoIt

[Окна, Диалоги] SendMessage в выпадающее меню на Delphi
« Отправлен: Январь 18, 2010, 20:26:28 »

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 226

  • Автор темы
  • Репутация: 60
  • Пол: Мужской
    • Награды
Первый вопрос решен.
Остался вопрос с выбором пункта. Как выбрать?
Текст можно получить с помощью:
Код: AutoIt [Выделить]
Но как выбрать нужный пункт с помощью _GUICtrlMenu я так и не понял, выделить можно, а кликнуть?

ЗЫ WinMenuSelectItem не работает. Номера ID у пунктов нет.


Добавлено: Март 06, 2010, 17:05:36
Работает так:
Код: AutoIt [Выделить]
$hWnd  = WinGetHandle("[CLASS:#32768]")
$hMenu = _SendMessage($hWnd, '0x01E1', 0, 0)
$aRect = _GUICtrlMenu_GetItemRect($hWnd, $hMenu, 0);0-первый пункт меню
ControlClick('','',$hWnd,'',1,$aRect[0],$aRect[1])

Специальной комманды походу нет.
« Последнее редактирование: Март 15, 2010, 09:51:09 от r35p3ct, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: [Окна, Диалоги] SendMessage в выпадающее меню на Delphi
« Ответ #1 Отправлен: Март 06, 2010, 16:23:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
5230 Просмотров
Последний ответ Февраль 05, 2010, 13:06:17
от CreatoR
8 Ответов
7546 Просмотров
Последний ответ Март 12, 2011, 19:36:08
от WSWR
2 Ответов
3320 Просмотров
Последний ответ Июнь 24, 2011, 23:37:16
от k790
4 Ответов
4375 Просмотров
Последний ответ Февраль 17, 2012, 12:26:17
от glorycpsu
3 Ответов
2470 Просмотров
Последний ответ Ноябрь 11, 2013, 16:12:33
от MnM
4 Ответов
2628 Просмотров
Последний ответ Февраль 26, 2014, 00:33:31
от Zalman1980
2 Ответов
1420 Просмотров
Последний ответ Июнь 26, 2014, 18:05:18
от C2H5OH
18 Ответов
4657 Просмотров
Последний ответ Июль 07, 2014, 16:41:54
от vitaliy4us
0 Ответов
1084 Просмотров
Последний ответ Февраль 09, 2015, 15:38:08
от damien2008
6 Ответов
998 Просмотров
Последний ответ Апрель 10, 2018, 12:31:53
от Tapok