Вы можете попробовать следующее. Он запускает постоянный скрипт, который запускает подпрограмму таймера, которая ищет окна типа «Сохранить-как», и когда она встречается с ней, она отправляет найденное окно некоторым нажатиям клавиш. Обратите внимание, что клавиши для отправки WILL DEFINITELY DEPEND, на которых вы используете Win-версию, - и у меня были проблемы со стандартными ярлыками Win 7, и, следовательно, использовались для работы в kludgey. Из комментариев в коде должно быть ясно, что я делаю, и это должно помочь вам сделать то, что вам нужно.
#Persistent
SetTitleMatchMode, 2 ; Matches all titles with the designated words in it (picks the top most)
SetTimer, MaxAll, 150 ; time in ms
return
MaxAll:
IfWinActive, Save MoviePlus File As ; runs only on "Save MoviePlus File As"
DoIt("Movie")
IfWinActive, Save ; runs on "Save" "Save As" "Save File" etc.
DoIt("Save")
IfWinExist, Open ; runs on "Open" "Open File" "File Open" etc.
DoIt("Open")
IfWinExist, Import ; runs on "Import" "File Import" "Import Commands" etc.
DoIt("Import")
return
DoIt(Type)
{
SetTimer, MaxAll, Off ; turn of timer
sleep, 250
WinMaximize ; maximize the window (or comment out)
sleep, 250
Send, !n ; start at the Filename textbox
sleep, 250
Send, +{tab} ; SHIFT+TAB to move to files pane
sleep, 250
; Send, ^+5 ; CTRL+SHIFT+5: Win8.1 to go to "List View"
; Send, ^!5 ; CTRL+ALT+5: Win8 to go to "List View"
; Send, {LAlt}vl ; LEFTALT+V+L: Win7 to go to "List View" - but doesn't work consistently
SendEvent, {F3}{tab}{right 2}{down}{end}{up 3}{enter} ; Navigate to "View" drop-down-list starting from from search bar
sleep, 250
IfEqual, Type, Open ; If the dialog was a File Open
{
Send, !p ; ALT+P: Toggles preview pane
sleep, 250
}
IfEqual, Type, Movie ; If the dialog was for MoviePlus
{
Send, ^!p ; Ctrl+ALT+P: Toggles preview pane? Google the keyboard shortcuts (I didn't check)
sleep, 250
}
Send, !n ; back to Filename textbox
WinWaitClose ; wait to close the dialog
SetTimer, MaxAll, On ; turn timer back on
return
}
+esc::ExitApp ; Shift+Esc ends script
НТН,
Btw, вы должны иметь возможность легко адаптировать его для работы по требованию (то есть, с ярлыком) - просто устранить сохранение и таймер, дать ему триггер быстрого доступа и сделать его прямым GoTo: 'GoTo, MaxAll', и вы должны иметь его. – PGilm
Я понимаю ваш сценарий, но, к сожалению, это не то, что мне нужно. Для правильного циклического изменения настроек представления любого окна проводника мне необходимо определить текущее состояние. Мне кажется, мне нужен dllcall. – jiggunjer
IDK, не Win7 всегда запускает окно проводника в том же состоянии? Что вы подразумеваете под «циклом»? Если вам нужно перейти в какое-либо конкретное состояние из начального состояния, мой код может доставить вас туда. Если вам просто нужен ярлык для изменения вида (значки, плитки, список, детали и т. Д.), Встроенные ярлыки (см. Комментарии в моем коде). Если вам нужен ярлык AHK, который переходит к следующему виду из любого вида, в котором вы находитесь, это сложнее, я допускаю, и может потребовать сохранения переменной для отслеживания состояния представления. Конечно, кое-что по этим линиям не так сложно. – PGilm