teadrinker
Ваш пример с моим кодом не дружит, пишет else без if..., возможно я что-то не понял..
Я тут немного еще пошаманил, и дополнил свой предыдущий код, что-бы было нагляднее понятно как это работает. Есть 3 файла. Сам скрипт и два шаблона Example.docx, Example.ahk. При создании файла, он просто копируеться и создаеться в той папке, в которой нахожусь.
Так вот.., при создании файла, через раз срабатывает в проводнике., но в основном создает файл на рабочем столе.
Пробовал WinActivate, в проводнике, но это не сработало.
q::
Gui 2: New, % "+AlwaysOnTop +Owner hwndhGui +E" . WS_EX_NOACTIVATE := 0x08000000
Gui 2: +HwndSystemMenu
Gui 2: Font, s16, Consolas
Gui 2: Add, Button, g1 x0 y0 w330 h40, Create .ahk
Gui 2: Add, Button, g2 x0 y40 w330 h40, Create .docx
Gui 2: Show, w330 h80, Create Menu
1:
ExampleAHK()
Return
2:
ExampleWord()
Return
ExampleAHK() {
OldFile := "Example.ahk"
FileName := "ExampleScript" ; шаблон имени нового файла
; NewFileName := FolderPath "\" FileName ".ahk"
WinGetClass, class, A
if (class ~= "Progman|WorkerW|AutoHotkeyGUI")
FolderPath := A_Desktop
else {
for item in ComObjCreate("Shell.Application").Windows
continue
until WinExist("A") = item.hwnd || item := ""
FolderPath := item.Document.Folder.Self.Path
}
if (FolderPath = "") {
MsgBox, Активное окно не является окном Проводника
Return
}
SplitPath, FolderPath,,,,, Drive
if InStr(Drive, "::") {
MsgBox, Это служебная папка, в ней нельзя создать файл
Return
}
NewFileName := FolderPath "\" FileName ".ahk"
While FileExist(NewFileName) {
RegExMatch(NewFileName, "i).*\\" FileName " \((\d+)\)\.ahk", number)
NewFileName := FolderPath "\" FileName " (" . (number1 = "" ? 2 : number1 + 1) . ").ahk"
}
;FileAppend,, % NewFileName ; Create New File
;#WinActivate, ahk class ExploreWClass|CabinetWClass
FileCopy, %OldFile%, %NewFileName% ; Copy File to FolderPath
;#WinActivate ;
; Run, % NewFileName ; Run This File
Return ; The End Script
}
ExampleWord() {
OldFile := "Example.docx"
FileName := "Example" ; шаблон имени нового файла
; NewFileName := FolderPath "\" FileName ".ahk"
WinGetClass, class, A
if (class ~= "Progman|WorkerW|AutoHotkeyGUI")
FolderPath := A_Desktop
else {
for item in ComObjCreate("Shell.Application").Windows
continue
until WinExist("A") = item.hwnd || item := ""
FolderPath := item.Document.Folder.Self.Path
}
if (FolderPath = "") {
MsgBox, Активное окно не является окном Проводника
Return
}
SplitPath, FolderPath,,,,, Drive
if InStr(Drive, "::") {
MsgBox, Это служебная папка, в ней нельзя создать файл
Return
}
NewFileName := FolderPath "\" FileName ".docx"
While FileExist(NewFileName) {
RegExMatch(NewFileName, "i).*\\" FileName " \((\d+)\)\.docx", number)
NewFileName := FolderPath "\" FileName " (" . (number1 = "" ? 2 : number1 + 1) . ").docx"
}
;FileAppend,, % NewFileName ; Create New File
;#WinActivate, ahk class ExploreWClass|CabinetWClass
FileCopy, %OldFile%, %NewFileName% ; Copy File to FolderPath
;#WinActivate ;
; Run, % NewFileName ; Run This File
Return
}