PDA

Показать полную графическую версию : [решено] Временное отключение HotKeySet


sashadeg
27-06-2009, 21:47
Нужно чтобы HotKeySet на время приостановили свою деятельность если окно находится НЕ в СВЁРНУТОМ состоянии...
Врядли это возможно, но всётаки решил спросить...

=========================

Исправил...

Creat0R
27-06-2009, 21:57
Врядли это возможно »
Возможно ещё как - Нужно проверять в функции хоткея состояние окна WinGetState().

Как это сделать? Очень просто - посмотреть в справке что возвращает WinGetState при свёрнутом окне, и проверить через BitAnd...

Func MyHotKeyFunc()
If Not BitAND(WinGetState($hGUI), тут то, что написано в справке для свёрнутого окна) Then Return ;окно НЕ свёрнуто

;тут выполнение кода по хоткею
EndFunc

proxy
27-06-2009, 21:57
Если для AutoIt окна:
Removed

Creat0R
27-06-2009, 22:04
proxy, Ты извини конечно, но код я потёр в твоём посте (если что скажи, код я сохранил в буфер обмена :) ) - Причина редактирования:
Пора sashadeg'e учиться пользоваться справкой
Вот так постоянно кидать готовые примеры и решения, это не выход, я бы лично никогда не научился кодить на AutoIt если бы мне вот так давали всё готовое.. хотя иногда на примере лучше объяснить, но это не тот случай.

И кстати, зачем ты в цикле решил проверять состояние окна, можно же ведь в самой функции ;)

Если для AutoIt окна »
И это кстати sashadeg, тоже не уточнил, т.ч ждём его ответа.

proxy
27-06-2009, 22:08
И кстати, зачем ты в цикле решил проверять состояние окна, можно же ведь в самой функции »
поспешил, необдумал ))

Ты извини конечно, но код я потёр в твоём посте »
претензий нет - учусь доверять опыту ))

Вот так постоянно кидать готовые примеры и решения, это не выход, я бы лично никогда не научился кодить на AutoIt если бы мне вот так давали всё готовое.. хотя иногда на примере лучше объяснить, но это не тот случай. »
:yes: тут правдо еще один аспект, иногда, интересно ж самому реализовать задачу и конечно же поделиться решением ))

sashadeg
27-06-2009, 22:38
что возвращает WinGetState при свёрнутом окне »

Это я знаю, что 16...
MyHotKeyFunc() »
А что это заменяет HotKeySet ??? нифигасе... =)
;тут выполнение кода по хоткею »
???

ждём его ответа »
Да для AutoIt окна...

Извините, если что.... Просто я AutoIt с середины февраля этого года начал использовать... а до этого ВООБЩЕ ничего и никакого языка даже мельком не знал... Да и на AutoIt не обратил внимания, еслибы не send()...

Creat0R
27-06-2009, 22:50
иногда, интересно ж самому реализовать задачу и конечно же поделиться решением »
Да, но это же супер тривиальная задача, смысл?

А что это заменяет HotKeySet ? »
Мда... Как всё запущенно... Это функция, которую указывают в HotKeySet, или вы ещё не поняли как работают функции в аутоите?

??? »
Что не ясно? Там вместо комментария указываете действие, которые указывали в функции по хоткею.

Да и вообще... судя по сказанному в первом посте:

Нужно чтобы HotKeySet не стимулировал нажатия клавиш »

Я начинаю сомневаться в том, что вы понимаете для чего сия функция - она не стимулирует нажатия клавиш, она вызывает определённую функцию при нажатии определённых клавиш пользователем.

Возможно имелась в виду Send() а не HotKeySet()?


я AutoIt с середины февраля этого года начал использовать... а до этого ВООБЩЕ ничего и никакого языка даже мельком не знал »
Вот теперь вы попали, придётся учить до конца :biggrin: - И если начали учить недавно, это ещё не значит что для вас не существует справки и прочей внешней информации, кой в ести море!

sashadeg
27-06-2009, 23:00
Я начинаю сомневаться в том, что вы понимаете для чего сия функция - она не стимулирует нажатия клавиш »
аааа.... Чёрт!!! простите, я перепутал, просто щас только что с одним парнем разговаривали про AutoIt, про send()... Вот я и збрякал не то... вы ещё не поняли как работают функции в аутоите? »
Ты прав... (не представляешь себе, как я был рад когда узнал что msgbox возвращает определённые цифры)

Вот теперь вы попали »
Да я знаю... 3 день подряд от компа не отхожу (делаю перерыв на 8 часов, когда на работу ухожу xD) прихожу и опять... за 3 суток спал 9 часов... (подумать только, что я могу делать 3 суток с таким "ОГРОМНЫМ" обьёмом знаний :) )

===============
Хватит ко мне на Вы обращаться... ты меня лет на 9-10 старше... Или Вы такой вежливый? ;)

Creat0R
27-06-2009, 23:21
Ты прав... (не представляешь себе, как я был рад когда узнал что msgbox возвращает определённые цифры) »
Я про UDF, пользовательские функции...

По поводу Send... в недавних версиях появилась такая класная функция, называется SendKeepActive(), она предназначена как раз (ну, почти, см. далее) для твоего случая:


;Это позволит активировать окно пока необходимо посылать нажатия
SendKeepActive("Заголовок")

While 1
Send("aaabbbccc")
Sleep(1000)
WEnd

Но если нужно посылать нажатия только если окно активное минимизировано, то тут как раз и нужна пользовательская функция:


;Вызов функции:
;"aaabbbccc" это посылаемы символы
;0 это флаг функции Send()
;а "Заголовок Окна" это... ну оно вроде и так понятно что это :)
_SendEx("aaabbbccc", 0, "Заголовок Окна")

;Этот блок ставим в конец скрипта,
;а то что выше можно дублировать и изменять параметры,
;это и называется вызов заданной функции
Func _SendEx($sKeys, $iFlag=0, $sTitle="[ACTIVE]")
If Not BitAND(WinGetState($sTitle), 16) Then Return 0

Send($sKeys, $iFlag)
EndFunc

Хватит ко мне на Вы обращаться... ты меня лет на 9-10 старше... Или Вы такой вежливый? »
Ну во-первых, я и вправду (стараюсь быть :)) вежливый. Я просто не знаю сколько кому лет, вот и предпочитаю всех на «Вы» называть, чтобы не гадать ;)

sashadeg
27-06-2009, 23:38
нужно посылать нажатия только если окно активное минимизировано »
Мы друг друга видимо не поняли... Мне send() не нужно... В моей программе кнопки numpad используются как горячии клавиши... Но когда окно программы РАЗВЕРНУТО, то не желательно чтобы они всё ещё были "горячими", а на время приостановили свою деятельность назначенную им HotKeySet

P.S. Я делаю программу которая будет пропечатывать текст заданный в Input'e и закрепленный за определённой клавишей numpad-клавиатуры (с 1 по 9) (как ты понял, здесь будет испольоваться send :) )

Creat0R
27-06-2009, 23:47
Мы друг друга видимо не поняли »
Хех, это скорее ты неверно излогаешь свою проблему. Я же спроисл:

Возможно имелась в виду Send() а не HotKeySet()? »
Надо было отвечать, а не писать что перепутал.

В моей программе кнопки numpad используются как горячии клавиши... Но когда окно программы РАЗВЕРНУТО, то не желательно чтобы они всё ещё были "горячими", а на время приостановили свою деятельность назначенную им HotKeySet »
См. мой первый пост.

sashadeg
28-06-2009, 00:14
Спасибо учителЪ за то что удалил код "proxy"...
Всё получилось... Решено...

Creat0R
28-06-2009, 00:47
Спасибо учителЪ за то что удалил код "proxy"... »
Не за что :).

Всё получилось... Решено... »
В верху темы есть опции («Настройки темы»?), поставь там «Отметить тему решённой» (и так со всеми решёнными темами).

sashadeg
28-06-2009, 07:52
поставь там «Отметить тему решённой» »
Я уже научился =)




© OSzone.net 2001-2012