Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
conservator



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
929151
Спасибо, это пригодится для устранения огрехов портативок ).

Всего записей: 7917 | Зарегистр. 08-11-2015 | Отправлено: 19:29 14-01-2024
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
A27
У меня задача следующая: есть png файл, необходимо узнать цвет пикселя по координатам. Как это реализовать?

Цитата:
929151
Никак.

Цитата:
kraeved
PNG можно открыть через библиотеку WIA, а затем потыкать пиксель через ImageFile.ARGBData. Как это собрать, пока не вижу.

Увидел, делюсь.
 
XPos = WScript.Arguments.Named("x") + 0
YPos = WScript.Arguments.Named("y") + 0
 
With CreateObject("WIA.ImageFile")
    .LoadFile WScript.Arguments.Named("f")
    WScript.Echo Right("00000000" & Hex(.ARGBData(XPos + YPos * .Width)), 8)
End With
 

 
cscript.exe /nologo getPixelColor.vbs /f:indy.png /x:330 /y:300
FF00AAAD

 
Здесь FF это степень прозрачности, а 00AAAD — цвет (бирюзовый в слове Walk).
Имейте в виду, что прозрачность для CSS 4 указывается в конце, т.е. #rrggbbaa.

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 22:00 24-01-2024 | Исправлено: kraeved, 10:07 08-11-2024
gntix



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может ли кто-нибудь поделиться мануалом из шапки? (Микрософт у себя удалил этот файл, а ссылка на зеркало протухла)

Всего записей: 724 | Зарегистр. 07-12-2004 | Отправлено: 01:29 08-06-2024
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gntix
 
* в веб-архиве: https://web.archive.org/web/20030720035440if_/http://msdn.microsoft.com:80/scripting/VBScript/download/vbsdoc.exe
* На яндекс.диске: https://disk.yandex.ru/d/OeS-ZJJILuJBvw (перепаковал exe в rar)

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 05:36 08-06-2024 | Исправлено: unreal666, 05:37 08-06-2024
strk001

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 1 | Зарегистр. 08-06-2024 | Отправлено: 19:03 08-06-2024
korosya

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть vbs со следующей строкой
WshShell.Run "java.exe -jar -Duser.language=en -Dfile.encoding=UTF8 bin\apktool.jar d -o """ &     UnpackFolder & FSO.GetBaseName(File) & """ """ & File.Path & """ -f -s", 0, True
 
File.Path - с кириллицей, которая отображается, как Темы\  
Можно ли File.Path привести к юникоду?

Всего записей: 1008 | Зарегистр. 19-07-2003 | Отправлено: 10:38 26-09-2024
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korosya
 
Вместо vbs можно использовать wsf скрипт, там есть возможность указать кодировку таким образом  
 

Код:
 
<?XML version="1.0" standalone="yes" encoding="windows-1251" ?>
<package>
    <job id="B">
        <?job error="True" debug="True" ?>
        <runtime>
         ...
        </runtime>
 
        <script language="VBScript">
            <![CDATA[
             ...
            ]]>
        </script>
    </job>
</package>
 

 
вот ещё:
 
stackoverflow

Всего записей: 736 | Зарегистр. 06-12-2003 | Отправлено: 17:55 26-09-2024 | Исправлено: karakurt2, 17:59 26-09-2024
korosya

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вместо vbs можно использовать wsf скрипт, там есть возможность указать кодировку таким образом  

Я что-то wsf  не умею)). Да и у меня есть полностью рабочий скрипт на vbs, который совершенно не хочется переписывать на другой язык. Заковыка в этом скрипте - только при передаче путей с кириллицей в  apktool.jar
 

Цитата:
вот ещё:

Тут вообще не понял

Всего записей: 1008 | Зарегистр. 19-07-2003 | Отправлено: 12:39 27-09-2024
929151

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот пример скрипта для преобразования строки в Unicode и последующего выполнения команды:
 

Код:
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 2 'Тип данных — текст
objStream.Mode = 3 'Режим: чтение и запись
objStream.Charset = "UTF-8" 'Устанавливаем кодировку в UTF-8
 
' Записываем File.Path в поток
FilePath = File.Path
objStream.Open
objStream.WriteText FilePath
 
' Преобразуем поток в UTF-8 строку
objStream.Position = 0
objStream.Type = 2
FilePathUnicode = objStream.ReadText
objStream.Close
 
' Теперь можно использовать FilePathUnicode вместо File.Path
WshShell.Run "java.exe -jar -Duser.language=en -Dfile.encoding=UTF8 bin\apktool.jar d -o """ & UnpackFolder & FSO.GetBaseName(File) & """ """ & FilePathUnicode & """ -f -s", 0, True

Пояснение:
Мы создаем объект ADODB.Stream, который умеет работать с текстом в кодировке UTF-8.
Сохраняем путь файла в поток, преобразуем его в нужную кодировку.
Используем преобразованную строку для вызова команды WshShell.Run.
Этот метод поможет преобразовать строки в правильную кодировку, чтобы они корректно обрабатывались в командах.

Всего записей: 378 | Зарегистр. 18-12-2005 | Отправлено: 15:19 27-09-2024
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korosya
Не, это всё тот же VBScript, только с небольшими дополнениями. Вот тут посмотри
script-coding

Всего записей: 736 | Зарегистр. 06-12-2003 | Отправлено: 19:06 28-09-2024
korosya

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
929151
Цитата:
Вот пример скрипта для преобразования строки в Unicode и последующего выполнения команды:

Не помогло, к сожалению.
 
karakurt2
Все-таки это не vbs, а vbs может использоваться внутри wsf. Пока нет времени изучать wsf, если ничего не поможет - посмотрю.

Всего записей: 1008 | Зарегистр. 19-07-2003 | Отправлено: 09:29 30-09-2024
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть скрипт, позволяющий узнать дополнительные свойства файла (например, модель камеры, дату снимка, комментарии и т. д.). Но нужно заранее знать имя конкретного ExtendedProperty. Как получить список этих имён?

Всего записей: 104 | Зарегистр. 19-12-2021 | Отправлено: 18:11 20-11-2024 | Исправлено: Roman_Hayretdinov, 18:29 20-11-2024
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roman_Hayretdinov, ИИ на это говорит:
 
скрипт test.vbs
Код:
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace("C:\") ' Укажите путь к папке, где находится ваш DOC файл
Set objFolderItem = objFolder.ParseName("МойДокумент.doc") ' Укажите имя вашего DOC файла
 
Dim propertiesList
propertiesList = "" ' Инициализируем пустую строку для хранения свойств
 
' Перебор всех свойств
For i = 0 To 100 ' Обычно свойства имеют индексы от 0 до 99
    On Error Resume Next ' Игнорируем ошибки, если индекс выходит за пределы
    propertyValue = objFolder.GetDetailsOf(objFolderItem, i)
    If Err.Number = 0 Then
        If Trim(propertyValue) <> "" Then ' Проверяем, что значение не пустое
            propertiesList = propertiesList & objFolder.GetDetailsOf(objFolderItem, i) & vbCrLf ' Добавляем значение свойства в список
        End If
    End If
    On Error GoTo 0 ' Включаем обработку ошибок снова
Next
 
' Выводим весь список свойств в одном окне
If propertiesList <> "" Then
    WScript.Echo propertiesList
Else
    WScript.Echo "Нет доступных свойств."
End If

 
От себя добавлю, лучше запускать скрипт в консоли: CScript test.vbs, а то список может быть длинным.
Путь к папке и имя файла, можно и не менять, у меня и так вывел Список свойств.

Всего записей: 3652 | Зарегистр. 16-08-2012 | Отправлено: 19:31 20-11-2024
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У вас англоязычная ОС? У меня в Windows XP с русской локализацией список свойств вывелся на русском языке, соответственно в скрипте его использовать невозможно. В Windows 11, наверное, так же будет (сейчас неохота ноутбук включать, проверять). Но в любом случае, похоже, что метод ExtendedProperty использует другие названия свойств: CameraModel вместо "Camera model", WhenTaken вместо "Date taken", DocComments вместо  "Comments" и т. д. Полный список всех названий не нашел. Вроде бы, есть способ получения дополнительных свойств файла по номеру, а не по имени, но я не осилил

Всего записей: 104 | Зарегистр. 19-12-2021 | Отправлено: 21:57 20-11-2024
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roman_Hayretdinov
 
Жаловаться на то, что что-то не работает в Windows XP, да ещё русскоязычной - столь же неприлично, как обсуждать гнойники на причинном месте.
 
Пусть факт Вашей технонекрофилии останется Вашей личной постыдной тайной.
Никто не обязан Вам сочувствовать в вытекающих из неё приключениях.
 
 

Цитата:
(сейчас неохота ноутбук включать, проверять

 
Ну тем более, оказывается, самому Вам пошевелиться "неохота". А я-то подумал, Вы нищий бомж, и даже 15-летний девайс Вам не по карману (для таких иногда встречаются благотворители).
 
А раз у Вас есть нормальная ОС - какое-то запредельное свинство об этом умалчивать и предлагать людям копаться в Вашем грязном белье. До нищего бомжа Вам расти и расти!
 
 

Всего записей: 17750 | Зарегистр. 14-10-2001 | Отправлено: 22:09 20-11-2024 | Исправлено: LevT, 22:13 20-11-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Вам, вероятно, спать надо пораньше ложиться, насколько я злой, но такая внезапная немотивированная агрессия на безобидный тупняк даже для меня неожиданна.
Roman_Hayretdinov

Цитата:
Вроде бы, есть способ получения дополнительных свойств файла по номеру, а не по имени, но я не осилил

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

Цитата:
Свойство можно указать либо по имени, либо по идентификатору формата (FMTID) набора свойств и идентификатору свойства (PID).
 

Всего записей: 5037 | Зарегистр. 18-09-2018 | Отправлено: 07:19 21-11-2024
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Roman_Hayretdinov

Цитата:
У вас англоязычная ОС?

с русской локализацией, 11, 23H2

Цитата:
ExtendedProperty использует другие названия свойств

Похоже. Как добиться нужного — не знаю
 
Мы с ИИ посовещались
Первый блок (блоки предваряются зелёным комментарием) выдаёт список свойств с индексом свойства.
Второй выдаёт индекс свойства и значение свойства.
Как бы их совместить… :

Код:
' Укажите путь к вашему файлу
filePath = "F:\Pictures\Wallpapers\53960745130_881b955eaf_o_proc.jpg"
 
' Создайте объект Shell
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.Namespace(CreateObject("Scripting.FileSystemObject").GetParentFolderName(filePath))
Set objFolderItem = objFolder.ParseName(CreateObject("Scripting.FileSystemObject").GetFileName(filePath))
 
' Перечислите все доступные свойства
properties = ""
For i = 0 To 400 ' 400 - это пример, вы можете изменить это значение
    propertyName = objFolder.GetDetailsOf(objFolderItem.Name, i)
    If propertyName <> "" Then
        properties = properties & "ID: " & i & " - Name: " & propertyName & vbCrLf
    End If
Next
 
' Вывод всех свойств
Wscript.Echo properties
 
' Перечисление доступных значений свойств файла
properties = ""
For i = 0 To 400 ' 400 - это пример, вы можете изменить это значение
    propertyName = objFolder.GetDetailsOf(objFolderItem, i)
    If propertyName <> "" Then
        properties = properties & "Property ID: " & i & " - Value: " & propertyName & vbCrLf
    End If
Next
 
Wscript.Echo "Индекс свойства и значение свойства:"
' Вывод значений свойств
Wscript.Echo properties

 
Добавлено:
Вывод первого блока
 
Вывод второго блока

Всего записей: 3652 | Зарегистр. 16-08-2012 | Отправлено: 18:10 21-11-2024
Roman_Hayretdinov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Цитата:
Как бы их совместить…

Вот тут описано, как (код внизу страницы). Только не понял, откуда там strFileName взялось...
 
Имена всех свойств нашел здесь. Это "legacy names", поэтому их можно использовать в скриптах даже в Windows XP SP2
 
Можете добавить в шапку темы ссылку на справочную литературу? Там пара книг и последняя версия официального майкрософтовского мануала (включает еще и WSH и jscript 5.6)

Всего записей: 104 | Зарегистр. 19-12-2021 | Отправлено: 01:50 30-11-2024 | Исправлено: Roman_Hayretdinov, 01:54 30-11-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru