Автор Тема: ControlCommand в ComboBox в скрытом окне  (Прочитано 913 раз)

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

Оффлайн Marjel [?]

  • Новичок
  • *
  • Сообщений: 9
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Подскажите, пожалуйста.
В окне combobox. С помощью ControlCommand посылаю текст нужного пункта. Если окно видимо - всё работает, пункт выбирается и скрипт выполняет то что требуется. Если окно скрыто, то в комбобоксе появляется значение но не исполняется, тоесть не происходит то что должно при выборе данного пункта. Пробовал делать активным окно, посылал все возможные фокусы. Работает только если делать окно видимым на секнду, show непосредственно перед controlcommand а затем заново скрывать. Но ведь так не должно быть?

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

ControlCommand в ComboBox в скрытом окне
« Отправлен: Август 03, 2017, 02:21:45 »

Оффлайн Marjel [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ControlCommand в ComboBox в скрытом окне
« Ответ #1, Отправлен: Август 03, 2017, 14:30:38 »
ок, пример:

Код: AutoIt [Выделить]
#RequireAdmin
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <MouseTrapEvent.au3>

$basewind=GUICreate("20000", 200, 100)
$chosf=GUICtrlCreateCombo("", 35, 35, 55, 20)

GUICtrlSetData($chosf, "P1|P2|P3|P4|P5")

GUISetState(@SW_SHOW, $basewind)

_MouseTrapEvent("XClick1",  "XC1")
_MouseTrapEvent("XClick2",  "XC2")

While 1

$nMsg = GUIGetMsg()

Select

Case $nMsg=$GUI_EVENT_CLOSE
        Exit
Case $nMsg=$chosf
        chosex()

EndSelect

WEnd

Func XC1(); первая боковая кнопка мыши скрывает/отображает окно

If Not(BitAND(WinGetState($basewind),2)) Then
    GUISetState(@SW_SHOW, $basewind)
else
    GUISetState(@SW_HIDE, $basewind)
EndIf

return 1

EndFunc

Func XC2(); вторая боковая кнопка мыши отправляет значение в комбобокс

ControlCommand($basewind, "", $chosf, "SelectString", "P3")

return 1

EndFunc

Func chosex()

Beep (1600,150)

EndFunc
 


Если при видимом окне нажать вторую боковую кнопку мыши то в комбобокс отправится "P3" и произойдёт бип. Если же сначала скрыть окно первой боковой клавишей, а потом нажать вторую боковую, то бипа не происходит. Если после этого снова отобразить окно то видим что нужное значение было отправлено (при условии офк, что перед скрытием был выставлен другой P), но дальше дело не пошло.

Элементарная вещь же вроде. Где я туплю???

Помечен как лучший ответ пользователем Marjel Отправлен Август 03, 2017, 17:28:32

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3975
  • Репутация: 1056
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ControlCommand в ComboBox в скрытом окне
« Ответ #2, Отправлен: Август 03, 2017, 16:34:30 »
Marjel
OffTopicЧтобы запустить ваш пример мне нужно:
1. Купить мышь с боковыми кнопками
2. Перерыть инет в поисках MouseTrapEvent.au3
3. Купить/подключить колонки/наушники, чтобы услышать звук
или переписать ваш пример, что делает его бесполезным.
Постарайтесь в следующий раз приводить примеры попроще, чтобы они запускались "из коробки".

Цитировать
Но ведь так не должно быть?
Именно так и должно быть при использовании функции GuiSetState. В скрытом окне некоторые события не обрабатываются: post #11
Чтобы скрыть от AutoIt факт скрытия окна :) используйте _WinAPI_ShowWindow
Код: AutoIt [Выделить]
If Not(BitAND(WinGetState($basewind),2)) Then
;~     GUISetState(@SW_SHOW, $basewind)
    _WinAPI_ShowWindow($basewind, @SW_SHOW)
else
;~     GUISetState(@SW_HIDE, $basewind)
    _WinAPI_ShowWindow($basewind, @SW_HIDE)
EndIf


Оффлайн Marjel [?]

  • Новичок
  • *
  • Сообщений: 9

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ControlCommand в ComboBox в скрытом окне
« Ответ #3, Отправлен: Август 03, 2017, 17:30:23 »
Спасибо огромное!

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

Re: ControlCommand в ComboBox в скрытом окне
« Ответ #3 Отправлен: Август 03, 2017, 17:30:23 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
4150 Просмотров
Последний ответ Ноябрь 22, 2009, 18:45:11
от Medic84
14 Ответов
7746 Просмотров
Последний ответ Декабрь 11, 2009, 22:24:16
от Medic84
0 Ответов
1992 Просмотров
Последний ответ Январь 01, 2011, 18:28:36
от lexaSF
4 Ответов
4322 Просмотров
Последний ответ Май 22, 2012, 19:19:55
от Вовчик55
7 Ответов
3403 Просмотров
Последний ответ Февраль 05, 2012, 21:46:36
от madmasles
0 Ответов
1722 Просмотров
Последний ответ Март 01, 2012, 17:19:47
от madmasles
0 Ответов
2288 Просмотров
Последний ответ Март 12, 2012, 17:48:30
от rollex
4 Ответов
2087 Просмотров
Последний ответ Июнь 13, 2014, 13:52:31
от joiner
2 Ответов
1186 Просмотров
Последний ответ Ноябрь 24, 2015, 23:28:22
от Dima1337
7 Ответов
826 Просмотров
Последний ответ Август 25, 2017, 12:54:29
от InnI