Перейти в заданый каталог в активном окне Explorer'а

Обсуждение программ nnCron и nnCron LITE

Перейти в заданый каталог в активном окне Explorer'а

Postby Raistlin » Fri, 10 Feb 2017, 19:05

... Возможно ли?
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Перейти в заданый каталог в активном окне Explorer'а

Postby dothen » Sat, 11 Feb 2017, 07:16

Можно
Code: Select all
#( Explorer-Open-Dir
\ Надо подключить плагин SendInput.spf

: RunMyMenu { hmenu \ hwnd -- id }
    SEND-KEYS: "@"
    WITH TrayIcon Z" Static" 0 0 Window TO hwnd ENDWITH
    10 BEGIN 1- DUP 0= hwnd SetForegroundWindow OR 50 PAUSE UNTIL
    IF
\      0 hwnd CalcMenuYX 256 hmenu TrackPopupMenuEx \ Меню справа от мыши.
\      0 hwnd CalcMenuYX 260 hmenu TrackPopupMenuEx \ По центру.
      0 hwnd CalcMenuYX   MOUSE-MOVER: -120 20   264 hmenu TrackPopupMenuEx \ Меню слева от мыши.
      hmenu DestroyMenu DROP
    THEN
;

\ NoActive
SingleInstance
WatchHotKey: "^$" \ Ctrl+Win
Action:
    S" /(Explore)|(Cabinet)WClass/" WIN-ACTIVE?
    IF
\      GetForegroundWindow DUP >R WIN-POS MOUSE-MOVE \ Меню в левый верхний угол окна
      GetForegroundWindow DUP >R WIN-RECT DROP MOUSE-MOVE DROP \ Меню в правый верхний угол окна
      POPUPMENU
        S" c:\Windows" OVER MENUITEM
        S" c:\Program Files" OVER MENUITEM
        FOLDER-SYSTEM OVER MENUITEM
        FOLDER-TEMP OVER MENUITEM
        S" Temp" FOLDER-TEMP DROP MENUITEM
        ModuleDirName OVER MENUITEM
      END-MENU
      RunMyMenu ?DUP
      IF
        R@ WinActivate
        KF4 Esc ASCIIZ> AKEYS Enter
\        1000 PAUSE KF4 1000 PAUSE Esc 1000 PAUSE ASCIIZ> AKEYS 1000 PAUSE Enter \ Demo
      THEN RDROP
    THEN
)#
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Перейти в заданый каталог в активном окне Explorer'а

Postby Raistlin » Sat, 18 Feb 2017, 16:40

Спасибо! Но не работает в диалогах типа OpenFile, для которых, собственно, и нужно. И приведите, пож., пример для перехода без вызова меню, в определенный заранее каталог.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Перейти в заданый каталог в активном окне Explorer'а

Postby dothen » Sun, 19 Feb 2017, 14:04

Задача должна работать в диалогах где:
1) есть поле ввода текста "Имя файла:" ("File name:"),
2) и заголовок совпадает с заданной маской.

В самом проводнике такого поля ввода нету, там надо делать через F4.
А можно ничего не делать, там уже есть избранное.

Проверял только в Win7 так что "As Is" :)

Code: Select all
#( Dialog-Open-Dir
\ Переход в диалогах "Открыть" и "Сохранить как" без вызова меню.
\ NoActive
SingleInstance
WatchHotKey: "${INSERT}" \ Win+Insert
Action:
    VK_LWIN WAIT-KUP
    VK_RWIN WAIT-KUP
\    S" /^(Open)|(Save As)$/" WIN-ACTIVE? \ Для английской Windows
    S" /^(Открыть)|(Сохранить как)$/" WIN-ACTIVE?
    S" #32770" WIN-ACTIVE?
    AND
    IF
\      Alt( S" n" AKEYS )Alt \ Для английской Windows
      Alt( S" И" AKEYS )Alt
      S" c:\Program Files" AKEYS Enter
    THEN
)#


Code: Select all
#( Dialog-Open-Dir-Menu
\ Переход в диалогах "Открыть" и "Сохранить как" через меню.
\ Надо подключить плагин SendInput.spf

: RunMyMenu { hmenu \ hwnd -- id }
    SEND-KEYS: "@"
    WITH TrayIcon Z" Static" 0 0 Window TO hwnd ENDWITH
    10 BEGIN 1- DUP 0= hwnd SetForegroundWindow OR 50 PAUSE UNTIL
    IF
      0 hwnd CalcMenuYX   MOUSE-MOVER: -120 20   264 hmenu TrackPopupMenuEx
      hmenu DestroyMenu DROP
    THEN
;

\ NoActive
SingleInstance
WatchHotKey: "^$" \ Ctrl+Win
Action:
\    S" /^(Open)|(Save As)$/" WIN-ACTIVE? \ Для английской Windows
    S" /^(Открыть)|(Сохранить как)$/" WIN-ACTIVE?
    S" #32770" WIN-ACTIVE?
    AND
    IF
      VK_LWIN WAIT-KUP
      VK_RWIN WAIT-KUP
      VK_CONTROL WAIT-KUP
      GetForegroundWindow DUP >R WIN-RECT DROP MOUSE-MOVE DROP
      POPUPMENU
        S" c:\Windows" OVER MENUITEM
        S" c:\Program Files" OVER MENUITEM
        FOLDER-SYSTEM OVER MENUITEM
        FOLDER-TEMP OVER MENUITEM
        S" Temp" FOLDER-TEMP DROP MENUITEM
        ModuleDirName OVER MENUITEM
      END-MENU
      RunMyMenu ?DUP
      IF
        R@ WinActivate
\        Alt( S" n" AKEYS )Alt \ Для английской Windows
        Alt( S" И" AKEYS )Alt
        ASCIIZ> AKEYS Enter
      THEN RDROP
    THEN
)#


Для задач в которых есть эмуляция ввода с клавиатуры надо осторожно выбирать горячие клавиши т.к. могут быть сюрпризы:
1) Если хоткей еще не отжат и начинается эмуляция ввода с клавиатуры, то эффект может быть непредсказуемый.
2) Задача (и антиэффект) будет запускаться снова пока нажаты горячие клавиши, если в хоткей входит не основная(^+@$) клавиша.

Чтобы это устранить надо для горячих клавиш текущей задачи делать WAIT-KUP
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Перейти в заданый каталог в активном окне Explorer'а

Postby Raistlin » Sun, 19 Feb 2017, 16:13

Спасибо, но, к сожалению, работает очень нестабильно. Например, в диалоге Notepad'а нормально, а в Firefox - только вводит в поле имя целевого каталога, но не переходит в него (хотя один раз и тут получилось); Enter отправляется по месту текущего нахождения курсора, в результате может открыться, например, CD-привод. Это, разумеется, с учетом того, что маску заголовка окна пришлось править.
Я думал, что можно реализовать не вводом целевого каталога в диалоговую строку, а посылкой некоего сообщения самому диалогу. Есть утилита, которая реализует это, - PS Hot Folders, но она не работает в x64.

Избранное, конечно, лучше, чем ничего, но без хоткеев - что за жизнь?
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 1 guest

cron