1 (изменено: DarK, 2021-07-18 17:38:14)

Тема: AHK: Зажатие клавишы

Я впревые пишу скрипт ahk поэтому много не понимаю,  мне нужна помощь в редектировании скрипта.


Gui Show, w620 h420
Gui Add, Edit, x339 y41 w226 h113 vStepBlank ,

F4::
StepBlank := RegExReplace(StepBlank, "`n|`r|/") 
X := 1
    While(X:=RegExMatch(StepBlank, "U)(\[.*]|.)",Key, X))
    While GetKeyState("F4", "P")
{
   X+=StrLen(Key)
	Keys := Trim(Key, "[]")
    Send % Key
    Sleep 100
}
return
GuiClose:
ExitApp

В общем, когда я зажимаю клавишу, должен выписыватся текст из бланка в который я заранее написал сообщение. Кому не сложно пожалуйста обьясните что не так.

2

Re: AHK: Зажатие клавишы

DarK, добро пожаловать на форум!
Ознакомьтесь, пожалуйста, с правилами, отредактируйте свой пост. Обратите внимание на точки в конце предложений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Зажатие клавишы

teadrinker, теперь правильно?

4

Re: AHK: Зажатие клавишы

Теперь отлично. Прежде всего, чтобы работать с содержанием переменной, нужно его туда занести. Смотрите команду GuiControlGet или Gui, Submit. Чтобы проверить, что в данный момент находится в переменной, используйте MsgBox:

Gui Show, w620 h420
Gui Add, Edit, x339 y41 w226 h113 vStepBlank ,

F4::
MsgBox, % StepBlank := RegExReplace(StepBlank, "`n|`r|/")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: DarK, 2021-07-18 19:15:01)

Re: AHK: Зажатие клавишы

Я вообще не понимаю ahk, сделал как вы сказали, выдаёт пустой MsgBox, и вообще для чего он нужен в скрипте? Нужно же чтоб текст выводился в любом приложении даже в блокноте, не только в msgbox. Если не сложно, подскажыте как правильно изменить скрипт чтоб выводился весь текст поочерёдно а не сразу, и только когда зажата клавиша.

6

Re: AHK: Зажатие клавишы

DarK пишет:

Я вообще не понимаю ahk

DarK, форум создан для обучения программированию.
Если сами не хотите разбираться, создавайте тему в коммерческом разделе, если хотите — читайте о командах, которые я указал. Если по ним что-то непонятно, спрашивайте.

DarK пишет:

выдаёт пустой MsgBox, и вообще для чего он нужен в скрипте?

Вот для этого:

teadrinker пишет:

Чтобы проверить, что в данный момент находится в переменной

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: DarK, 2021-07-18 21:00:19)

Re: AHK: Зажатие клавишы

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

8

Re: AHK: Зажатие клавишы

Это какой-то троллинг с коверканьем русского языка.

9

Re: AHK: Зажатие клавишы

Начните с того, чтобы считать текст из контрола в переменную, так, чтобы он отображался в MsgBox/

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Зажатие клавишы

ypppu пишет:

Это какой-то троллинг с коверканьем русского языка

Не думаю, вижу что человек из Украины.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Зажатие клавишы

teadrinker, да я из Украины.

Начните с того, чтобы считать текст из контрола в переменную, так, чтобы он отображался в MsgBox.

Текст полностью отображается но вот когда зажимаю F4 вводится только первая буква из бланка.

12

Re: AHK: Зажатие клавишы

Покажите, как отобразили текст.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Зажатие клавишы

А вот в интернете написано, что в украинском языке ЖИ, ШИ пишутся с И. И именно из украинского языка это правило перешло в русский.

14

Re: AHK: Зажатие клавишы

teadrinker, вот:

Post's attachments

Снимок экрана (7).png 154.81 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

15

Re: AHK: Зажатие клавишы

Код лучше текстом писать, иначе его невозможно скопировать, чтобы запустить.
Теперь поясните, какой текст вы вводите (пример), и что хотите получить в результате манипуляций с RegEx.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: DarK, 2021-07-19 00:32:08)

Re: AHK: Зажатие клавишы

teadrinker,

Gui Show, w620 h420
Gui Add, Edit, x339 y41 w226 h113 vStepBlank ,

F4::
Gui, Submit, Nohide
GuiControlGet, Key
MsgBox, % StepBlank := RegExReplace(StepBlank, "`n|`r|/")
X := 1
 while (X:=RegExMatch(StepBlank, "U)(\[.*]|.)",Key, X))
    While GetKeyState("F4", "P")
{
   X+=StrLen(Key)
	Keys := Trim(Key, "[]")
    Send % Key
}
return
GuiClose:
ExitApp

про манипуляцию с RegEx я пытаюсь сделать вывод текста с определённой скоростю, не в MsgBox а что-то вроде нажатий.

Теперь поясните, какой текст вы вводите

пример "Helloy World".

17

Re: AHK: Зажатие клавишы

DarK пишет:

про манипуляцию с RegEx я пытаюсь сделать вывод текста с определённой скоростю

Я не очень понял, зачем там RegEx. Поясните подробнее, что должно произойти, когда вы ввели "Helloy World" и нажали F4.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18 (изменено: DarK, 2021-07-19 15:55:55)

Re: AHK: Зажатие клавишы

teadrinker,

Я не очень понял, зачем там RegEx. Поясните подробнее, что должно произойти, когда вы ввели "Helloy World" и нажали F4.

Я пытаюсь сделать так, что когда ввел в бланк Helloy World, после чего зашёл в блокнот(к примеру) и когда зажимаю должен вводится текст будто печатаю, поочерёдно каждая буква.
Это всё должно происходит когда зажимаю а не просто с нажатия.

19

Re: AHK: Зажатие клавишы

Попробуйте так:

Gui Add, Edit, x339 y41 w226 h113 vStepBlank
Gui Show, w620 h420
Return

F4::
   GuiControlGet, StepBlank
   Loop {
      Loop, parse, StepBlank
      {
         Send {Text}%A_LoopField%
         Sleep, 200
         if !GetKeyState("F4", "P")
            break 2
      }
   }
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

20 (изменено: DarK, 2021-07-19 20:06:32)

Re: AHK: Зажатие клавишы

teadrinker, Cпасибо большое, но как можно сделать чтобы запоминалось с какого места остановился, к примеру если держал F4 чтоб напечаталось Helloy то потом когда снова зажму F4 оно начало с World? И при этом текст который находится в "[]" вводился мгновенно.

21

Re: AHK: Зажатие клавишы

Запоминать можно так:

Gui Add, Edit, x339 y41 w226 h113 vStepBlank
Gui Show, w620 h420
Return

F4::
SendText() {
   static lastChar := 0
   GuiControlGet, StepBlank
   Loop {
      Loop, parse, StepBlank
      {
         i := A_Index
         if StrLen(StepBlank) > lastChar && lastChar >= i
            continue
         lastChar := 0
         Send {Text}%A_LoopField%
         Sleep, 200
         if !GetKeyState("F4", "P")
            break 2
      }
   }
   lastChar := i
}
DarK пишет:

И при этом текст который находится в "[]" вводился мгновенно.

Экспериментируйте, если я всё за вас сделаю, я не оставлю вам шанса получить удовольствие от процесса творчества!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: Зажатие клавишы

Спасибо огромное, пойду думать как сделать это чудо.

23

Re: AHK: Зажатие клавишы

teadrinker пишет:

Запоминать можно так

Даже лучше так:

Gui Add, Edit, x339 y41 w226 h113 vStepBlank
Gui Show, w620 h420
Return

F4::
SendText() {
   static lastChar := 0, lastText := ""
   GuiControlGet, StepBlank
   Loop {
      Loop, parse, StepBlank
      {
         i := A_Index
         if (lastChar >= i && StepBlank == lastText && StrLen(StepBlank) > lastChar)
            continue
         lastChar := 0
         Send {Text}%A_LoopField%
         Sleep, 200
         if !GetKeyState("F4", "P")
            break 2
      }
   }
   lastText := StepBlank
   lastChar := i
}

В этом случае, если будет введён новый текст, счётчик сбросится.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24

Re: AHK: Зажатие клавишы

Пока пытался сделать скрипт столкнулся ещё с одной проблемой, приложения не фиксируют нажатия, скрипт должен работать так чтобы имитировать нажатия клавиатуры, пытаюсь исправить но не пойму в чём дело.

25 (изменено: DarK, 2021-07-19 23:06:14)

Re: AHK: Зажатие клавишы

DarK пишет:

Пока пытался сделать скрипт столкнулся ещё с одной проблемой, приложения не фиксируют нажатия, скрипт должен работать так чтобы имитировать нажатия клавиатуры, пытаюсь исправить но не пойму в чём дело.

уже понял.

26

Re: AHK: Зажатие клавишы

Возникло ещё 2 вопроса, как можно отключить автоматическое перехождение на следующий рядок, и вот:



Gui Add, Edit, x339 y41 w226 h113 vStepBlank
Gui Add, Edit, x340 y20 w225 vBlankDelay, 50
Gui Show, w620 h420
Return

F4::
SendText() {
   static lastChar := 0, lastText := ""
   GuiControlGet, StepBlank
   Loop {
      Loop, parse, StepBlank
      {
         i := A_Index
         if (lastChar >= i && StepBlank == lastText && StrLen(StepBlank) > lastChar)
            continue
         lastChar := 0
         Send %A_LoopField%
         Sleep, %BlankDelay%
         if !GetKeyState("F4", "P")
            break 2
      }
      Pause
   }
   lastText := StepBlank
   lastChar := i
}
GuiClose:
ExitApp

команда Sleep не воспринимает BlankDelay и автоматически ставит Delay 0, просто хочю чтоб скорость ввода можно было регулировать.

27

Re: AHK: Зажатие клавишы

DarK пишет:

команда Sleep не воспринимает BlankDelay

Это всё уже выше проходили, используйте MsgBox.

DarK пишет:

как можно отключить автоматическое перехождение на следующий рядок

Этого не понял.
Ещё смотрите, у вас тема называется «Зажатие клавиши». Как все эти вопросы соотносятся с названием?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

28

Re: AHK: Зажатие клавишы

Этого не понял.
Ещё смотрите, у вас тема называется «Зажатие клавиши». Как все эти вопросы соотносятся с названием?

teadrinker, Создавать новую тему?

29

Re: AHK: Зажатие клавишы

Если изначальный вопрос решён, то лучше новую. И желательно с соответствующим названием.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

30

Re: AHK: Зажатие клавишы

#If Getkeystate("RCtrl","p") and #If WinActive("ahk_exe Adobe Premiere Pro.exe")
vk4A::
MsgBox 1
return

Не работает условие. Нужно задать множество хоткеев, работающих при зажатом модификаторе в целевом окне. Помогите, пожалуйста.

31

Re: AHK: Зажатие клавишы

# только один раз нужен.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

32

Re: AHK: Зажатие клавишы

teadrinker, так тоже не работает

#If Getkeystate("RCtrl","p")
vk4A::
MsgBox 1
return

33

Re: AHK: Зажатие клавишы

Попробуйте вообще убрать условие, зажать контрол, и нажать клавишу. Работает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

34 (изменено: becauseim, 2021-08-21 00:06:34)

Re: AHK: Зажатие клавишы

teadrinker, даже так не работает. Не понимаю.

vk4A::
if GetKeyState("Ctrl") {
MsgBox 1
}
return

Сама клавиша Ctrl физически работает

35

Re: AHK: Зажатие клавишы

Ну так клавиша не должна работать, если модификатор зажат, он же в ней не прописан.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

36

Re: AHK: Зажатие клавишы

teadrinker, если я заменяю в скрипте модификатор на другую клавишу, например, "a", то условие работает. Не понимаю, как заставить работать сценарий именно с клавишей RCtrl. Помогите, пожалуйста,

37

Re: AHK: Зажатие клавишы

*vk4A::

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

38

Re: AHK: Зажатие клавишы

teadrinker спасибо! Срабтало, но теперь не работает отдельно взятая клавиша vk4A. То есть работает только с модификатором.

39

Re: AHK: Зажатие клавишы

Если нужно с конкретным модификатором, то есть обычный способ: ^vk4A::

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

40

Re: AHK: Зажатие клавишы

teadrinker, работает, но все таки хочется, чтобы это работало условием. У меня уже есть ряд клавиш, которые работают похожим образом, но там в роли модификатора используется обычная клавиша. Здесь же используется клавиша-модификатор, и возможно, в этом проблема. Тем не менее, синтаксис кажется верным, а сценарий работает некорректно.

41

Re: AHK: Зажатие клавишы

#If Getkeystate("RCtrl","p") && WinActive("ahk_exe Adobe Premiere Pro.exe")
*vk4A:: MsgBox

А так разве не работает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder