18.03.2016

Skrypt AutoHotkey'a, używany przy tym projekcie

Każdy kto zainteresował się automatyzacją monotonnych czynności w systemach MS Windows pewnie zna narzędzie AutoHotkey.

Używam go między innymi przy tym projekcie do:

# Nadpisywania clipboard'a:
lalt & space::
if clipboard !=
  saveClipboard := clipboard . "`r`n"
send ^c
clipboard := saveClipboard . clipboard
return

# Wpisywania zmiennych z clipboard'a do funkcji debugującej fprintf( stderr, "(var1)%i  (var2)%i ...\n", var1, var2, ...):  
!rshift::
SendInput {enter 2}{up}fprintf( stderr, "
if clipboard =
{
  SendInput _1\n" );{enter}
  return
}
Loop, parse, clipboard, `n, `r
{
  SendInput {space}{raw}(%A_LoopField%)`%i
}
SendInput \n"
Loop, parse, clipboard, `r, `n
{
  SendInput {raw}, %A_LoopField%
}
SendInput {space});{enter}
return

# Przełączania na okno konsoli tekstowej i uruchamiania skryptu kompilującego skrótem left ctrl + 1:
NOTEPAD_TITLE := " - Notepad++"
CPP_TITLE := "c/c++_projekt"
PHP_TITLE := "$php$_projekt"


lctrl & 1::
Title := topWindow()
StringGetPos, sp_pos, Title, %NOTEPAD_TITLE%
if sp_pos > 0
{
send ^s
WinGetTitle, Title, A
Title := SubStr( Title, 1, sp_pos )
SplitPath, Title, file_name, file_dir, file_ext, name_no_ext, file_drive

file_ext := Trim( file_ext )
if( file_ext = "cpp" or file_ext = "c" or file_ext = "h" )
{
IfWinExist, %CPP_TITLE%
{
  WinActivate
;  WinMaximize
} else
{
  run, "%SYS_SHORTCUTS_DIR%ansicon_projekt.bat" %file_drive% "%file_dir%" %CPP_TITLE%
  WinActivate, %CPP_TITLE%
  sleep, 100
}
Send, ccpp{Enter}
} else
if( file_ext = "php" )
{
  IfWinExist, %PHP_TITLE%
{
  WinActivate
} else
{
  run, "%SYS_SHORTCUTS_DIR%ansicon_projekt.bat" %file_drive% "%file_dir%" %PHP_TITLE%
  WinActivate, %PHP_TITLE%
  sleep, 100
}
  send cls{enter}
  new_main =
  ifNotExist, %file_dir%\%name_no_ext%.exe
    new_main = embeder2 new %name_no_ext%{Enter}    
  send, bcomp %name_no_ext%.php{Enter}%new_main%embeder2 main %name_no_ext% %name_no_ext%.phb{Enter}%name_no_ext%.exe{Enter}
}
}
return


topWindow() {
  WinGetTitle, Title, A
  if( Title = "" )
  {
    send !{Tab}
    Sleep, 35
    WinGetTitle, Title, A
  }
  return Title
}
Ta część skryptu sprawdza czy obecne okno to Notepad++, a następnie rozkłada pełną ścieżkę pliku (z tytułu okna edytora) na czynniki podstawowe. Jeżeli plik ma rozszerzenie "cpp", "c", lub "h" to odpalany jest skrypt kompilujący dla projektu c/c++, w katalogu wziętym również z informacji z tytułu okna edytora. Jeżeli plik ma rozszerzenie "php" to odpalany jest kompilator dla projektu php. Oczywiście można też "ręcznie" uruchamiać kompilację poprzez wpisywanie komendy "m.bat", lub ccpp, w oknie konsoli dla "c/c++_projekt", i bcomp ... w przypadku "$php$_projekt".
"ansicon_projekt.bat" uruchamia cmd.exe, w określonym katalogu, z zainstalowaną konsolą obsługującą kody ANSI Esc, ustawia zmienne środowiskowe, domyślne ścieżki dostępu do narzędzi systemu i kompilatora.

Brak komentarzy:

Prześlij komentarz