Тема: AHK: создание новой папки в Проводнике по горячей клавише
Продолжаю тему AutoHotkey: создание новой папки в Проводнике по горячей клавише в связи с новой возможностью AHK — доступа к COM — и для её демонстрации.
Следующий код создаёт новую папку в окнах CabinetWClass или ExploreWClass по горячей клавише F11:
F11::
SetBatchLines, -1
WinGet, ID,, A
WinGetClass, Class, A
if !(Class ~= "(Cabinet|Explore)WClass")
Return
oShell := ComObjCreate("Shell.Application")
Loop
{
oIE := oShell.Windows.Item(A_Index - 1)
if (oIE.HWND = ID) ; получаем объект InternetExplorer для активного окна
Break
Sleep, 10
}
oShellFolderView := oIE.Document
oFolder := oShellFolderView.Folder
Loop ; определяем имя новой папки в зависимости
{ ; от существования других объектов с названием "Новая папка (i)"
Sleep, 10
FolderName := "Новая папка" . (A_Index = 1 ? "" : " (" . A_Index . ")")
if !IsObject(oFolder.ParseName(FolderName))
Break
}
Count := oFolder.Items.Count ; перед созданием новой папки определяем количество видимых объектов
oFolder.NewFolder(FolderName)
While (Count = oFolder.Items.Count) ; ждём, пока новая папка не станет видимой
Sleep, 50 ; и общее количество объектов не изменится
oShellFolderView.SelectItem(oFolder.ParseName(FolderName), 1|3|4|8)
oShell := oIE := oShellFolderView := oFolder := ""
Return
Если знатоки WSH меня не поправят, наверное, имеет смысл добавить в Коллекцию.
Справочная информация: Shell Objects for Scripting, Shell Object.