<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: обмен данными и объектами между скриптами — 2]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=5573</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5573&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: обмен данными и объектами между скриптами — 2».]]></description>
		<lastBuildDate>Fri, 20 Feb 2026 18:52:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163103#p163103</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Я не сомневаюсь, что PIPE вами мало изучен, как и многие другие вещи. <strong>Но зачем говорить за других?</strong></p></blockquote></div><p>я <strong>ЭТО</strong> сразу понял, и поэтому на ваш ранее сказанный пост--&gt;<br /></p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Отлично! Возникла пара вопросов:<br />1. Как отправлять не одно сообщение, а сколько угодно, чтобы второй скрипт их всегда читал?<br />2. Как отправлять сообщения из любого запущенного скрипта другому?</p></blockquote></div><p>Среагировал, как просто вашу шутку. Вы же и сами всё про это знаете и без меня. Поэтому понял, этот ваш вопрос как банальную вашу шутку.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Fri, 20 Feb 2026 18:52:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163103#p163103</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163100#p163100</link>
			<description><![CDATA[<p>Я не сомневаюсь, что PIPE вами мало изучен, как и многие другие вещи. Но зачем говорить за других? Прошу на будущее воздерживаться от помещения на форум бесполезной/непроверенной информации.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 17 Feb 2026 22:55:30 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163100#p163100</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163099#p163099</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />&quot;Человек, ищет где глубже.&quot; В данной ситуации, если бы не было &quot;проводника&quot;, то пришлось бы ЭТОЙ &quot;фигнёй&quot; заниматься. Но опять же, из-за &quot;глубины&quot;, то всё равно я бы выбрал бы &quot;глубину&quot;, с изготовлением своего СОМ на VB6. Запустил бы его как &quot;сервис&quot;, постоянно работающий, и он бы был бы почтальоном для всех. Кстати я сейчас именно этим и занят.<br />Установил себе в &quot;ветку&quot; (см тему о не убиваемом вине) VB6 и пробую. Там смотрю как и что там регистрируется. При этом в него (в VB6 ActiveX) , засунул свою DLL всеядную (Dictionary) сделанную на VB.NET. Короче. Есть dll компилированная на VB.NET. Из-за того что она сделана на VB.NET, она кастрированая. Кастированная по причине того что она не настоящая СОМ. VB.NET не умеет делать настоящие СОМ, и поэтому она полурегистрированная в вине. Для того что бы она была настоящая СОМ, её все советуют засунуть в VB6 и обернуть настоящей СОМ с регистрацией. Проверил - пашет. <em>ремарка : На VB.NET потому что там запросто, запихиваются объекты в Dictionary.&nbsp; &nbsp;</em>. Потом (после VB6), с помощью MMC создаётся сервис для этого СОМ. И он запускается в вине как и запускается &quot;проводник&quot;. И к нему (к моему СОМ) можно обращаться всем скриптам, как будто это &quot;проводник&quot;. <br />....<br />Но связывать каждый скрипт, по <strong>PIPE</strong>, это морока, по сравнению с СОМ (сделал один раз и забыл) . <br />Если коротко. <strong>PIPE</strong> мало изучен и поэтому я и другие его обходим стороной. Тем более что &quot;почтальон&quot;&nbsp; <strong>PIPE</strong> разностит, только тексты.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Tue, 17 Feb 2026 16:17:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163099#p163099</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163098#p163098</link>
			<description><![CDATA[<div class="quotebox"><cite>3wedsmncjklvjvd73734 пишет:</cite><blockquote><p>Но заниматься этой фигнёй мне в лом - &quot;долбёжки много&quot;.</p></blockquote></div><p>В смысле, хотите сказать, что всё, что вы описали выше и на что потратили столько букв — бессмысленная фигня, которую нельзя использовать в реальных задачах?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 17 Feb 2026 13:19:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163098#p163098</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163097#p163097</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Вы по поводу <strong>PIPE</strong> ?<br />1- как и в моём примере с проводником. Прописывается таймер по которому происходит опрос скрипта с выставлением ему <strong>Аргументов</strong> ... В моём тут примере аргумент был <strong>WRITE</strong> или <strong>READ</strong>. <br />2- В примере &quot;тут&quot;, в файлах 1.vbs и 2.vbs если ВЫ внимательно присмотритесь, при разных <strong>аргументах</strong> (write/read) , создаётся <strong>PIPE</strong>&nbsp; канал различный, относительно <strong>аргументоа</strong>. Что я имею ввиду? Например файл 1.vbs .При аргументе <strong>READ</strong> создаётся канал с 2.vbs с поcылкой ему аргумента&nbsp; &nbsp; <strong>WRITE</strong>. А при аргументе <strong>WRITE</strong> создаётся просто канал <strong>PIPE</strong> без всего, и даже без указания получателя. Т.е. просто пустой канал, в который будет посылаться месяга <strong>Wscript.echo</strong>. А получатель этой месяги будет тот кто отправил ему этот аргумент <strong>WRITE</strong>. Вот присмотритесь внимательно как ЭТО организовано. Тогда вы поймёте как это работает. <br />Я так понял на этом примере, что </p><div class="codebox"><pre><code>cscript.exe</code></pre></div><p> создают между собой один и тот же канал связи. При этом команда </p><div class="codebox"><pre><code>StdIn.Write</code></pre></div><p> полностью игнорируется , а общение происходит ТОЛЬКО по внутренним функциям самой </p><div class="codebox"><pre><code>cscript.exe</code></pre></div><p>. <br />В этом примере функция&nbsp; &nbsp; </p><div class="codebox"><pre><code>StdOut.ReadAll()</code></pre></div><p> ловит в канале то что отправила туда функция <strong>Wscript.echo</strong>. Заметьте, не&nbsp; </p><div class="codebox"><pre><code>StdIn.Write</code></pre></div><p>&nbsp; а именно <strong>Wscript.echo</strong> в пустоту, в пустой канал. Но всё равно тот кто послал аргумент <strong>WRITE</strong>, ловит в этой пустоте с помощью консольной </p><div class="codebox"><pre><code>StdOut.ReadAll()</code></pre></div><p>, всё что выдала <strong>Wscript.echo</strong> второго скрипта.<br />...<br />Ну короче. схема такая. в обоих скриптах стоят таймеры и по ним и по ответам, переговариваются между собой эти скрипты. Аргументов можно наслать в линию много. Первый аргумент это типа , читать/отвечать, второй какие параметры или какие функции задействовать т.д.. А т.к. каналы у скриптов единоличные (как я понял именной канал <strong>PIPE </strong>у </p><div class="codebox"><pre><code>cscript.exe</code></pre></div><p> всего один ) , то ловить от туда могут все, не зависимо от скрипта. Главное что бы эти <strong>левые</strong> скрипты создали/вошли_туда&nbsp; с помощью </p><div class="codebox"><pre><code>cscript.exe</code></pre></div><p>.<br />...<br />Но заниматься этой фигнёй мне в лом - &quot;долбёжки много&quot;. Да и рядом есть &quot;проводник&quot;.<br />Но &quot;проводник&quot;, тоже оказался не чудо-юдо. А обычный пересыльщик текстовых посланий. Если вы будите через него слать объекты, то и ловите этим же языковым скриптом этот объект. Этот объект не будет распознаваться другим скриптовым языком. Что я и обнаружил при связывании VBS с VB.NET через него.<br />Я даже для верности изготовил свою DLL в VB.NET с регистрацией её, которая по прототипу Dictionary могла списки в себе организовывать, да не простые а с объектмами, т.е. всеядная такая- глотала всё. VBS со скоростью света её хавала и посылал туда объект. И если ловит его второй VBS, то там нет проблем. То этот объект (котороый был впихнут в dictionary первым VBS) появлялся и во втором VBS.&nbsp; А вот эта же библиотека - родная для VB.NET , не смогла его правильно послать в такой же VB.NET. Т.е. у разных скриптов разное представление типов данных. Один тип остался стандартен , это текст, что я и использовал с проводником. Т.е.<br />вывод был таков.<br /><strong>ВЫВОД</strong>&nbsp; <br />Если для разных скриптовых языков нет стандарта по типу данных, кроме как текст, то нафига городить огороды, когда есть готовый &quot;почтовый ящик&quot;, который постоянно в работе без лишней регистрации его в вине?</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Tue, 17 Feb 2026 10:06:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163097#p163097</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163096#p163096</link>
			<description><![CDATA[<p>Не понял ваш ответ. Причем тут проводник? Вы привели пример в теме «обмен данными между скриптами». Я спрашиваю, как можно, используя подобный алгоритм, реально обмениваться данными.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 17 Feb 2026 09:17:19 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163096#p163096</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163095#p163095</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />1- с помощью <strong>проводника</strong><br />2- пример применения <strong>проводника </strong> с разными языковыми скриптами -&gt; <br /><a href="https://forum.script-coding.com/viewtopic.php?pid=163076#p163076">https://forum.script-coding.com/viewtop … 76#p163076</a></p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Tue, 17 Feb 2026 08:42:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163095#p163095</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163094#p163094</link>
			<description><![CDATA[<p>Отлично! Возникла пара вопросов:<br />1. Как отправлять не одно сообщение, а сколько угодно, чтобы второй скрипт их всегда читал?<br />2. Как отправлять сообщения из любого запущенного скрипта другому?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 17 Feb 2026 07:21:49 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163094#p163094</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163093#p163093</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Вот простой при простой пример банального общения между скриптами.<br />Смысл заключается в том, что в скрипт посылается аргумент, который вторым скриптом отлавливается и выдаётся им сообщение.<br />Но сообщение появляется не в самой винде а в скрипте который давал этому скрипту аргумент.<br />Вот как это выглядит.<br />имеется 2-а скрипта 1.vbs и 2.vbs. У них там только одна функция. Это показывать время в секундах.<br />У всех есть функция <br /></p><div class="codebox"><pre><code>
WScript.Echo(Conv(strOutput))
</code></pre></div><p>Функция Conv() это перекодировка из формата 1251 в формат 866 доса. Потому что внутри канала PIPE всегда происходит выход по кодировки 866. И поэтому виндовые окна показывают абрукадабру.<br />Вот именно ЭТА функция <strong>WScript.Echo</strong> выводи сообщение по консольному каналу PIPE . Это окно в скрипте &quot;2&quot; не появляется, но оно посылает ответ в консольный канал ответ. В это время скрипт 1 читает функцией StdOut.RadAll() всё что залетело в канал. И поэтому она читает то что послал функцией&nbsp; &nbsp;<strong>WScript.Echo</strong> второй скрипт.<br />Всё банально и просто.<br />По аргументу засылаешь в 1-ый скрипт данные, а по StdOut читаешь выход от 2-ого скрипта.<br />Можно было запустить и только 1.vbs скрипт, но тогда надо было бы городить способ посылки аргумента. А так с общим файлом start проще это было сделать. И наглядно одновременно. <br /><strong>1.vbs</strong><br /></p><div class="codebox"><pre><code>
option explicit

if Wscript.Arguments.Item(Wscript.Arguments.Count-1)=&quot;WRITE&quot; then
call Write_
elseif Wscript.Arguments.Item(Wscript.Arguments.Count-1)=&quot;READ&quot; then
call Read_
End if


&#039;================================
&#039;================================
&#039;================================

Sub Read_()

Dim objShell, oExec, strOutput, strPipeCmd

strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\2.vbs &quot; &amp; Chr(34) &amp; &quot;WRITE&quot; &amp; Chr(34) 
&#039;msgbox strPipeCmd
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
WScript.Echo(Conv(strOutput))
WScript.Quit 0  &#039; Успешное завершение
end sub
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================

Sub Write_()
Dim objShell, oExec, strOutput, strPipeCmd
Dim FSO
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
strPipeCmd = &quot;Cscript //Nologo //B &quot; 
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
WScript.Echo(&quot;скрипт 1.vbs отвечает: &quot; &amp; Now())
WScript.Quit 0  &#039; Успешное завершение
end sub

&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================

function Conv(byval txtx)
 Dim objWshShell1,objStream
set objWshShell1 =CreateObject(&quot;WScript.Shell&quot;)
set objStream =CreateObject(&quot;ADODB.Stream&quot;)
    With objStream
        .Charset = &quot;Windows-1251&quot;
        .Open
        .WriteText txtx 
        .Position = 0
        .Charset = &quot;cp866&quot;
Conv = .ReadText
.Close
 End With
set objStream =nothing
set objWshShell1 =nothing
end function
</code></pre></div><p>файл <strong>2.vbs</strong><br /></p><div class="codebox"><pre><code>
option explicit


if Wscript.Arguments.Item(Wscript.Arguments.Count-1)=&quot;WRITE&quot; then
call Write_
elseif Wscript.Arguments.Item(Wscript.Arguments.Count-1)=&quot;READ&quot; then
call Read_
End if

&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================

Sub Write_()
Dim objShell, oExec, strOutput, strPipeCmd
Dim FSO
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
strPipeCmd = &quot;Cscript //Nologo //B &quot; 
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
&#039;oExec.StdIn.Write(&quot;didididd&quot;)
strOutput = oExec.StdOut.ReadAll()
WScript.Echo(&quot;скрипт 2.vbs отвечает: &quot; &amp; Now())
WScript.Quit 0  &#039; Успешное завершение
end sub

&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================

Sub Read_()
Dim objShell, oExec, strOutput, strPipeCmd
strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\1.vbs &quot; &amp; Chr(34) &amp; &quot;WRITE&quot; &amp; Chr(34) 
&#039;msgbox strPipeCmd
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
WScript.Echo(Conv(strOutput))
WScript.Quit 0  &#039; Успешное завершение

end sub
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================
&#039;=================================



function Conv(byval txtx)
 Dim objWshShell1,objStream
set objWshShell1 =CreateObject(&quot;WScript.Shell&quot;)
set objStream =CreateObject(&quot;ADODB.Stream&quot;)
    With objStream
        .Charset = &quot;Windows-1251&quot;
        .Open
        .WriteText txtx 
        .Position = 0
        .Charset = &quot;cp866&quot;
Conv = .ReadText
.Close
 End With
set objStream =nothing
set objWshShell1 =nothing
end function
</code></pre></div><p>общий файл который управляет всеми данными.<br /><strong>start.vbs</strong><br /></p><div class="codebox"><pre><code>
option explicit
Dim strPipeCmd, objShell, oExec, strOutput
Dim A_

strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\1.vbs &quot; &amp; Chr(34) &amp; &quot;WRITE&quot; &amp; Chr(34) 

Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
Set objShell = Nothing
Set oExec =  Nothing
&#039;----- операция WRITE &quot; =========
A_=Conv(strOutput)
WScript.Echo(A_)

strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\1.vbs &quot; &amp; Chr(34) &amp; &quot;READ&quot; &amp; Chr(34) 
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
A_=Conv(strOutput)
WScript.Echo(A_)



&#039;============================
&#039;============================
&#039;============================
strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\2.vbs &quot; &amp; Chr(34) &amp; &quot;WRITE&quot; &amp; Chr(34) 

Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
Set objShell = Nothing
Set oExec =  Nothing
&#039;----- операция WRITE &quot; =========
A_=Conv(strOutput)
WScript.Echo(A_)

strPipeCmd = &quot;Cscript //Nologo //I  &quot; &amp; Chr(34) &amp; CreateObject(&quot;Scripting.FileSystemObject&quot;).GetParentFolderName(WScript.ScriptFullName) &amp; Chr(34) &amp; &quot;\2.vbs &quot; &amp; Chr(34) &amp; &quot;READ&quot; &amp; Chr(34) 
Set objShell = wscript.createobject(&quot;wscript.shell&quot;)
Set oExec = objShell.Exec(strPipeCmd )
strOutput = oExec.StdOut.ReadAll()
A_=Conv(strOutput)
WScript.Echo(A_)





&#039;============================
&#039;============================
function Conv(byval txtx)
 Dim objWshShell1,objStream
set objWshShell1 =CreateObject(&quot;WScript.Shell&quot;)
set objStream =CreateObject(&quot;ADODB.Stream&quot;)
    With objStream
        .Charset = &quot;Windows-1251&quot;
        .Open
        .WriteText txtx 
        .Position = 0
        .Charset = &quot;cp866&quot;
Conv = .ReadText
.Close
 End With
set objStream =nothing
set objWshShell1 =nothing
end function
</code></pre></div><p>В этом коде постепенно перебираются аргументы, WRITE и READ для обоих файлов и <br />в ответе видно как они внутри себя переговариваются между собой.<br />Но этот простой пример показывает что PIPE канал организуется во всех консольных приложениях.<br />Например прога <strong>diskpart</strong> или <strong>Powershell</strong><br />Все они могут выдавать VBS скрипту ответы по его запросу, командой <strong>StdOut</strong> и <strong>StdIn</strong><br />Хотел для наглядности общения между работающими 2-я скриптами написать интерактивное общение, но &quot;долбёжки много&quot;.<br />Потому что надо было для наглядности выводить окно &quot;HTA&quot;, например с часами и от туда из разных окон выхватывать время и торомзит часы, с потомщью общего файла &quot;start.vbs&quot;.<br />А результат всё равно будет такой же как и в ЭТОМ моём примере.<br />НОНОНОНО..<br />Т.к. в этом примрее показано как можно, НО с примером <strong>проводник</strong> намного проще , по причине малого кода. ПЛЮС, этот СОМ объект всеяден для других языков, когда как этот мой пример заточен только для VBS и его уже не сунуть в VB.NET--&gt;<br />Пример всеядности VBS с VB.NET<br /><a href="https://forum.script-coding.com/viewtopic.php?pid=163073#p163073">https://forum.script-coding.com/viewtop … 73#p163073</a><br />Там VBS засунут в &quot;планировщик задачь&quot;, и по времени планировщика<br /> запускается, делает проверки и посылаем месягу в <strong>&quot;проводник&quot;</strong> Переодичеки по времени 1-3 минуты прога VB.NET опрашивает <strong>&quot;проводник&quot;</strong> и выдаёт в трее вина окно с уведомлением, в стандартном виде.<br />...<br />Вот ЭТО я бы не смог сотворить методом котрый привёл тут (долбёжки много). А с <strong>&quot;провоником&quot;</strong> как нефига делать .<br />Вот и возникает вопрос <strong>&quot;А нафига козе баян?&quot;</strong> , если есть <strong>&quot;проводник&quot;</strong>?</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Mon, 16 Feb 2026 14:49:30 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163093#p163093</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163092#p163092</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Ну вроде наполовину уже получилось.<br />1-1.vbs<br /></p><div class="codebox"><pre><code>
Dim StdOut
   Set StdOut = WScript.StdOut
      StdOut.WriteLine &quot;передаю, получай! ТОЧКА ТИРЕ 123&quot;
   Set StdOut = nothing
WScript.Quit 0  &#039; Успешное завершение

</code></pre></div><p>2- 2.vbs<br /></p><div class="codebox"><pre><code>
 Dim StdIn
   Set StdIn = WScript.StdIn

   Dim cmd
      cmd = StdIn.ReadAll
Set StdIn = nothing

Dim StdOut
   Set StdOut = WScript.StdOut
      StdOut.WriteLine &quot;получил &quot; &amp; cmd &amp; vbcrlf &amp;  &quot; и передал дальше&quot;
   Set StdOut = nothing

WScript.Quit 1  &#039; Успешное завершение
</code></pre></div><p>В этом фале он получает инфу от 1.vbs и передаёт её дальше со своим коментом.<br />Запуск осуществляется с помощью bat файла. Это чтобы вход и выход были в одном канале. При этом почему то файл с расширением cmd нифига не исполняется как файл с расширением bat.<br />Главное, что теперь первый посылает во второй, а второй выводит в консоль результат.<br />Теперь осталось, найти как этот результат записать в переменную, но не простую а такую что бы её можно было вытащить из консоли (типа глобальную для внешних прог)<br />3-файл RUN.bat<br /></p><div class="codebox"><pre><code>
%comspec% /c cscript //Nologo 1.vbs | %comspec% /c  cscript //Nologo 2.vbs 
pause
</code></pre></div><p>пауза нужна что бы запускать и увидеть результат не только через запуск в консоли но и мышкой по файлу.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Sat, 14 Feb 2026 22:47:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163092#p163092</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163091#p163091</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Всё потом. Со временем проблемка.<br />Пока решил вопрос аброкадаброй.<br />надо добавить <strong>//nologo</strong> к первому vbs. Общая команда в RUN.VBS должна быть такой.<br /></p><div class="codebox"><pre><code>
&#039;Shell.Run &quot;%comspec% /c cscript //Nologo 1.vbs | cscript  2.vbs &quot;, 1, True
Shell.Run &quot;%comspec% /c cscript //Nologo 1.vbs | cscript  2.vbs &quot;, 0, True
</code></pre></div><p> <br />или в самой консоле<br /></p><div class="codebox"><pre><code>
cscript //Nologo 1.vbs | cscript  2.vbs

</code></pre></div><p>тогда будут только данные и не каких абракадбр.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Sat, 14 Feb 2026 15:50:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163091#p163091</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163090#p163090</link>
			<description><![CDATA[<p>Отлично! Возникла пара вопросов:<br />1. Как отправлять не одно сообщение, а сколько угодно, чтобы второй скрипт их всегда читал?<br />2. Как отправить сообщение из второго скрипта первому?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 14 Feb 2026 15:36:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163090#p163090</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163089#p163089</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />самое интересное в ЭТОЙ схеме это то что, запускаются 2-а процесса, разные под разными Pid и hwnd.<br />Это видно в диспетчере задач. Но цепляются оба за один канал связи который их запустил.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Sat, 14 Feb 2026 15:08:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163089#p163089</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163087#p163087</link>
			<description><![CDATA[<p>В принципе можно обойтись и с помощью просто консоли cmd не запуская общий файл RUN.vbs.<br />Открыть консоль и командой <br /></p><div class="codebox"><pre><code>
cmd   / d  путь где лежат файлы vbs.
</code></pre></div><p>и запустить там код строчку<br /></p><div class="codebox"><pre><code>
%comspec% /c cscript  1.vbs | cscript  2.vbs
</code></pre></div><p>и выскочит окно vbs об полученной инфе.<br />П.С.<br />Возможно что такой канал PIPE можно получить и в самой VBS между собой. Но времени нет на это.<br />И ещё... надо бы попробовать через этот канал (от cmd) попробовать передать объекты.<br />Алиса молодец. &quot;Намекнула&quot;. Но я бы сказал что не &quot;Намекнула&quot; а упоминула&nbsp; знакомый мне нужный ... термин.<br />За который я и зацепился.</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Sat, 14 Feb 2026 14:13:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163087#p163087</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обмен данными и объектами между скриптами — 2]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=163086#p163086</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br /><strong>ЧТЗ</strong> Как у меня в школе ЭТО переводится &quot;Что и требовалось доказать&quot;.<br />Канал pipe не закрывается пока какая либо прога не&nbsp; закроет &quot;окно&quot;.<br />1- файл <strong>1.vbs</strong><br />...</p><div class="codebox"><pre><code>
   Dim StdOut
   Set StdOut = WScript.StdOut
      StdOut.WriteLine &quot;передаю, получай! ТОЧКА ТИРЕ 123&quot;
   Set StdOut = nothing
WScript.Quit 0  &#039; Успешное завершение

</code></pre></div><p>Сохраняйте файл в кодировке ANSI иначе слова &quot;передаю, получай! ТОЧКА ТИРЕ&quot; будет абракадабра.<br />Обратите внимание!!! в 1-ом файле нет операторов на чтение. Есть только запись в канал.<br />2- файл <strong>2.vbs</strong><br /></p><div class="codebox"><pre><code>
   Dim StdIn
   Set StdIn = WScript.StdIn

   Dim cmd
      cmd = StdIn.ReadAll

msgbox &quot;спасибо - получил  ==&gt; &quot; &amp;  vbcrlf &amp; vbcrlf &amp; vbcrlf &amp; cmd

Set StdIn = nothing
WScript.Quit 1  &#039; Успешное завершение


</code></pre></div><p>П.С. сохраните его в ANSI<br />Опять обратите внимание. Что во втором есть оператор только чтения из канала ... Но вывод инфы <br />происходит средствами не консоли а средствами VBS. т.е. окном VBS. Поэтому там (в инфе) нет и намёка на консоль CMD.<br />Это для страховки, мало ли чего там с каналами...<br />теперь можем писать общий файл.<br />3-<strong>RUN.vbs</strong><br /></p><div class="codebox"><pre><code>
Set Shell = WScript.CreateObject(&quot;WScript.Shell&quot;)

Shell.Run &quot;%comspec% /c cscript  1.vbs | cscript  2.vbs &quot;, 1, True  &#039;-- окна консоли БУДЕТ видно, И окно vbs будет появляться
&#039;Shell.Run &quot;%comspec% /c cscript  1.vbs | cscript  2.vbs &quot;, 0, True &#039;-- окна консоли НЕ БУДЕТ видно, но окно vbs будет появляться  

</code></pre></div><p>В окне инфы будет строки на абракадабровом языке<br /><em>Сервер сценариев Windows (Microsoft ®) версия 5.812<br />Copyright (C) Корпорация Майкрософт 1996-2006, все права защищены.</em></p><p>&nbsp; </p><p>А уже ниже будет код посланный из первого скрипта второму. <br />так что через <strong>PIPE</strong> можно общаться между скриптами. при этом канал остаётся открытым, и управляем.<br />Ремарка.<br />В окне, инфы от второго файла в сверху надпись от самого файла &quot;спасибо получил&quot;<br />Потом ниже надпись абракадабры от микрософта что мол ЭТО ОН ТАКОЙ УМНЫЙ И ЕГО ВЕРСИЯ УМА...<br />А уже в самом низу инфа полученная (прочтённая) из общего канала PIPE консоли посланная первым скриптом.<br />&quot;передаю, получай! ТОЧКА ТИРЕ 123&quot;</p>]]></description>
			<author><![CDATA[null@example.com (3wedsmncjklvjvd73734)]]></author>
			<pubDate>Sat, 14 Feb 2026 13:49:57 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=163086#p163086</guid>
		</item>
	</channel>
</rss>
