<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Windows Script Host, HTA (VBScript, JScript)]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;fid=14&amp;type=atom" />
	<updated>2026-03-22T20:47:10Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/index.php</id>
		<entry>
			<title type="html"><![CDATA[WSH,VBS,JS: VBS отлов изменения языковой панели в трее]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18577&amp;action=new" />
			<summary type="html"><![CDATA[<p>Конечно ЭТО не законченный вариант НО, работает до 80% чётко.<br />При ЭТОМ реагирует на активное окно, для того что бы там отловить языковый ввод.<br />Например открываем новое окно, браузер.<br />Т.к. проверка осуществляется на изменение загрузки CPU на программу виртуальной клавиатуры <strong>&quot;CTFMON.EXE&quot;</strong>, которая завязана прямиком на языковой панели, то сразу же отлавливается проверка языка. <br />Поэтому ЭТОТ скрипт, сразу реагирует на изменение.<br /><strong>Lang.vbs&nbsp; &nbsp;<br /></strong><br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
Option Explicit
&#039;******************************************************
&#039;******************************************************
&#039;******************************************************
&#039;******** Если нужно время для того что бы этот скрипт 
&#039;******** работал какое то время, а потом закрывался, то
&#039;******** нужно выставить время. Время выставляется в секундах.
&#039;******** В данном случае выставлен 1 час. 
&#039;WScript.Timeout = 3600
&#039;******** Т.к. сейчас время закоментированно, то скрипт 
&#039;******** будет работать безконца. Пока его не &quot;снять&quot;
&#039;******** в диспетчере задач 
&#039;******************************************************
&#039;******************************************************
&#039;******************************************************
</code></pre></div></div></div><p>весь код в прикреплённом файле.<br />Запускаете это скрипт. И пробуйте изменить клавой/мышою языковую панель.<br />При изменении будет выпадать, окно месяги.<br />Этот скрипт позволяет отвязаться от таймера для вызова API проверки языковой панели</p>]]></summary>
			<author>
				<name><![CDATA[3wedsmncjklvjvd73734]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=44630</uri>
			</author>
			<updated>2026-03-22T20:47:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18577&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH,VBS,JS: VB.NET (Framework) интерактивное оповещение в трее]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18550&amp;action=new" />
			<summary type="html"><![CDATA[<p>Программа создавалась для темы <br /><a href="https://forum.script-coding.com/viewtopic.php?pid=163063#p163063">https://forum.script-coding.com/viewtop … 63#p163063</a><br />Для оповещения слежения : <br /></p><ul><li><p><strong>&quot;Дисковое пространство&quot;</strong>, во время сбоя, или исправления его</p></li></ul><ul><li><p>Для слежения свободной/занятой памяти при защите&nbsp; <strong>uwfmgr.exe</strong></p></li></ul><p>Удалено из-за рекламы Микрософта</p>]]></summary>
			<author>
				<name><![CDATA[3wedsmncjklvjvd73734]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=44630</uri>
			</author>
			<updated>2026-02-12T23:56:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18550&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH: непонятки с записью в буфер обмена в CreateObject("htmlfile")]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18530&amp;action=new" />
			<summary type="html"><![CDATA[<p>Объясните непонятки. Одним из виденных мной в Интернете способов работы с Буфером Обмена в WSH (Windows Script Host) является способ с использованием объекта &quot;htmlfile&quot; -- примерно так (код на VBS):</p><div class="codebox"><pre><code>Option Explicit &#039; обязательное объявление переменных

Dim bSuccess &#039; рез-тат записи в Буфер (успех/провал -- True/False)
Dim oHTML    &#039; объект MSHTML.HTMLDocument
Dim someText &#039; наш текст для записи в Буфер
Dim ClipContent &#039; сюда запишем содержимое из Буфера

Set oHTML = WScript.CreateObject(&quot;htmlfile&quot;) &#039; создали объект

someText = &quot;Text for ClipBoard&quot;
oHTML.ParentWindow.ClipboardData.ClearData(&quot;Text&quot;) &#039; очистили Буфер
&#039; записали в Буфер
bSuccess = oHTML.ParentWindow.ClipboardData.SetData(&quot;Text&quot;, someText)
&#039; взяли из Буфера
ClipContent = oHTML.ParentWindow.ClipboardData.GetData(&quot;Text&quot;)

If bSuccess = True Then
   MsgBox &quot;Запись в Буфер успешна&quot;
Else
   MsgBox &quot;Запись в Буфер НЕ успешна&quot;
End If

MsgBox &quot;Взяли из Буфера:&quot; &amp; Chr(13) &amp; ClipContent, vbOKOnly

Set oHTML = Nothing &#039; уничтожили объект</code></pre></div><p>Но в WSH эта шняга реально работает только на чтение, т.е. текст из Буфера берется (GetData), но не записывается (SetData).</p><p>При этом в VBA MS-OFFICE этот способ нормально работает и на чтение и на запись. Примерно так (тоже из Интернета с кое-где моими комментариями):</p><div class="codebox"><pre><code>Function Clipboard(Optional s As String) As String

    &#039; fx Clipboard записывает в Буфер Обмена значение к-л переменной
    &#039; (строковое или числовое) или считывает из Буфера находящееся
    &#039; там значение в переменную.
    &#039;
    &#039; Запись в Буфер  : Clipboard SomeVar
    &#039; Чтение из Буфера: SomeVar = Clipboard
    &#039;
    &#039; NOTE: если fx Clipboard вызыв-ся без арг-та s, то его значение
    &#039; Len(s) будет = 0

    Dim v As Variant
    Dim obHTML As Object &#039; MSHTML.HTMLDocument

    v = s &#039; Cast to variant for 64-bit VBA support

    Set obHTML = CreateObject(&quot;htmlfile&quot;) &#039; New MSHTML.HTMLDocument

    With obHTML.parentWindow.clipboardData

        If Len(s) &gt; 0 Then
            .setData &quot;text&quot;, v &#039; запись в Буфер
        ElseIf Len(s) = 0 Then
            Clipboard = .getData(&quot;text&quot;) &#039; чтение из Буфера
        Else
            MsgBox &quot;fx Clipboard: такого не должно быть&quot;
        End If

    End With &#039; obHTML

    Set obHTML = Nothing

End Function</code></pre></div><p>ВОПРОС: почему в WSH запись в буфер не работает, а в VBA OFFICE работает?</p>]]></summary>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2025-11-26T20:28:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18530&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH,VBS,JS: 1с 7.7 скрипт не работает]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18401&amp;action=new" />
			<summary type="html"><![CDATA[<p>Приветствую. Помогите знатоки. Пытаюсь выполнить VBS скрипт в 1с 7.7, в отладчике отслеживаю, он переходит сразу в Исключение при попытке AddCode. Полностью функция из 1с<br />Не могу вставить сюда код, пишет Слишком много ссылок в сообщении. Файл с функцией в скрепке.</p>]]></summary>
			<author>
				<name><![CDATA[PalSan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=44566</uri>
			</author>
			<updated>2025-03-14T13:29:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18401&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH,VBS,JS: сообщение о скорой блокировки учетной записи в AD]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18340&amp;action=new" />
			<summary type="html"><![CDATA[<p>Никто не пробовал сделать скрипт который выдает пользователю сообщение при входе в систему, о скорой блокировки учетной записи в домене AD?</p>]]></summary>
			<author>
				<name><![CDATA[sfantom20]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=44354</uri>
			</author>
			<updated>2024-12-20T10:40:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18340&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: перенаправление вывода в файл]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18268&amp;action=new" />
			<summary type="html"><![CDATA[<p>Всем привет, имеется скрипт:<br /></p><div class="codebox"><pre><code>On Error Resume Next
Dim adsinfo, ThisComp, oUser
Set adsinfo = CreateObject(&quot;adsysteminfo&quot;)
Set ThisComp = GetObject(&quot;LDAP://&quot; &amp; adsinfo.ComputerName)
Set oUser = GetObject(&quot;LDAP://&quot; &amp; adsinfo.UserName)
Thiscomp.put &quot;description&quot;, &quot;Logged on: &quot; + oUser.cn + &quot; &quot; + CStr(Now)
ThisComp.Setinfo
</code></pre></div><p>Данный скрипт заносит в поле &quot;Описание&quot; (Description) компьютера информацию, какой пользователь когда и во сколько зашел в систему. Подскажите как допилить этот скрипт, чтобы в файл, желательно например log.csv (именно csv), записывалась информация о дате, времени, учетной записи и имени пк. В написании vbs скриптов не силен, но используется доп. скрипт который это делает во так:<br /></p><div class="codebox"><pre><code>
@echo off
echo %date%; %time%; %username%; %computername% &gt;&gt; \\fs\LogOn\logOn.csv
</code></pre></div><p>Вывод в файле выглядит в таком виде:<br />02.08.2024	&nbsp; 9:18:52,00	 User_test	 ARM-001 </p><p>По отдельности эти скрипты кое-что портят. Поэтому я бы хотел объединить их вместе.</p>]]></summary>
			<author>
				<name><![CDATA[gummyy2506]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43964</uri>
			</author>
			<updated>2024-08-08T11:30:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18268&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: по 1С скрипт 2014 года: Локальный кэш 1С 8.2 показать.js]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18245&amp;action=new" />
			<summary type="html"><![CDATA[<p>Не знаю, как сейчас, но когда лет десять назад я некоторое время работал с 1С:Предприятием 8.2, очистка локального кэша при проблемах с базой была иногда актуальна. Конечно, был, вроде, ключик командной строки, но не всегда он срабатывал как надо, насколько помню. Поэтому пользовался тогда старыми своим скриптом (который привожу здесь), чтобы &quot;почистить&quot; локальный кэш в некоторых случаях. Скрипт привожу для иллюстрации некоторых приёмов работы на JScript (WSH). По 1С не работаю давно уже, поэтому не знаю, насколько он может быть работоспособен и актуален теперь.<br /></p><div class="codebox"><pre><code>//  Скрипт для всех баз 1С:Предприятия 8.2, имеющихся в окне запуска, строит дерево ссылок на локальный кэш.
var FSO = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var Shell = new ActiveXObject(&quot;Shell.Application&quot;);
var WshShell = new ActiveXObject(&quot;WScript.Shell&quot;);
var localAppdata = getTree(FSO.BuildPath(Shell.Namespace(&quot;shell:Local AppData&quot;).Self.Path, &quot;1C&quot;));
var configurations = [], appdata = getTree(FSO.BuildPath(Shell.Namespace(&quot;shell:AppData&quot;).Self.Path, &quot;1C&quot;));
var userName = new ActiveXObject(&quot;WScript.Network&quot;).userName;

if(!WScript.Arguments.Named.Exists(&quot;explicitly&quot;)){
    // Сначала добавим общие информационные базы
    var s, cfg = findEntries(appdata, /\\1CEStart\.cfg$/i);
    for (var i=0; i&lt;cfg.length; i++) {
        if(FSO.FileExists(cfg[i]))
            with(FSO.OpenTextFile(cfg[i], ForReading, false, -1))
                while(!AtEndOfStream)
                    if(/^CommonInfoBases=(.*)$/i.test(s=ReadLine()))
                        if(FSO.FileExists(s=RegExp.$1))configurations = configurations.concat(readBases(s));
    }
    // Теперь базы текущего пользователя
    var ibases = findEntries(appdata, /\\ibases\.v8i$/i);
    for (var i=0; i&lt;ibases.length; i++)configurations = configurations.concat(readBases(ibases[i]));
}
// Теперь обработаем безымянные параметры командной строки
Args = WScript.Arguments.Unnamed
for (var i=0; i&lt;Args.length; i++) {
    Arg = Args.Item(i)
    if(FSO.GetExtensionName(Arg) == &quot;v8i&quot; &amp;&amp; FSO.FileExists(Arg))
        configurations = configurations.concat(readBases(Arg));
}

configurations = configurations.sort(function(a, b){return a.folder==b.folder?0:a.folder&lt;b.folder?-1:1})

var trees = [makeTree(localAppdata), makeTree(appdata)]

for (var i=0; i&lt;trees.length; i++) {
    WshShell.Run(&quot;explorer &quot; + trees[i]);
}

WScript.Sleep(2000);
WshShell.Popup(&quot;Построение дерева завершено.&quot;, 2, WScript.ScriptName, 64);

function readBases(filename){
    with(new ActiveXObject(&quot;ADODB.Stream&quot;)){Type=2;Mode=3;Open();Charset=&quot;UTF-8&quot;;LoadFromFile(filename);
        Position=3;var lines=ReadText().split(&quot;\r\n&quot;);Close();
    }
    for (var i=0, data=[]; i&lt;lines.length; i++) {
        if(/^\[([^]]+)\]$/.test(line=lines[i])){
            var element = new String(RegExp.$1);
            element.folder = &quot;/&quot;;
            element.id = &quot;&quot;;
            data.push(element);
        }
        else if(/^ID=(.*)$/i.test(line))element.id = RegExp.$1;
        else if(/^Folder=(.*)$/i.test(line))element.folder = RegExp.$1;
    }
    return data
}

function findEntries(data, regexp){var entry, found=[];
    for (var i=0; i&lt;data.length; i++) {
        if(regexp.test(entry=data[i]))found.push(entry);
    }
    return found;
}

function getTree(path, data){var newPath, currentFolder, folders, files;
    if(typeof(data)==&quot;undefined&quot;)data = [];
    path = FSO.GetAbsolutePathName(path);
    try {
        currentFolder = FSO.GetFolder(path);
    } catch(e) {
        if ((e.number &amp; 0xFFFF) == 76) return data; // Папка не найдена
        else throw e;
    }
    folders = new Enumerator(currentFolder.SubFolders);
    for(;!folders.atEnd();folders.moveNext()){data.push(newPath = FSO.BuildPath(path, folders.item().Name));
        getTree(newPath, data);
    }
    files = new Enumerator(currentFolder.Files);
    for(;!files.atEnd();files.moveNext()){data.push(FSO.BuildPath(path, files.item().Name))}
    return data
}

function makeTree(startPath){
    var destName = &quot;Локальный кэш 1С (&quot; + userName + &quot;) &quot;;
    if(!/Local/.test(startPath)){
        destName += &quot;Roaming&quot;
        var cacheNames = &quot;ExtCompT|tmplts|&quot;;
    }else{
        destName += &quot;Local&quot;
        var cacheNames = &quot;dumps|logs|&quot;;
    }
    var cacheParent, cacheParents = &quot;&quot;, cacheName;
    // Очистим ранее созданное дерево
    var treeRoot = FSO.BuildPath(FSO.GetFile(WScript.ScriptFullName).ParentFolder, destName);
    var tree = getTree(treeRoot);
    for (var i=tree.length-1; i&gt;=0; i--) {
        if(FSO.FileExists(path=tree[i]))FSO.DeleteFile(path);
        else if(FSO.FolderExists(path))FSO.DeleteFolder(path);
    }
    // Построим новое дерево
    if(!FSO.FolderExists(treeRoot))FSO.CreateFolder(treeRoot);
    for (var i=0; i&lt;configurations.length; i++) {
        var configuration = configurations[i];
        var folderName = FSO.BuildPath(treeRoot , configuration.folder.replace(/\//g, &quot;\\&quot;));
        if(!FSO.FolderExists(folderName))FSO.CreateFolder(folderName);
        if(configuration.id){var caches = findEntries(startPath, new RegExp(&quot;\\\\&quot; + configuration.id + &quot;$&quot;));
            cacheName = configuration.id + &quot;|&quot;;
            if(caches &amp;&amp; cacheNames.indexOf(cacheName) == -1)cacheNames += cacheName;
            for (var j=0; j&lt;caches.length; j++) {
                var cache = caches[j], in_=&quot; в &quot; + (cacheParent = (cacheFolder = FSO.GetFolder(cache)).ParentFolder).Name;
                cacheParent = cacheParent.Path.replace(/\\/g, &quot;\\\\&quot;).replace(/\./g, &quot;\\.&quot;) + &quot;|&quot;;
                if(cacheParents.indexOf(cacheParent) == -1)cacheParents += cacheParent;
                var shortcutName = FSO.BuildPath(folderName, configuration + in_ + &quot;.lnk&quot;);
                if(FSO.FileExists(shortcutName))FSO.DeleteFile(shortcutName);
                with(WshShell.CreateShortcut(shortcutName)){
                    TargetPath = cache;
                    Save();
                }
            }
        }
        
    }
    // Добавим найденные кэши, не описанные в списках баз
    var cachesFound = findEntries(startPath, new RegExp(&quot;^(?:&quot; + cacheParents.slice(0, -1) + &quot;)\\\\(?!&quot; +
        cacheNames.slice(0, -1) + &quot;)[^\\\\]+$&quot;));
    for (var i=0; i&lt;cachesFound.length; i++) {
        if(FSO.FolderExists(cache = cachesFound[i])){cacheFolder = FSO.GetFolder(cache);
            var shortcutName = FSO.BuildPath(treeRoot, &quot;!Неизвестный кэш &quot; + cacheFolder.Name + &quot; в &quot; +
                cacheFolder.ParentFolder.Name + &quot;.lnk&quot;);
            if(FSO.FileExists(shortcutName))FSO.DeleteFile(shortcutName);
            with(WshShell.CreateShortcut(shortcutName)){
                TargetPath = cache;
                Save();
            }
        }
    }
    return destName;
}
</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[kvk-2019]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40485</uri>
			</author>
			<updated>2024-07-07T19:42:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18245&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Закрепление на начальном экране не работает в Windows 10 21h2]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18200&amp;action=new" />
			<summary type="html"><![CDATA[<p>Привет всем. Есть скрипт на js, закрепляющий несколько приложений на начальном экране. В сборке 1809 проблем не возникало, но на 21h2 при выполнении пункта меню посредством DoIt появляется ошибка 800a0046 - разрешение отклонено. В чем проблема? Запускаю от администратора, использование DCOM разрешено.<br /></p><div class="codebox"><pre><code>function PinToStart(targetfile, lnkname) {
	if (!objFSO.FileExists(WshShell.ExpandEnvironmentStrings(targetfile))) return false;
	var lnkfile = objProgFolder.Self.Path + &#039;\\&#039; + lnkname + &#039;.lnk&#039;;
	if (!objFSO.FileExists(WshShell.ExpandEnvironmentStrings(lnkfile))) return false;
	var objFolderItem = objProgFolder.ParseName(lnkname + &#039;.lnk&#039;);
	var colVerbs = objFolderItem.Verbs();
	for (var i=0; i&lt;colVerbs.count; i++)
		if (~colVerbs.Item(i).name.toLowerCase().replace(&#039;&amp;&#039;,&#039;&#039;).indexOf(&quot;закрепить на началь&quot;))
			colVerbs.Item(i).DoIt(); // &lt;- ошибка
	return getPinned(lnkfile);
};</code></pre></div><p>Уточнение. Скрипт на некоторых компьютерах запускается, на некоторых - блокируется. Вне зависимости от сборки системы. Что-то с разрешениями запуска методов COM, вроде.</p>]]></summary>
			<author>
				<name><![CDATA[janxp]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=29058</uri>
			</author>
			<updated>2024-05-19T04:58:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18200&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Как пинговал лет десять назад, будучи сисадмином, некоторые приёмы]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18179&amp;action=new" />
			<summary type="html"><![CDATA[<p>Я тогда пинговал несколько хостов, чтобы отслеживать проблемы со связью. Написал скриптик:<br /></p><div class="codebox"><pre><code>
var SleepTime=30;
var S=WScript.CreateObject(&quot;WScript.Shell&quot;),fso=new ActiveXObject(&quot;Scripting.FileSystemObject&quot;),Args=WScript.Arguments,Adr,IP,wmi,i,e,s,PrevS=0,msg;
if(Args.Length!=1)WScript.Quit(-1);Adr=Args.item(0);
if(fso.GetFileName(WScript.FullName).toLowerCase()==&quot;wscript.exe&quot;)S.Run(&quot;cmd /k cscript &quot;+WScript.ScriptName+&quot; &quot;+Adr,1)
else{	S=null;fso=null;wmi=GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2&quot;);
	while(true){e=new Enumerator(wmi.ExecQuery(&quot;Select StatusCode,ResponseTime&quot;+(IP?&quot;&quot;:&quot;,ProtocolAddress&quot;)+
		&quot; from Win32_PingStatus where Address = &#039;&quot;+(IP?IP:Adr)+&quot;&#039;&quot;));
		for(;!e.atEnd();e.moveNext())if((s=(i=e.item()).StatusCode)==0||s!=PrevS){PrevS=s;switch(s){
			case  null:msg=&quot;для &#039;&quot;+Adr+&quot;&#039; невозможно получить ip адрес.&quot;;break;
			case     0:if(!IP)IP=i.ProtocolAddress;msg=(IP?IP:Adr)+&quot; =&quot;+i.ResponseTime+&quot; мс.&quot;;break;
			case 11002:msg=&quot;Заданная сеть недоступна.&quot;;IP=0;break;
			case 11003:msg=&quot;Хост недоступен.&quot;;IP=0;break;
			case 11010:msg=&quot;Превышен интервал ожидания.&quot;;IP=0;break;
			default:IP=0;msg=&quot;Ошибка &quot;+s;
			}WScript.echo(new Date().toLocaleTimeString()+&quot;: &quot;+msg)
		}
		for(i=SleepTime;i;i--)with(WScript)with(StdOut){Write(s=new Date().toLocaleTimeString()+&quot;: &quot;+i);Sleep(1000);Write(&quot;\b\b  \r&quot;)}
	}
}</code></pre></div><p>Он пингует раз в 30 секунд примерно, показывает сколько секунд осталось до следующего пинга, фиксирует время, когда пинги выполнялись и результат показывает в отдельном окне. Причём, если результат не изменился, не дублирует на экране. Вот на днях немного доработал: свой роутер с ddns для подключения по OpenVPN с применением сертификата на белый динамический IP. Так вот, пингует по DNS адресу хоста первый раз. Из протокола ICMP достаёт IP и дальше пингует по нему. До первого сбоя. Потом снова пытается получить IP по DNS в рамках ICMP только. У меня роутер для безопасности и стабильности раз в сутки перезагружается. Посмотрел - всё работает как надо. Конечно, js (WSH) подзабыл порядком, но правки &quot;по памяти&quot; внёс, вроде, верные <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Сначала у себя на Дзене опубликовал.</p>]]></summary>
			<author>
				<name><![CDATA[kvk-2019]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40485</uri>
			</author>
			<updated>2024-05-01T07:27:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18179&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Скрипт VBS выдаёт ошибку под Win10]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18168&amp;action=new" />
			<summary type="html"><![CDATA[<p>Скрипт, который прекрасно работал под Win7 , отказывается работать под Win10. Сам скрипт:<br /></p><div class="codebox"><pre><code>
set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
WshShell.run &quot;telnet.exe&quot;

WScript.Sleep 2000
WshShell.SendKeys&quot;open 192.168.1.1&quot; &amp; chr(13)

WScript.Sleep 2000
WshShell.SendKeys&quot;admin&quot; &amp; chr(13)

WScript.Sleep 2000
WshShell.SendKeys&quot;admin&quot; &amp; chr(13)

WScript.Sleep 5000
WshShell.SendKeys&quot;reboot&quot; &amp; chr(13)

WScript.Sleep 3500
ProcessClose(&quot;cmd.exe&quot;)
ProcessClose(&quot;telnet.exe&quot;) 
Function ProcessClose(sProcName) 
strComputer = &quot;.&quot; 
Set objWMIService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot; &amp; strComputer &amp; &quot;\root\cimv2&quot;) 
Set colProcessList = objWMIService.ExecQuery(&quot;Select * from Win32_Process Where Name = &#039;&quot; &amp; sProcName &amp; &quot;&#039;&quot;) 
For Each objProcess in colProcessList 
objProcess.Terminate() 
Next 
End Function
</code></pre></div><p>Поиск по теме результатов не принёс, хотя не исключаю, что я просто искать не умею. Подскажите, плз, чайнику, в чём может быть засада. Заранее премного благодарен.</p>]]></summary>
			<author>
				<name><![CDATA[rutcky]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43692</uri>
			</author>
			<updated>2024-04-19T11:36:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18168&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[HTA,VBS: объект ImageMagick]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18126&amp;action=new" />
			<summary type="html"><![CDATA[<p>Всем доброго времени суток!</p><p>Есть задача, обработать большое количество изображений (изменить контрастность, яркость и прочее)</p><p>Написал VBS скрипт, который с помощью ImageMagick все это вполне успешно делал. Но Заказчик попросил сделать интерфейс... с кнопками выбора папок, предпросмотром изображений, возможностью настроек коррекции. <br />Написал код для HTA, но при его запуске ругается, что произошла ошибка сценария &quot;Невозможно создание объекта контейнером ActiveX: &#039;ImageMagickObject.MagickImage.1&#039;, код: 0<br />Строка создания этого объекта </p><div class="codebox"><pre><code>set o_objIMG = CreateObject(&quot;ImageMagickObject.MagickImage.1&quot;)</code></pre></div><p>На vbs это же строка отрабатывает нормально.<br />Как это можно победить?</p>]]></summary>
			<author>
				<name><![CDATA[irabel]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43617</uri>
			</author>
			<updated>2024-03-07T05:29:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18126&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[HTA: Строка поиска]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18113&amp;action=new" />
			<summary type="html"><![CDATA[<p>Здравствуйте!<br />Помогите доработать поиск в HTA.<br />В идеале результаты поиска надо отсортировать по алфавиту, в 1 столбец, без лишней информации (заголовки и т.п.).<br /><a href="https://www.upload.ee/files/16329254/Test8_1.7z.html">Файлы тут</a>.<br />С уважением.</p>]]></summary>
			<author>
				<name><![CDATA[Hunter23071985]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43580</uri>
			</author>
			<updated>2024-02-23T18:24:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18113&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[HTA: Шрифт]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18105&amp;action=new" />
			<summary type="html"><![CDATA[<p>Здравствуйте!<br />Пожалуйста, помогите подцепить eot-шрифт в Font.hta без установки этого шрифта в ОС.<br />Через @font-face что-то не получается...<br />С уважением.</p><br /><p>PS: разобрался - поддерживаются не все eot-шрифты, а только созданные в <a href="https://www.fontsquirrel.com/tools/webfont-generator">этом конвертере</a>.<br />Может есть и другие варианты, но, к примеру, <a href="https://anyconv.com/ru/konverter-ttf-v-eot/">этот</a> не подходит.<br />Вопрос решён.</p>]]></summary>
			<author>
				<name><![CDATA[Hunter23071985]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43580</uri>
			</author>
			<updated>2024-02-20T09:26:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18105&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH,VBS,JS: Отбирать только файлы с текущей датой создания]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18097&amp;action=new" />
			<summary type="html"><![CDATA[<p>Нужно отбирать только файлы с текущей датой создания, т.е. файл созданный в день когда запускается скрипт. Есть функция которая ищет файлы согласно заданной маске (маска задается в виде регулярного выражения) если таковой файл находится в заданной папке, то функция вернет его полное имя, иначе — пустую строку.<br /></p><div class="codebox"><pre><code>
function GetFileName(strPath2File, strFileSpec)
{
//создаем объект FileSystemObject
var fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);

//создаем объект RegExp
var regexFileName= new RegExp (strFileSpec,&quot;i&quot;);

//получаем объект — целевую папку
var objFolder = fso.GetFolder(strPath2File);

//получаем коллекцию файлов в целевой папке
var colFiles = new Enumerator (objFolder.Files);
var strFileName=&quot;&quot;;

//перебираем все файлы в коллекции
for(;!colFiles.atEnd();colFiles.moveNext()) {

//проверяем соответствие текущего файла заданному шаблону
if (regexFileName.test(colFiles.item().Name)) {
strFileName=colFiles.item();
}
}
return(strFileName);
}
}</code></pre></div><p>Если добавить в условие проверки соответствие текущего файла заданному шаблону еще и проверку на то, что дата создания файла соответствует текущей системной дате это сработает?</p><div class="codebox"><pre><code>if (regexFileName.test(colFiles.item().Name) &amp;&amp; (colFiles.item().DateCreated==date.toDateString())</code></pre></div><p>Или это не нужно, так как при переборе файлов в цикле for(;!colFiles.atEnd();colFiles.moveNext()) все равно будет браться последний созданный файл?</p>]]></summary>
			<author>
				<name><![CDATA[ravencrow]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=43560</uri>
			</author>
			<updated>2024-02-08T06:02:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18097&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JScript: Не грузит картинки с Вайлдберриз]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?id=18034&amp;action=new" />
			<summary type="html"><![CDATA[<p>Вопрос закрыт.</p><p>При загрузке картинок с Вайлдберриз readystate не продвигается дальше 1 и затем скрипт вылетает без явной ошибки.<br />С других сайтов картинки грузятся нормально.<br />Пробовал MSXML2.XMLHTTP, WinHttp.WinHttpRequest, Microsoft.XMLHTTP, MSXML2.ServerXMLHTTP.<br />Пример картинок которые грузятся:<br /><a href="https://samplelib.com/lib/preview/jpeg/sample-red-400x300.jpg">https://samplelib.com/lib/preview/jpeg/ … 00x300.jpg</a><br /><a href="https://samplelib.com/lib/preview/jpeg/sample-clouds-400x300.jpg">https://samplelib.com/lib/preview/jpeg/ … 00x300.jpg</a><br />Пример картинок которые НЕ грузятся:<br /><a href="https://basket-03.wb.ru/vol293/part29326/29326851/images/c246x328/1.jpg">https://basket-03.wb.ru/vol293/part2932 … x328/1.jpg</a><br /><a href="https://basket-10.wb.ru/vol1327/part132799/132799114/images/c246x328/1.jpg">https://basket-10.wb.ru/vol1327/part132 … x328/1.jpg</a><br /><a href="https://basket-01.wb.ru/vol116/part11647/11647301/images/c246x328/1.jpg">https://basket-01.wb.ru/vol116/part1164 … x328/1.jpg</a><br /><a href="https://basket-05.wb.ru/vol915/part91533/91533847/images/c246x328/1.jpg">https://basket-05.wb.ru/vol915/part9153 … x328/1.jpg</a></p><p>Вопрос удалось закрыть сменой https на http.</p>]]></summary>
			<author>
				<name><![CDATA[expertykt]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=39985</uri>
			</author>
			<updated>2023-12-15T02:32:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?id=18034&amp;action=new</id>
		</entry>
</feed>
