<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; COM-объект, умеющий исполнять JScript.]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=7867</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7867&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «COM-объект, умеющий исполнять JScript.».]]></description>
		<lastBuildDate>Tue, 17 Sep 2013 06:30:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=75416#p75416</link>
			<description><![CDATA[<div class="codebox"><pre><code>function [СоздатьОбъект]([Строка])
    set [СоздатьОбъект]=CreateObject([Строка])
end function

set [ХТМЛ] = [СоздатьОбъект](&quot;htmlfile&quot;)
[ХТМЛ].Open(&quot;text/html&quot;)
&#039;&lt;-- Подготовим нужные методы
[ХТМЛ].Write(&quot;&lt;script language=&#039;JScript&#039;&gt;var ХТМЛ;Новый=function(x,y){return new x(y)}&lt;/script&gt;&quot;)
set [Док]=[ХТМЛ].documentElement.document
&#039; Внедрение объекта Скрипта в самого себя, для сохранности контекста
[Док].Script.[ХТМЛ]=[ХТМЛ]
set [Это]=[Док].Script
set [Математика]=[Это].Math
msgbox [Математика].pow(2,8)
set [Дата]=[Это].[Новый]([Это].Date,Now)
msgbox [Дата].toString(0)
msgbox [Дата].getTime(0)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 17 Sep 2013 06:30:30 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=75416#p75416</guid>
		</item>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=75391#p75391</link>
			<description><![CDATA[<p><strong>omegastripes</strong>, большое спасибо за содержательное замечание!! Особенно интересно<br /></p><div class="codebox"><pre><code>msgbox jsglobal.eval(&quot;({transfer:window})&quot;).transfer is jsglobal &#039; отображает Истина
msgbox jsglobal.eval(&quot;({transfer:this})&quot;).transfer is jsglobal &#039; отображает Истина
</code></pre></div><p>и<br /></p><div class="codebox"><pre><code>jsglobal.execscript &quot;;&quot;, &quot;jscript&quot;
</code></pre></div><div class="quotebox"><cite>omegastripes пишет:</cite><blockquote><p>Вот в этом посте <a href="http://forum.script-coding.com/viewtopic.php?pid=33067#p33067">http://forum.script-coding.com/viewtopi … 067#p33067</a> приведен скрипт от <strong>JSman</strong>, получающий глобальный объект JScript из htmlfile.</p></blockquote></div><p>Ну да, подобное мне <a href="http://forum.script-coding.com/viewtopic.php?pid=66259#p66259"> известно</a>. Скорее всего, я имел ввиду, что не работает<br /></p><div class="codebox"><pre><code>Set htmldoc = CreateObject(&quot;htmlfile&quot;)
Set Script = htmldoc.Script &#039; то же, что htmldoc.parentWindow
Script.execScript &quot;var eval = eval;&quot;, &quot;JScript&quot;

Set JsGlobal = Script.eval(&quot;this&quot;)
</code></pre></div><p>Почему не захотел использовать уже полученный объект <em>Script</em>, сейчас сказать не могу.</p><div class="quotebox"><cite>omegastripes пишет:</cite><blockquote><p>но все же - от чего так происходит?</p></blockquote></div><p>Для меня это загадка природы.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sun, 15 Sep 2013 17:35:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=75391#p75391</guid>
		</item>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=75386#p75386</link>
			<description><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Хотя, к слову, из <em>htmlfile</em> передать глобальный объект JScript в VBScript&nbsp; мне не удалось.</p></blockquote></div><p>Вот в этом посте <a href="http://forum.script-coding.com/viewtopic.php?pid=33067#p33067">http://forum.script-coding.com/viewtopi … 067#p33067</a> приведен скрипт от <strong>JSman</strong>, получающий глобальный объект JScript из htmlfile. Ниже привожу скрипт, использующий данную технику, в комментариях я указал вывод msgbox:<br /></p><div class="codebox"><pre><code>&#039; получение jsglobal
set htmlfile = createobject(&quot;htmlfile&quot;)
set jsglobal = htmlfile.parentwindow
jsglobal.execscript &quot;;&quot;, &quot;jscript&quot;
&#039; тестирование
msgbox jsglobal.math.pi &#039; отображает 3,14159265358979
jsglobal.eval(&quot;var dict = new ActiveXObject(&#039;Scripting.Dictionary&#039;); dict(&#039;mykey&#039;) = &#039;myvalue&#039;; alert(&#039;test&#039;);&quot;)
msgbox jsglobal.dict.item(&quot;mykey&quot;) &#039; отображает myvalue
msgbox typename(jsglobal.eval(&quot;window&quot;)) &#039; отображает Empty
msgbox typename(jsglobal.eval(&quot;this&quot;)) &#039; отображает Empty
msgbox typename(jsglobal.eval(&quot;(function a(){return window})()&quot;)) &#039; отображает Empty
msgbox typename(jsglobal.eval(&quot;(function b(){return this})()&quot;)) &#039; отображает Empty
msgbox jsglobal.eval(&quot;({transfer:window})&quot;).transfer is jsglobal &#039; отображает Истина
msgbox jsglobal.eval(&quot;({transfer:this})&quot;).transfer is jsglobal &#039; отображает Истина
set htmlfile = nothing</code></pre></div><p>jsglobal.eval() возвращает Empty вместо объектов, но если создать объект со свойством transfer, то через это свойство объекты передаются как и ожидалось. Я не особо силен в JScript и ответ может быть очевиден, но все же - от чего так происходит?</p>]]></description>
			<author><![CDATA[null@example.com (omegastripes)]]></author>
			<pubDate>Sun, 15 Sep 2013 14:33:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=75386#p75386</guid>
		</item>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66889#p66889</link>
			<description><![CDATA[<p>COM-объект, умеющий исполнять JScript:<br /></p><div class="codebox"><pre><code>&lt;component&gt;
&lt;public&gt;&lt;method name=&#039;eval&#039;/&gt;&lt;/public&gt;
&lt;script language=&#039;JScript&#039;&gt;&lt;/script&gt;
&lt;/component&gt;</code></pre></div><p>— сохранить в файл с расширением «wsc».<br />Так как я не знаю, где его нужно использовать, то приведу пример вызова из VBSript:<br /></p><div class="codebox"><pre><code>Set JS = GetObject(&quot;script:&quot; &amp; WScript.ScriptFullName &amp; &quot;\..\JS.wsc&quot;)
MsgBox JS.eval(&quot;2*2&quot;)

Set JsGlobal = JS.eval(&quot;this&quot;)
MsgBox JsGlobal.Math.PI
</code></pre></div><p>То же на AutoHotkey <em>(добавлено 30.12.2013)</em>:<br /></p><div class="codebox"><pre><code>JS := ComObjGet(&quot;script:&quot; . A_ScriptDir . &quot;\JS.wsc&quot;)
MsgBox % JS.eval(&quot;2*2&quot;)

JsGlobal := JS.eval(&quot;this&quot;)
MsgBox % JsGlobal.Math.PI
</code></pre></div><p>Вместо трансляции функции <em>eval()</em> можно сразу передавать глобальный объект JScript (хотя код wsc в этом случае будет чуть менее минималистичным) или и то и другое сразу, хотя достаточно чего-либо одного — второе можно будет получить через него. (Хотя, к слову, из <em>htmlfile</em> передать глобальный объект JScript в VBScript&nbsp; мне не удалось.)</p><p>--------------------<br /><em>02.01.2014:</em> Добавил решение в коллекцию: <a href="http://forum.script-coding.com/viewtopic.php?id=9101">AHK: Выполненние JScript-кода с помощью WSC</a>.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 11 Dec 2012 22:11:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66889#p66889</guid>
		</item>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66886#p66886</link>
			<description><![CDATA[<p>Спасибо, думаю, это подойдёт. Без WScript постараюсь обойтись <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (vo1ty)]]></author>
			<pubDate>Tue, 11 Dec 2012 19:04:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66886#p66886</guid>
		</item>
		<item>
			<title><![CDATA[Re: COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66884#p66884</link>
			<description><![CDATA[<p>Есть Microsoft Script Control. Правда, WScript в нём тоже нет, т.к. это объект Windows Script Host (wscript.exe/cscript.exe).</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Tue, 11 Dec 2012 18:25:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66884#p66884</guid>
		</item>
		<item>
			<title><![CDATA[COM-объект, умеющий исполнять JScript.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=66865#p66865</link>
			<description><![CDATA[<p>Доброго времени суток! Вопрос у меня следующий. Есть ли в Windows такой ActiveX объект, который умеет &quot;заглатывать&quot; JScript? &quot;htmlfile&quot; не подходит, поскольку, скажем, если скормить ему вот это:<br /></p><div class="codebox"><pre><code>var WSO = new ActiveXObject(&#039;Scripting.WindowSystemObject&#039;);</code></pre></div><p>Он скажет, что ему не удалось завершить действие. Также нет доступа к WScript, файловой системе и многому другому.</p>]]></description>
			<author><![CDATA[null@example.com (vo1ty)]]></author>
			<pubDate>Tue, 11 Dec 2012 15:35:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=66865#p66865</guid>
		</item>
	</channel>
</rss>
