; #include C:\AHK\Include\PathUses.ahk
ProgSysPath32 := "C:\Program Files (x86)\"
ProgSysPath64 := "C:\Program Files\"
WindowsDir := "C:\Windows\"
;--Пути к AHK
PathAhkProg := ProgSysPath32 "AutoHotkey\"
PathAhk := "C:\AHK\"
PathAhkInclude := PathAhk "Include\"
PathAhkIcon := PathAhk "Icon\"
;--Escape-последовательности как константы для MsgBox, %
cEscCR := "`r"
cEscLF := "`n"
cEscTab := "`t"
cEscSps := " "
cEscPrc := "`%"
cEscQts := """"
cAscCR := Asc(cEscCR)
cAscLF := Asc(cEscLF)
cAscTab := Asc(cEscTab)
cAscSps := Asc(cEscSps)
cAscPrc := Asc(cEscPrc)
cAscQts := Asc(cEscQts)
cEsc2LF := cEscLF cEscLF
cEscCRLF := cEscCR cEscLF
Menu, Tray, Icon, Shell32.dll, 168
If %0% ; Выборка аргументов командной строки
{
args := []
vCountArgs :=0
Loop %0%
{
args[A_Index] := %A_Index%
vCountArgs++
}
}
If (vCountArgs < 1)
{
gosub lHelp
msgbox % 0+32
,% "Справка по FndWav"
,% vHelp
,% 60
ExitApp
}
vTmp := SubStr(args[1],1,1)
If ((vTmp = "/") and (vCountArgs >= 2))
{
args[1] := SubStr(args[1],2,StrLen(args[1])-1)
vTmp0 := ;
i := vCountArgs - 1
loop %i%
{
if (!vTmp0)
vTmp0 := args[A_Index+1]
else
vTmp0 := vTmp0 " " args[A_Index+1]
}
args[2] := vTmp0
vCountArgs := 2
}
If ((vTmp != "/") and (vCountArgs >= 2)) ; пробел в имени директорий (без ключа) - собираем их в одну
{
vTmp0 := ;
loop %vCountArgs%
{
if (!vTmp0)
vTmp0 := args[A_Index]
else
vTmp0 := vTmp0 " " args[A_Index]
}
args[1] := vTmp0
vCountArgs := 1
}
If ((vTmp != "/") and (vCountArgs = 1)) ; без ключа и без пробелов в имени пути
{
vCountArgs := 1
}
cWav := "wav"
cMid := "mid"
cMp3 := "mp3"
ckWav := "w"
ckMid := "m"
ckMp3 := "3"
vPath := ;
vArg := ;
vWav := ;
vMid := ;
vMp3 := ;
vChoice := ;
vTxtFF := ;
vTChoice := [""]
arWavWin := [["","",""]]
If (vCountArgs = 1)
{
vPath := args[1]
vWav := cWav
vMid := cMid
vMp3 := cMp3
}
If (vCountArgs = 2)
{
vArg := args[1]
vPath := args[2]
}
if (SubStr(vPath, StrLen(vPath),1) != "\")
vPath := vPath "\"
vPath := vPath "*.*"
if (vArg)
{
i := StrLen(vArg)
loop %i%
{
if (SubStr(vArg, A_Index,1) = ckWav)
vWav := cWav
if (SubStr(vArg, A_Index,1) = ckMid)
vMid := cMid
if (SubStr(vArg, A_Index,1) = ckMp3)
vMp3 := cMp3
}
}
if (vWav)
vTxtFF := vTxtFF vWav
if ((vMid) and (!vTxtFF))
vTxtFF := vTxtFF vMid
if ((vMid) and (vWav))
vTxtFF := vTxtFF ", " vMid
if ((vMp3) and (!vTxtFF))
vTxtFF := vTxtFF vMp3
if ((vMp3) and ((vWav) or (vMid)))
vTxtFF := vTxtFF ", " vMp3
vTxt := "Подождите, идёт поиск файлов..."
SplashTextOn,400, , %vTxt%
i := 0
Loop, %vPath% ,0,1
{
if (((A_LoopFileExt = vWav) and (vWav))
or ((A_LoopFileExt = vMid) and (vMid))
or ((A_LoopFileExt = vMp3) and (vMp3)))
{
arWavWin[++i,1] := A_LoopFileDir "\" ;пишем путь
arWavWin[i,2] := SubStr(A_LoopFileName, 1,StrLen(A_LoopFileName)-4) ;пишем имя
arWavWin[i,3] := A_LoopFileExt ;пишем расширение
vTChoice[i] := A_LoopFileName
}
}
SplashTextOff
if (!i)
{
msgbox % 0+16
,% "Ошибка"
,% "Не найдено ни одного аудио-файла " vTxtFF cEsc2LF "Проверьте путь/входной параметр"
,% 15
ExitApp
}
arWavWin[i+1] := 0
vChoice := vTChoice[1] "|"
j := 1
loop %i%
vChoice := vChoice "|" vTChoice[++j]
clipboard = ;
vCounS := 1
fPathSF := true
fExtF := true
fChoice := true
vTChoiceSound := 0
vWlb := 304
vWShow := 340
vTxtFF := "Найдено " i " файлов (" vTxtFF ")"
Gui, New, -maximizebox +minimizebox,Результаты поиска
Gui, font, s12
Gui, Add, Text, Center x12 y14 w294 h40 , Поиск закончнен `n %vTxtFF%
Gui, font, s11
Gui, Add, ListBox, HWNDhListBox x18 yp+60 w%vWlb% h435 gChoice vChoiceSound AltSubmit, %vChoice%
Gui, font, s10
Gui, Add, Button, x8 y520 w130 h30 Default gOk AltSubmit, В буфер обмена
Gui, Add, Button, HWNDhPath x139 y520 w80 h30 gPathSF AltSubmit, С путём
Gui, Add, Button, HWNDhExt x220 y520 w120 h30 gExtF AltSubmit, С расширением
Gui, Add, Button, x8 y558 w130 h38 gBufT AltSubmit, Содержимое `n Буфера Обмена
Gui, Add, Button, x225 y565 w110 h30 gCancel AltSubmit, Выйти
Gui, Show, x408 y118 h600 w%vWShow%
Return
lToolTip:
cYabs := 5
cXabs := 10
MouseGetPos vtXpos,vtYpos,, hVarControl, 2
vYw := abs(vtYpos - vsYpos)
if ((hListBox=hVarControl) and (vYw<cYabs))
{
if (fToolTip=false)
{
vYwTmp := vYw
vXw := vtXpos
fToolTip := true
ToolTip %vTWav%
}
else if ((fToolTip) and ((vYwTmp!=vYw) or (abs(vXw-vtXpos)>cXabs)))
{
ToolTip %vTWav%
fToolTip := false
}
else
fToolTip := true
}
else
{
ToolTip
fToolTip := false
}
return
PathSF:
fPathSF := !fPathSF
if (fPathSF)
GuiControl, , %hPath%, С путём
else
GuiControl, , %hPath%, Без пути
Return
ExtF:
fExtF := !fExtF
if (fExtF)
GuiControl, , %hExt%, С расширением
else
GuiControl, , %hExt%, Без расширения
Return
BufT:
gosub StopPlay
if (fSpText)
{
SplashTextOff
fSpText := false
return
}
fSpText := true
BufTOK:
cTbf := "Содержимое Буфера Обмена"
vEndST := "---------------------------" cEscLF "Нажмите ESC для закрытия" cEscLF "---------------------------" cEscLF
SplashTextOn, 1024
, 19*vCounS+50
, %cTbf%
, %vEndST% %clipboard%
WinMove %cTbf%,,0,0
WinSet AlwaysOnTop,on,Результаты поиска
Return
Choice:
gosub StopPlay
Gui, Submit, NoHide
if (vTChoiceSound != ChoiceSound)
{
vTChoiceSound := ChoiceSound
fChoice := true
}
vWav := arWavWin[ChoiceSound,1] arWavWin[ChoiceSound,2] "." arWavWin[ChoiceSound,3]
vTWav := vWav
MouseGetPos vsXpos, vsYpos
SetTimer lToolTip,10
if (fChoice)
SoundPlay %vWav%
fChoice := !fChoice
fToolTip := false
gosub lToolTip
return
Ok:
gosub StopPlay
Gui, Submit, NoHide
vTmp := ;
if (fPathSF)
vTmp := arWavWin[ChoiceSound,1]
vTmp := vTmp arWavWin[ChoiceSound,2]
if (fExtF)
vTmp := vTmp "." arWavWin[ChoiceSound,3]
clipboard := clipboard vTmp cEscCRLF
vCounS++
if (fSpText)
gosub BufTOK
return
GuiEscape:
if (fSpText)
{
SplashTextOff
fSpText := false
}
else
Gosub GuiClose
return
StopPlay:
vWav := arWavWin[0,1]
SoundPlay %vWav% ;остановка проигрывания
return
GuiClose:
Cancel:
SplashTextOff
Gui, Cancel
ExitApp
return
lHelp:
vHelp := "Программа для поиска аудио-файлов wav,mid и mp3`n"
vHelp := vHelp "и сохранения результаов в буфере обмена.`n"
vHelp := vHelp "`n"
vHelp := vHelp "Пример запуска: fndwav.exe c:\windows`n"
vHelp := vHelp "`n"
vHelp := vHelp "Фунции программы:`n"
vHelp := vHelp "- поиск файлов;`n"
vHelp := vHelp "- построение списка файлов;`n"
vHelp := vHelp "- проигрывание любого файла из списка;`n"
vHelp := vHelp "- сохранение имен файлов в буфере обмена.`n"
vHelp := vHelp "`n"
vHelp := vHelp "Описание входных параметров.`n"
vHelp := vHelp "fndwav.exe [/Какие файлы искать] Путь поиска`n"
vHelp := vHelp "`n"
vHelp := vHelp "Первый параметр:`n"
vHelp := vHelp "- отсутствует - поиск аудио-файлов wav,mid и mp3;`n"
vHelp := vHelp "- /w - только файлы waw;`n"
vHelp := vHelp "- /m - только файлы mid;`n"
vHelp := vHelp "- /3 - только файлы mp3.`n"
vHelp := vHelp "Допустима комбинация в любой последовательности:`n"
vHelp := vHelp "Искать файлы wav и mp3 в папке c:\windows`n"
vHelp := vHelp "- fndwav.exe /w3 c:\windows`n"
vHelp := vHelp "- fndwav.exe /3w c:\windows`n"
vHelp := vHelp "`n"
vHelp := vHelp "Второй параметр:`n"
vHelp := vHelp "- не проверяется валидность пути;`n"
vHelp := vHelp "- возможно запись c:\windows или c:\windows\ `n"
vHelp := vHelp "`n"
vHelp := vHelp "Программа написана на языке AutoHotKey.`n"
vHelp := vHelp "Автор: Indomito`n"
return