Windows Script Host

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

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

Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

У меня файл в ANSI-крирлица Windows-1251

пытался в другие кодировки - ничего

===============================
может это что-то в системе, попробовал через "выполнить"
ввёл

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

http://translate.google.com/#ru|en|
тоже выдаёт ошибку
"не удаётся найти адрес" , хотя страница открылась

================================
скорее всего это что-то в системе, через explorer выдаёт ошибку

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

CreateObject("WScript.Shell").Run "C:\TC Image\Programs\Internet\Opera_AC\opera.exe" "http://translate.google.com/#auto|en| Запуск"
напрямую опере - ошибки нет, хотя русские слова передаются корозябрами
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

' Тройное открытие ссылки в браузере 3-мя методами
'==========================================
URL = "http://translate.google.com/#ru|en|" 
On Error Resume Next
With CreateObject("Shell.Application")
  .ShellExecute URL
  .Open URL
  .NameSpace(URL).Self.Verbs.Item(0).DoIt
End With
Проверено на Win 7 x86.
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Flasher
За методы спасибо,
Когда все три метода показали ошибку, логически влез в explorer и сделал его по умолчанию - и всё заработало!!!
Видимо опера прописалась не корректно!
Ещё раз спасибо и ApceH, за то узнал новые возможности вызова!
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Возник вопрос по работе макроса GetSrcSelectedFiles в каталогах с большим числом файлов (например, в каталоге Windows c нажатым Ctrl+B). Макрос зачастую выдаёт неправильный результат. Порой помогает его повторный вызов.

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

MsgBox CreateObject("TCScript.Helper").GetSrcSelectedFiles(0)(0), vbOKOnly
Понять бы причину...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение Flasher »

Lev писал(а):А зачем составляется путь к ini который может лежать не там и называться по другому вместо использования %COMMANDER_INI%?
Помнится с этой переменной какие-то проблемы были в WSH. На 7 попробовал, вроде ничего:

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

MsgBox  CreateObject("WScript.Shell").ExpandEnvironmentStrings("%COMMANDER_INI%")
Может, в XP трабла?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Flasher писал(а):Volniy
Это давно замечено. Править надо однозначно. Повторные вызовы в скрипте макрос отрабатывает глюкабельно, т.е. берёт предыдущий буфер.
Честно говоря, я не очень понял в чем проблема и уж точно слышу о ней впервые. Нельзя ли описать ее более детально? И как ее можно гарантированно воспроизвести?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Volniy
Ну, давай так попробуем:

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

With CreateObject("TCScript.Helper")
  .SendCommand(524)
  .LockTC True
  .SendCommand(3303), True
  A = .GetSrcSelectedFiles(1)(2)
  .Sleep 100
  .SendCommand(3305)
  .SendCommand(3302), True
  B = .GetSrcSelectedFiles(1)(2)
  .Sleep 100
  .SendCommand(3304)
  .LockTC False
End With
MsgBox A & vbnewLine & B
Повесь на кнопку, открой папку с кучей файлов и каталогов, например, system32. Жми. Сделай несколько попыток.
Отображаться должны разные, а не одинаковые пути.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

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

Сообщение Flasher »

Хм., надо подумать.. Хилый проц, не младше Celeron 400, оперативка EDO/DDR, древний винт с 5400, Win95, куча открытых приложений. Так, ничего не забыл... :D
А если честно, то я понятия не имею, от чего конкретно это зависит. С каким количеством папок и файлов ты открывал директории?
Чаще всего это можно поймать при первом заходе в каталог.
У меня Win7 x86, если что.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya
У тебя на 7 работает подобный способ переименования?:

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

FSO.GetFile(F).Name   = 
Не очень понял, как это вообще может работать. Это же метод возврата.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Flasher писал(а):

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

FSO.GetFile(F).Name   = 
Не очень понял, как это вообще может работать. Это же метод возврата.
Неправда ваша (с) Ваня, Сын Полка
Это не метод, это свойство, и оно не readonly
Scripting Runtime Library

Name Property
Applies To: File Object | Folder Object

Sets or returns the name of a specified file or folder. Read/write.

object.Name [= newname]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Volniy писал(а):Это не метод
Здесь фигурирует как метод.
Ты хотя бы ответь насчёт работы.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Flasher писал(а):Здесь фигурирует как метод.
А если повнимательнее?
5. Объект File
<...> 5.2. Свойства
<...>
5.2.6. Name
Flasher писал(а):Ты хотя бы ответь насчёт работы.
Я не знаю, у меня на XP работает, на 7 не могу проверить.

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

Сообщение Flasher »

Volniy писал(а):А если повнимательнее?
На Name даже не обратил внимания. Про режим write не знал. Надо бы все знакомые свойства пересмотреть.
Volniy писал(а):Проще и намного нагляднее разбивать на несколько последовательных действий.
На два - ты хотел сказать.
Ответить