Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Временное отключение HotKeySet (http://forum.oszone.net/showthread.php?t=143652)

sashadeg 27-06-2009 21:47 1153384

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

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

Исправил...

Creat0R 27-06-2009 21:57 1153395

Цитата:

Цитата sashadeg
Врядли это возможно »

Возможно ещё как - Нужно проверять в функции хоткея состояние окна WinGetState().

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

Код:

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

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

EndFunc


proxy 27-06-2009 21:57 1153396

Если для AutoIt окна:
Код:

Removed

Creat0R 27-06-2009 22:04 1153405

proxy, Ты извини конечно, но код я потёр в твоём посте (если что скажи, код я сохранил в буфер обмена :) ) - Причина редактирования:
Цитата:

Пора sashadeg'e учиться пользоваться справкой
Вот так постоянно кидать готовые примеры и решения, это не выход, я бы лично никогда не научился кодить на AutoIt если бы мне вот так давали всё готовое.. хотя иногда на примере лучше объяснить, но это не тот случай.

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

Цитата:

Цитата proxy
Если для AutoIt окна »

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

proxy 27-06-2009 22:08 1153411

Цитата:

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

поспешил, необдумал ))

Цитата:

Цитата Creat0R
Ты извини конечно, но код я потёр в твоём посте »

претензий нет - учусь доверять опыту ))

Цитата:

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

:yes: тут правдо еще один аспект, иногда, интересно ж самому реализовать задачу и конечно же поделиться решением ))

sashadeg 27-06-2009 22:38 1153435

Цитата:

Цитата Creat0R
что возвращает WinGetState при свёрнутом окне »

Это я знаю, что 16...
Цитата:

Цитата Creat0R
MyHotKeyFunc() »

А что это заменяет HotKeySet ??? нифигасе... =)
Цитата:

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

???

Цитата:

Цитата Creat0R
ждём его ответа »

Да для AutoIt окна...

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

Creat0R 27-06-2009 22:50 1153448

Цитата:

Цитата proxy
иногда, интересно ж самому реализовать задачу и конечно же поделиться решением »

Да, но это же супер тривиальная задача, смысл?


Цитата:

Цитата sashadeg
А что это заменяет HotKeySet ? »

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

Цитата:

Цитата sashadeg
??? »

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

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

Цитата:

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

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

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


Цитата:

Цитата sashadeg
я AutoIt с середины февраля этого года начал использовать... а до этого ВООБЩЕ ничего и никакого языка даже мельком не знал »

Вот теперь вы попали, придётся учить до конца :biggrin: - И если начали учить недавно, это ещё не значит что для вас не существует справки и прочей внешней информации, кой в ести море!

sashadeg 27-06-2009 23:00 1153454

Цитата:

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

аааа.... Чёрт!!! простите, я перепутал, просто щас только что с одним парнем разговаривали про AutoIt, про send()... Вот я и збрякал не то...
Цитата:

Цитата Creat0R
вы ещё не поняли как работают функции в аутоите? »

Ты прав... (не представляешь себе, как я был рад когда узнал что msgbox возвращает определённые цифры)

Цитата:

Цитата Creat0R
Вот теперь вы попали »

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

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

Creat0R 27-06-2009 23:21 1153466

Цитата:

Цитата sashadeg
Ты прав... (не представляешь себе, как я был рад когда узнал что 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

Цитата:

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

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

sashadeg 27-06-2009 23:38 1153472

Цитата:

Цитата Creat0R
нужно посылать нажатия только если окно активное минимизировано »

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

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

Creat0R 27-06-2009 23:47 1153474

Цитата:

Цитата sashadeg
Мы друг друга видимо не поняли »

Хех, это скорее ты неверно излогаешь свою проблему. Я же спроисл:

Цитата:

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

Надо было отвечать, а не писать что перепутал.

Цитата:

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

См. мой первый пост.

sashadeg 28-06-2009 00:14 1153493

Спасибо учителЪ за то что удалил код "proxy"...
Всё получилось... Решено...

Creat0R 28-06-2009 00:47 1153518

Цитата:

Цитата sashadeg
Спасибо учителЪ за то что удалил код "proxy"... »

Не за что :).

Цитата:

Цитата sashadeg
Всё получилось... Решено... »

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

sashadeg 28-06-2009 07:52 1153576

Цитата:

Цитата Creat0R
поставь там «Отметить тему решённой» »

Я уже научился =)


Время: 01:05.

Время: 01:05.
© OSzone.net 2001-