Как я могу отформатировать свой java-код с автоматизацией среды netbeans с помощью autohotkey?

Я хочу отформатировать выбранный код Java с отправкой ключей в скрытую среду IDE NetBeans. Я написал следующий скрипт

^+b::
sleep 30
Send ^c
sleep 30
run,C:\Program Files\NetBeans 8.2\bin\netbeans64.exe "C:\sample.java",Hide
sleep 1500
ControlSend,,{^v}, "Netbeans"
sleep 50
ControlSend,,{!+f}, "Netbeans" 
sleep 50
ControlSend,,{^a}, "Netbeans" 
sleep 50
ControlSend,,{^c}, "Netbeans" 
sleep 50
WinMinimize,"Netbeans"
sleep 100
Send, ^v
return

Но скрытые NetBeans всплывают при попытке отправить ключи с помощью ControlSend, и я не могу свернуть окно Netbeans с помощью WinMinimize, «Netbeans». Как я могу решить эту проблему?


person my-lord    schedule 01.05.2018    source источник


Ответы (2)


Вам не нужно использовать кавычки, ваш код не будет работать. И если хотите, можете не использовать запятые.

Этот код работает нормально:

WinMinimize Netbeans
; WinMinimize, Netbeans ; this will work too

Использование с запятыми:

WinMinimize % "Netbeans"

Но так как некоторые программы используют динамическое имя окна, вам лучше минимизировать программы по их имени процесса:

WinMinimize, ahk_exe netbeans.exe

Также вы можете просто свернуть активное окно:

WinMinimize A

Подробнее: https://autohotkey.com/docs/misc/WinTitle.htm

person user70960    schedule 02.05.2018
comment
Большое спасибо. WinMinimize, ahk_exe netbeans64.exe работает правильно. Но ControlSend не работает с ahk_exe netbeans64.exe. Это очень странно. - person my-lord; 02.05.2018
comment
ControlSend с ahk_exe у меня отлично работает. Возможно, вам следует использовать {Ctrl down}{V}{Ctrl up} вместо {^v}. Убедитесь, что вы не используете SendMode Input в своем коде, потому что режим input слишком быстрый, и программа не успеет принять нажатую клавишу. Если это все еще не работает, вы можете установить тайм-аут между ctrl down и v. - person user70960; 02.05.2018

Я не использую NetBeans, поэтому не могу экспериментировать, но:

  1. Дважды щелкните значок скрипта в области уведомлений и запустите Window Spy.
  2. Убедитесь, что вы определяете правильное окно, и вам возможно придется поэкспериментировать с "SetTitleMatchMode RegEx" и уточните строку WinTitle, но это может быть на самом деле не нужно, так как ваш ControlSend, похоже, правильно его определяет. Тем не менее, я бы все равно удостоверился.
  3. Возможно, вам также придется использовать альтернативный метод для сворачивания окна:
    Из WinMinimize:
    PostMessage, 0x112, 0xF020,,, WinTitle, WinText ; 0x112 = WM_SYSCOMMAND, 0xF020 = SC_MINIMIZE
  4. То, что вы действительно хотите использовать, может быть не WinMinimize, а WinHide.
person johnlee    schedule 02.05.2018
comment
Есть ли разница между WinMinimize и WinHide? - person user70960; 02.05.2018
comment
Конечно. Вы увидите большую разницу, если попробуете. - person johnlee; 02.05.2018