Как создать ярлык для URL?

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
selevo
Сообщения: 30
Зарегистрирован: Вс июл 05, 2009 09:06
Контактная информация:

Как создать ярлык для URL?

Сообщение selevo »

Как создать URL?

Файл появляется если адресную строку в браузере перетянуть в тотал командер.
Долго это, перетаскивание...
Изображение
http://cs636425.vk.me/v636425765/19958/7QSx3iyVe5Y.jpg


Хотелось бы по кнопке и вставке ссылки.
Планету превратим в цветущий сад!
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Почему в Общих? Для этого есть свой подфорум.

Вот такая кнопка у меня создаёт пустой URL:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\nircmd\nircmd.exe urlshortcut "~$clipboard$" .
?Введите базовое имя URL-файла
shell32.dll,263
Создать URL по адресу из буфера обмена
Похоже на баг NirCmd, но советую проверить. Если не пройдёт, покажу скрипт с именованием по заголовку (хотя с определением будет тоже не шибко быстро).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Давайте называть вещи своими именами. Не URL, а ярлык для URL. Создать URL - это вообще из другой области науки и техники. А URL-файлы - это банальные INI-файлы, которые можно создать хоть батником, если не заморачиваться с путём к иконке.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

К "Создать TXT" тоже претензии типа "txt - это расширение текстового файла" ?
"Создать url" - не тоже самое, что "Cформировать url", это разные категории контекста.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

В случае с TXT путаницы меньше, т.к. TXT само по себе означает преимущественно текстовый файл (хотя я бы и тут писал подробнее или хотя бы с точкой спереди). А в случае URL я из названия темы совершенно не понял, о чём она.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Я не про название темы, а про подсказку в кнопке.
К URL, кстати, тоже точку можно добавить.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А я вообще про всю тему, начиная с её заголовка. То, что точку можно добавить, ясности не добавляет.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

В общем, тут каждый останется при своём.
Я иначе не понял бы, что ещё на нашем форуме может подразумеваться кроме файла. Уж точно не авторегистрация домена с получением URL.

Заголовок исправят - и ладно, против никто не будет. Но и поднимать бучу из-за такой мелочи смысла не было.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher писал(а):Похоже на баг NirCmd, но советую проверить.
Проверял. Вышеприведенная кнопка действительно создаёт неработоспособный "ярлык" для URL нулевой длины.

Тема перенесена а "Автоматизацию", ссылки и заголовок приведены во вменяемое состояние.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Хорошо. Тогда выкладываю:

Код: Выделить всё

'============================== VBS ===============================
' Cоздать URL-ярлык в активном каталоге со ссылкой из буфера обмена
' Условие: поле "Путь запуска:" должно быть пустым
'==================================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
R = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
On Error Resume Next
A = WSH.RegRead(R): If A > 0 Or Err.Number <> 0 Then WSH.RegWrite R, 0, "REG_DWORD"
URL = Trim(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"))
If A > 0 Then WSH.RegWrite R, A, "REG_DWORD"
On Error Goto 0 : Test = Left(URL, 4)
If Test = "" Or (Test <> "www." And Test <> "http") Then MsgBox "Буфер " &_
"обмена не содержит гиперссылки!", 4144, " Создание URL-ярлыка" : WScript.Quit
R = Array("''","-"," -",",","_","_","_")
S = Array("""","|", ":",";","\","/","?")
With WScript.CreateObject("InternetExplorer.Application", "IE_")
  .Visible = 0 : .Silent = 1 : .AddressBar = 0
  .MenuBar = 0 : .ToolBar = 0 : .StatusBar = 0 : .Navigate(URL)
  While IsEmpty(Title) Or Left(Title, 4) = "http" WScript.Sleep 20 :Wend
  .Stop : .ExecWB 45, 2 : FN = Title & ".url"
End With : For i = 0 To 6 : FN = Replace(FN, S(i), R(i)) : Next
With WSH.CreateShortcut(FN) .TargetPath = URL : .Save :End With
WSH.SendKeys "^r": Sub IE_TitleChange(T) Title = Trim(T) :End Sub
Последний раз редактировалось Flasher Вс авг 07, 2016 11:54, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Обычно после некоторого периода задумчивости выдаётся следующее:

Код: Выделить всё

---------------------------
Windows Script Host
---------------------------
Сценарий:	C:\Totalcmd\Addons\Scripts\Url.vbs
Строка:	20
Символ:	27
Ошибка:	Неопознанная ошибка 
Код:	80004005
Источник: 	(null)

---------------------------
ОК   
---------------------------
Пару раз за всё время сработало нормально, но от чего это зависело, я так понять и не смог. Это на 32-битных версиях TC 8.52a и 9.0 Beta 8 в Win7 x64. А вот из 64-битного TC работает. (Предполагаю, что и в 32-битной ОС тоже.)
Правда, в TC x64 свой глюк. Если в буфере нет искомой информации, выдаётся не нормальное предупреждение, а вот это:

Код: Выделить всё

---------------------------
Windows Script Host
---------------------------
Сценарий:	C:\Totalcmd\Addons\Scripts\Url.vbs
Строка:	18
Символ:	50
Ошибка:	Несоответствие типа: 'Navigate'
Код:	800A000D
Источник: 	Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Первая проблема должна решаться, если в 20-й строке убрать ' : .Quit'. Хотя обычно он нужен для закрытия объекта. Предшествующий метод в описанных условиях, видимо, делает это за него.
Насчёт второй - не очень ясно. Там заглушка примитивная и должна работать в любых условиях. Пример из буфера можно?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Скрипт PowerPro:[cut="CreateURL.txt"]

Код: Выделить всё

args Path, Target
local Name = input("Enter file name (no extension):")

if(not Name)
	quit

local C = clip.get
if(validpath(C))
	Target = C

local fh = file.open(Path ++ "\" ++ Name ++ ".url", "w")

if(fh <= 0) do
	messagebox("ok error", "File not opened", "FILE plugin error #1")
	quit
endif	

fh.writeline("[InternetShortcut]")
fh.writeline("URL=" ++ Target)
fh.close
[/cut]Параметры %P, %T. Если в буфере содержится корректный путь, то создается ссылка на него, иначе - на противоположную панель. Файл создается в текущей панели
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вахмурка
Не-не. Это не то. У меня именно как показано на скриншоте - имя берётся из заголовка.
И противоположная панель чем не текущая?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Ну, тогда еще проще:

Код: Выделить всё

args Path
local Name = input("Enter file name (no extension):")

if(not Name)
	quit

local Target = "http://" ++ browserDomain

local fh = file.open(Path ++ "\" ++ Name ++ ".url", "w")

if(fh <= 0) do
	messagebox("ok error", "File not opened", "FILE plugin error #1")
	quit
endif	

fh.writeline("[InternetShortcut]")
fh.writeline("URL=" ++ Target)
fh.close
Параметр %P
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Ответить