Page 1 of 1

Можно ли вызвать стандартные функции Windows 10 комбинацией клавиш?

Posted: 30 Jan 2020, 17:09
by nemlessdeut
Всем привет,
уже много раз пробывал имитировать функции Windows такие как "Копировать как путь (copy as path)" и ещё не разу не получилось.
Кому-нибудь это уже удавалось?
CopyAsPath.png
CopyAsPath.png (109.54 KiB) Viewed 1216 times
Я представляю себе это как-то так:
Run ::{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}
но к сожалению не все так легко.

Просто подумал, что если работает открытие Моего компьютера

Code: Select all

Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d}  ; Opens the "My Computer" folder.
то может и другие CLSID можно как-нибудь привести в действие.

Сначала обрадовался, когда нашел следующий код, но к сожалению он работает только в Explorer и то не всегда.
может кто сможет его немного изменить…
Проблема 1 : Он не работает в xplorer² Lite
Проблема 2 : Если работаешь на компе через Teamviewer тоже приходит пустая переменная.

Code: Select all

!x::
{
   WinGet, ExplorerID, ID, A
   Auswahl := GetSelectedItems(ExplorerID, Anzahl)
   MsgBox, 0, %Anzahl% ausgewählte Datei(en), %Auswahl%

Return
}
GetSelectedItems(ExplorerID, ByRef Anzahl := 0) {
   Anzahl := 0
   SelectedItems := ""
   For Window In ComObjCreate("Shell.Application").Windows {
      If (Window.HWND = ExplorerID) && (Window.Document.SelectedItems.Count > 0) {
         For Item In Window.Document.SelectedItems {
            Anzahl++
            SelectedItems .= Item.Path . "`n"
         }
      }
   }
   Return RTrim(SelectedItems, "`n") ; letztes "`n" entfernen
}
Моя конечная цель интегрировать мои функции в Windows.
Например:
Пользователь выделяет в xplorer² несколько документов (возможно 100+) и нажимает правую кнопку мыши. В Контекст меню выбирает мою функцию и мой скрипт анализирует все выбранные документы и в конце передаёт собранную Информацию следующей программе, которая возвращает ему уже готовый продукт.
Проблема: Windows передаёт моему скрипту не все пути сразу а по одному много раз.

Мой Вызов выглядит так:
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Test\Command, "F:\Autohotkey\test.exe" "%1"
может с ним что можно сделать?
что то вроде {f3d06e7c-1e45-4a26-847e-f9fcdee59be0} & "F:\Autohotkey\test.exe"?

-------
- С одним файлом работает отлично
- Сначала выделить файлы и потянуть их на скрипт работает тоже хорошо.
- Запустить скрипт и выбрать файлы тоже работает нормально.
Но хочется сделать через контекстное меню, так как много привязано к расширению и есть много функций, и пользователь путается, на какой скрипт перетягивать...

я это как-то так представляю:
#SingleInstance Ignore
Var:=CopyAsPath()
Loop,Parse,Var,`n,`r


Пробывал делать вспомогательный скрипт, который будет сначала записывал в файл но в конце мне не удавалось, что бы последний вызов передал дальше.

Помогите кто чем может.