1 (изменено: fkhlamingo, 2021-10-17 14:04:44)

Тема: AHK: FileCopy не работает в ZIP и Cloud

Как копировать файлы и папки из архивов и подключенных к проводнику облаков?
Как минимум из окна проводника в указанную папку (как максимум указанием путей к файлам).
По ктрл + с и перетаскиванием копируется без проблем.
Windows 10.

2

Re: AHK: FileCopy не работает в ZIP и Cloud

fkhlamingo пишет:

Как копировать файлы и папки из архивов и подключенных к проводнику облаков.

Это вопрос или инструкция?

3

Re: AHK: FileCopy не работает в ZIP и Cloud

Это вопрос.

4

Re: AHK: FileCopy не работает в ZIP и Cloud

С архивами - можно воспользоваться поддержкой архиватором командной строки.

5

Re: AHK: FileCopy не работает в ZIP и Cloud

Это понятно, интересно воспроизведение самого механизма копирования, будь то архив, облако а может что то ещё, где FileCopy не работает, но система переносит файлы по Ctrl+C и
Ctrl+V или перетаскиванием.

6

Re: AHK: FileCopy не работает в ZIP и Cloud

Из zip-архива так можно:

UnZip(A_ScriptDir . "\test.zip", A_ScriptDir . "\Files")

UnZip(zipFile, targetFolder)  {
   if !InStr( FileExist(targetFolder), "D" )
      FileCreateDir, % targetFolder

   oShell := ComObjCreate("Shell.Application")
   items := oShell.NameSpace(zipFile).Items
   oShell.NameSpace(targetFolder).CopyHere(items)
}

По тому же принципу можно попробовать из облачной папки, не проверял.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: FileCopy не работает в ZIP и Cloud

Спасибо. Из архива папку копирует, но желательно отдельные файлы. С облаком не работает.

8

Re: AHK: FileCopy не работает в ZIP и Cloud

Задача минимум в открытом окне проводника выделенные файлы перенести в папку темп, и оттуда их открыть в нужном приложении. С архивом я может как то разберусь, но сетевые беспокоят больше. Макрос на Ctrl+C открыть и подождать окно проводника с открытой папкой темп и нажать Ctrl+V. а там ещё и совпадения будут, как то надоело.
xCopy работает с облаком, но не работает с архивами, в общем то из этого можно слепить франкенштейна (при условии что я пойму как однозначно детектировать что в проводнике открыт архив), но подумал что может я не вижу решения которое лежит на поверхности.
В буфер в обоих случаях копируется некое ID, но что с ним дальше делает ОС при вставке не ясно. С копированием локальных файлов буфер выглядит понятнее.

9

Re: AHK: FileCopy не работает в ZIP и Cloud

Если хотите понять как это работает, изучайте облачное апи.

10

Re: AHK: FileCopy не работает в ZIP и Cloud

Считаете что проводник с ним знаком?
В любом случае это сложно для меня.
Буду пока смотреть в сторону буфера или методов Shell.Application.

11

Re: AHK: FileCopy не работает в ZIP и Cloud

У меня облака нет.
Но если папка с облака дублируется на вашем компьютере, то должно рабатать обычный filecopy с нужными правами.
Если же файл находится напрямую в облаке, то происходит не копирование, а скачивание файла.
Как оно происходит нужно читать апи конкретного облака.

12 (изменено: fkhlamingo, 2021-10-17 23:41:29)

Re: AHK: FileCopy не работает в ZIP и Cloud

Malcev пишет:

обычный filecopy с нужными правами.

Что за права? Запускал анк с админом и без. Проводник от пользователя.

Malcev пишет:

Как оно происходит нужно читать апи конкретного облака.

Вот я и говорю, если апи конкретного облака, то как про него знает проводник? Подозреваю что там есть некий стандартный протокол.
Тут что то lexikos пишет про буфер.

13

Re: AHK: FileCopy не работает в ZIP и Cloud

Повторюсь, не интересовался, но полагаю:
Если у вас папка облака физически присутствует на жестком диске, то должно работать filecopy.
Если же не присутствует, то с файлом работает облачный клиент.

14

Re: AHK: FileCopy не работает в ZIP и Cloud

Ок. В общем всё сложно.

А есть идеи как сделать: я нажал Ctrl+C в проводнике, и как мне имея "файл в буфере", отправить его в нужную папку под заданным именем, на примере с архивом.

15

Re: AHK: FileCopy не работает в ZIP и Cloud

А с чего вы взяли, что в буфере файл?

16

Re: AHK: FileCopy не работает в ZIP и Cloud

Ну и на все ваши вопросы с буфером обмена есть ответы в документации.
https://docs.microsoft.com/en-us/window … /clipboard

17

Re: AHK: FileCopy не работает в ZIP и Cloud

Malcev пишет:

А с чего вы взяли, что в буфере файл?

Если смотреть буфер через insideclipboard от NirSoft, то там в FileGroupDescriptorW некие ID, о чём и писал Lexikos.
Ну куда он их предложил дальше скормить, я не понял.
Потому "файл в буфере" в моём посте в кавычках.

Malcev пишет:

на все ваши вопросы с буфером обмена есть ответы в документации.

А куда именно посмотреть, подскажите пожалуйста.

18

Re: AHK: FileCopy не работает в ZIP и Cloud

Если смотреть буфер через insideclipboard от NirSoft, то там в FileGroupDescriptorW некие ID, о чём и писал Lexikos.

Получаете указатель на структуру FileGroupDescriptorW
https://docs.microsoft.com/en-us/window … escriptorw
Из нее получаете необходимые вам данные, например путь к файлу.

А куда именно посмотреть, подскажите пожалуйста.

Смотрите какие команды используются для парсинга клипбоарда, пи вообще почитайте как оно там все работает.
Потом поищите эти команды в коде на форуме - они не раз использовались.

19

Re: AHK: FileCopy не работает в ZIP и Cloud

Malcev пишет:

Из нее получаете необходимые вам данные, например путь к файлу.

По правде сказать winapi в AutoHotkey это для сильных духом. С FileGroupDescriptorW готовых примеров не видел.
У меня есть такой код, не помню где взял. Но если там "обычный" путь к файлу например "Z:\архив.zip\папка\файл.ahk", то его можно из проводника получить проще, но что с ним дальше делать, если FileCopy не работает с ним.

f11:: MsgBox % Formats()

Formats() {
	Formats := {}

	if !DllCall("CountClipboardFormats")
		throw Exception("There are no clipboard formats.", -1)

	if !DllCall("OpenClipboard", "Ptr", 0)
		throw Exception("Cannot open clipboard.", -1)

	if !fmtID := DllCall("EnumClipboardFormats", "UInt", 0)
	{
		DllCall("CloseClipboard")
		throw Exception("Cannot enumerate clipboard format.", -1)
	}

	while(fmtID)
	{
		VarSetCapacity(lpszFormatName, 100)
		DllCall("GetClipboardFormatName", "UInt", fmtID, "Ptr", &lpszFormatName, "Int", 100)
		fmtName := StrGet(&lpszFormatName)
		if (fmtName != "")
			Formats[fmtName] := fmtID
		fmtID := DllCall("EnumClipboardFormats", "UInt", fmtID)
	} 
	for name, Format in Formats
	{
		hMem := DllCall("GetClipboardData", "UInt", Format)
		lptstr := DllCall("GlobalLock", "Ptr", hMem)
		DllCall("GlobalUnlock", "Ptr", hMem)
		text .= "___________________ " name "`n" StrGet(lptstr, "UTF-8") "`n" 
	} 
	DllCall("CloseClipboard")
	Return text 
}

20

Re: AHK: FileCopy не работает в ZIP и Cloud

На счёт прав вы были правы (если вы про них упоминали), это копирует и из архива который в облаке.
Надо запустить анк от пользователя также как и проводник, что то я упустил в прошлой попытке.


/*
4 - Не показывать окно с прогресс-баром. 
16 - Отвечать автоматически "Yes to All" в любом отображаемом диалоге.
*/
ComObjCreate("Shell.Application").NameSpace(targetFolder).CopyHere(PathToCopy, 4|16)

Не знал что

Вызов метода приводит к тому же эффекту, что и перетаскивание файлов в проводнике.

https://script-coding.com/WSH/Shell.html#4.3.2.

21 (изменено: fkhlamingo, 2021-10-18 09:32:28)

Re: AHK: FileCopy не работает в ZIP и Cloud

fkhlamingo пишет:

Надо запустить анк от пользователя

Кстати не подскажете как бы так запустить Shell.Application из скрипта от админа, не запуская другой файл анк.

22

Re: AHK: FileCopy не работает в ZIP и Cloud

Это вопрос или утверждение?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23

Re: AHK: FileCopy не работает в ZIP и Cloud

teadrinker
Что именно?

24

Re: AHK: FileCopy не работает в ZIP и Cloud

Догадайтесь, нам же приходится догадываться.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: FileCopy не работает в ZIP и Cloud

Это довольно сложно, в 21 в моём понимании есть только вопрос.
Вопрос был такой: запущен скрипт от админа, надо в нём выполнить метод Shell от пользователя.

26

Re: AHK: FileCopy не работает в ZIP и Cloud

Кто-нибудь знает, как вопрос отличить от повествования.

27

Re: AHK: FileCopy не работает в ZIP и Cloud

Я ровным счётом ничего не понимаю.

"запущен скрипт от админа, надо в нём выполнить метод Shell от пользователя."

Где тут повествование, или утверждение?
Уже третий вопрос о том, что вопрос - это не вопрос. И никаких при этом указаний моих цитат, которые можно было двояко интерпретировать.
А это вопрос? А это вопрос? А это вопрос?
Вы кто нибудь напишите что и где не ясно в моём вопросе, нет у меня никаких утверждений, и быть не может, я пришёл чтобы со мной поделились знаниями, а не наоборот, тем более что наверняка я ни чем и ни кому не смогу помочь.
Или я где то себя выставил умником, и вы на меня уже толпой накинулись?
Видимо уже это является вопросом, а не какая то хрень про всякие коды и тому подобное.

Всё что написано выше - это не утверждение, не повествование (или другой синоним этих слов), это просто был вопрос, теперь он звучит так - "какого хрена тут у вас происходит?".

28

Re: AHK: FileCopy не работает в ZIP и Cloud

fkhlamingo пишет:

А это вопрос? А это вопрос? А это вопрос?

Ну смотрите, в каждом случае в конце стоит знак вопроса. В то же время, если бы вы написали

fkhlamingo пишет:

А это вопрос. А это вопрос. А это вопрос.

то это бы повергло читающего в ступор. Смекаете?

fkhlamingo пишет:

какого хрена тут у вас происходит?

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

fkhlamingo пишет:

Кстати не подскажете как бы так запустить Shell.Application из скрипта от админа, не запуская другой файл анк.

А вот здесь его нет, как и в предыдущем подобном случае.
Но я бы пока не советовал начинать обкладывать собеседников хренами, мотивации отвечать это точно не добавит.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

29

Re: AHK: FileCopy не работает в ZIP и Cloud

fkhlamingo пишет:

Вопрос был такой: запущен скрипт от админа, надо в нём выполнить метод Shell от пользователя.

fkhlamingo пишет:

Кстати не подскажете как бы так запустить Shell.Application из скрипта от админа, не запуская другой файл анк.

Знака нет, но написано что это вопрос и просьба подсказать. Как это можно принять за повествование?

teadrinker пишет:

обкладывать собеседников хренами

Никого лично не обкладывал.

teadrinker пишет:

мотивации отвечать это точно не добавит

Видимо и не убавит, ощущение создалось, что по сути общаться не интересно, а интересно только тыкать носом в знаки.

30

Re: AHK: FileCopy не работает в ZIP и Cloud

fkhlamingo пишет:

Кстати не подскажете как бы так запустить Shell.Application из скрипта от админа, не запуская другой файл анк.

fkhlamingo, а с чего вы взяли, что мы не подскажем, как бы так запустить Shell.Application из скрипта от админа?

31

Re: AHK: FileCopy не работает в ZIP и Cloud

Ещё один. Теперь можно быть уверенным что не подскажете.