1

Тема: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Посоветуйте, пожалуйста: как, в JS скрипте (не браузерный вариант), задать размеры всплывающего окошка реализуемого командой WScript.Echo('Тестовое сообщение') и кодировку выводимого сообщения; либо альтернативные команды отображения такого всплывающего окошка.

2

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

размеры всплывающего окошка реализуемого командой WScript.Echo('Тестовое сообщение')

Никак. Но можно использовать переносы:

WScript.Echo('Тестовое\nсообщение');

кодировку выводимого сообщения

Тоже никак. Но в большинстве случаев можно произвести перекодировку самой строки. Покажите на примере, что Вам нужно.

3 (изменено: Геон, 2015-01-30 15:50:26)

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

alexii
Мне хотелось бы: писать сообщения в привычной для себя кодировке (utf-8), задавать в скрипте в какой кодировке их следует отображать, и чтобы они отображались именно в этой кодировке (даже если в операционной системе применяется другая кодировка).

4

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Геон, ясно. К сожалению, это невозможно.

WSH работает только в ОС Windows. Кодировка скрипта может быть в ANSI/1251 или Unicode LE с BOM или без (справедливости ради, скажу, что понимается и Unicode BE без BOM, но лучше не пользовать). Кодировка вывода определяется автоматически.

«Внешние», подгружаемые строки можно перекодировать, наподобие: WSH: пример конвертации текста из кодировки в кодировку.

5

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

А что это значит "писать сообщения в кодировке"? Где они будут в этой кодировке находиться?

6

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

YMP пишет:

А что это значит "писать сообщения в кодировке"? Где они будут в этой кодировке находиться?

До редактирования в сообщении #3 был скриншот с редактором, в строке статуса которого отображалось что-то наподобие UTF-8 w/o BOM. Теперь этот скриншот удалён. Геон, не делайте так, тем самым Вы ставите в дурацкое положение отвечающих.

7

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

alexii, прошу прощения. Я удалил скриншот потому, что не смог вставить больше одного рисунка, а когда объединил рисунки в один - получился слишком большой, форум его браковал.
Вкратце, был скриншот команды

WScript.Echo('Проверка кодировки русских букв');

набитой в редакторе Notepad++, UTF-8 w/o BOM

Еще, хотел вставить скриншоты: вывод крокозябликами; и нормальное отображение.

8

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Геон, используйте для рисунков сторонние сервисы, позволяющие делать ссылки как на миниатюры, так и на полные изображения, например, Imgur. Крупные изображения обрамлять спойлером.

9 (изменено: shiz, 2015-01-31 01:22:45)

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Формат WSF позволяет указать кодировку самого файла:

<?XML version="1.0" encoding="UTF-8"?>
<job>
<script language="JScript">
<![CDATA[
WScript.Echo("Проверка кодировки русских букв");
]]>
</script>
</job>
Забыл пароль и потерял e-mail.

10

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Хех. А я и забыл .

11

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

Геон пишет:

... Вкратце, был скриншот команды

WScript.Echo('Проверка кодировки русских букв');

набитой в редакторе Notepad++, UTF-8 w/o BOM...

Создал в Notepad++ файл VBS в кодировке UTF-8 без BOM. Ниже пример строки из этого файла и ее hex-представление:

П р и в е т
D0 9F 20 D1 80 20 D0 B8 20 D0 B2 20 D0 B5 20 D1 82

Символы кириллицы представлены 2 байтами, пробел - одним, как и следует для UTF-8. В ходе загрузки данной строки из файла в память WSH рассматривает каждый байт строки как отдельный символ, как если бы кодировка файла была ANSI (значения меньше 128 соответствуют ASCII, а другие интерпретируется в соответствии с региональными настройками). То есть, вместо преобразования D0 9F в символ "П", получается преобразование D0 в "Р" и 9F в "џ". В итоге, переменная в памяти содержит строку:

Рџ СЂ Рё РІ Рµ С‚
20 04 5F 04 20 00 21 04 02 04 20 00 20 04 51 04 20 00 20 04 06 04 20 00 20 04 B5 00 20 00 21 04 1A 20

Именно эта строка и показывается у меня в окне сообщения WScript.Echo. Выполнив обратные преобразования, WScript.Echo вновь стал показывать "П р и в е т" вместо "Рџ СЂ Рё РІ Рµ С‚":

s = "П р и в е т"
WScript.Echo s ' Рџ СЂ Рё РІ Рµ С‚
r = ""
For p = 1 To Len(s)
    r = r & ChrB(Asc(Mid(s, p, 1)))
Next
With CreateObject("ADODB.Stream")
    .Type = 2
    .Mode = 3
    .Charset = "Unicode"
    .Open
    .WriteText r
    .Position = 0
    .Charset = "UTF-8"
    r = .ReadText
    .Close
End With
Do While LeftB(r, 2) = ChrB(&HFD) & ChrB(&HFF)
    r = MidB(r, 3)
Loop
WScript.Echo r ' П р и в е т

Цикл For..Next преобразует каждый символ исходной переменной в байт в соответствии с региональными настройками, и соединяет эти байты в строку UTF-8. Далее с помощью Stream строка преобразуется из UTF-8 в Unicode, "понятный" строковым переменным. Цикл Do..Loop отрезает 2 символа замены FD FF FD FF, появляющиеся в начале строки на Win7 x64, что свидетельствует об ошибке, хотя искажения строки и нет. На виртуалке же WinXP x86 они не появляются.
Критичное место в цепочке преобразования - обеспечение одинаковых региональных настроек для процесса WSH в момент загрузки файла, и в ходе работы первого цикла For..Next, использующего Asc() для обратного преобразования. В моем случае, если перед циклом добавить SetLocale(), отличный от 1049, скрипт выдает ошибку 80070057 на .ReadText.
Для адаптации данного преобразования под JS необходимо найти альтернативу функциям ChrB(), MidB() и LeftB().

Геон пишет:

... либо альтернативные команды отображения такого всплывающего окошка.

Подобные запросы более продвинутого GUI для WSH уже были, вот пример.

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

12

Re: WScript/JScript: как задать размеры всплывающего окошка WScript.Echo

shiz пишет:

Формат WSF позволяет указать кодировку самого файла:

У меня целевой JS-скрипт, который осуществляет слияние документов Word в один файл. Поместил тело скрипта в предложенную Вами конструкцию XML, поменял расширение у файла на .wsf, запустил – скрипт работает так же хорошо как и раньше + теперь выводит сообщение русскими буквами.
Совет помог. Спасибо за науку!