<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JScript: Работа с WinAPI без регистрации в реестре]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10046</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10046&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JScript: Работа с WinAPI без регистрации в реестре».]]></description>
		<lastBuildDate>Sun, 12 Oct 2014 19:59:01 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87291#p87291</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>1. весь код внести в одну безымянную функцию, вызываемую in-place<br /></p><div class="codebox"><pre><code>
(function()
{
})();
</code></pre></div></blockquote></div><p>Окей. </p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>2. отказаться от метода Function.prototype.GetResource и полностью перенести функционал в функцию GetResource, чтобы &quot;не засорять&quot; прототип Function. Ведь Function.prototype.GetResource используется единожды - для распаковки ресурсов. <br />3. Сами ресурсы прятать в комментарии вида <strong>/*![[ ]]*/</strong>. Такие комментарии (с дополнительным восклицательным знаком) называются &quot;важными&quot; и умными сжимателями кода не удаляются.</p></blockquote></div><p>Да проще отказаться от ресурсов и конвертировать данные в строковые литералы. Согласен, что нужно избегать расширения прототипов тогда, когда это не критично.</p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>4. Рекомендовать два способа использования<br /><strong>Способ А</strong><br />Вставить предложенный код в начале своего проекта</p><p><strong>Способ Б</strong><br />Положить файл рядом со файлом своего проекта и в его начале выполнить код:<br /></p><div class="codebox"><pre><code>
eval(function()
{
// открыть файл
// прочитать содержимое в переменную
// вернуть результат
}());
</code></pre></div><p>Как модификация всего. Весь код оформить в виде именованной функции (имя придумайте сами) и использовать <em>почти</em> аналогично сказанному выше</p><p><strong>Способ В</strong>: используется особенность javascript - неявное &quot;всплывание&quot; объявлений функций<br /></p><div class="codebox"><pre><code>
имя_функции();
// начинайте писать код с этого места :)
// вставить код в конце своего проекта
</code></pre></div></blockquote></div><p>Оба способа приемлимы.</p><p>Давайте еще подумаем как уменьшить скрипт. Может быть можно справиться с копированием wscript.exe? Если получится, то код существенно сократится. Плюс я говорил об использовании cab.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 12 Oct 2014 19:59:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87291#p87291</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87278#p87278</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p><strong>И вопрос новичка.</strong> Создание новой копии wscript.exe обязательно? Читал, но ни разу не пользовался таким свойством.</p></blockquote></div><p>Естественно, при запуске WScript.exe в порядке приоритета сперва рассматриваются манифесты внутри каталога, где он лежит, а потом уже WinSxS. В этом суть переносного подхода.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 12 Oct 2014 17:14:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87278#p87278</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87277#p87277</link>
			<description><![CDATA[<p><strong>Rumata</strong>, да,&nbsp; обязательно. Казалось бы можно было скопировать его из системной директории, но не всегда это получается при ограниченных правах.&nbsp; Может быть через cmd стоит попробовать.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 12 Oct 2014 17:13:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87277#p87277</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87276#p87276</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Если есть у кого-то мысли по оптимизации</p></blockquote></div><p>Несколько вариантов. Можно использовать вместе или по отдельности. </p><p>1. весь код внести в одну безымянную функцию, вызываемую in-place<br /></p><div class="codebox"><pre><code>
(function()
{
})();
</code></pre></div><p>2. отказаться от метода Function.prototype.GetResource и полностью перенести функционал в функцию GetResource, чтобы &quot;не засорять&quot; прототип Function. Ведь Function.prototype.GetResource используется единожды - для распаковки ресурсов. <br />3. Сами ресурсы прятать в комментарии вида <strong>/*![[ ]]*/</strong>. Такие комментарии (с дополнительным восклицательным знаком) называются &quot;важными&quot; и умными сжимателями кода не удаляются. <br />4. Рекомендовать два способа использования</p><p><strong>Способ А</strong><br />Вставить предложенный код в начале своего проекта</p><p><strong>Способ Б</strong><br />Положить файл рядом со файлом своего проекта и в его начале выплнить код:<br /></p><div class="codebox"><pre><code>
eval(function()
{
// открыть файл
// прочитать содержимое в переменную
// вернуть результат
}());
</code></pre></div><p>Как модификация всего. Весь код оформить в виде именованной функции (имя придумайте сами) и использовать <em>почти</em> аналогично сказанному выше</p><p><strong>Способ В</strong>: используется особенность javascript - неявное &quot;всплывание&quot; объявлений функций<br /></p><div class="codebox"><pre><code>
имя_функции();
// начинайте писать код с этого места :)
// вставить код в конце своего проекта
</code></pre></div><p><strong>И вопрос новичка</strong>. Создание новой копии wscript.exe обязательно? Читал, но ни разу не пользовался таким свойством.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Sun, 12 Oct 2014 16:37:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87276#p87276</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87275#p87275</link>
			<description><![CDATA[<p>Т.е. <a href="http://forum.script-coding.com/viewtopic.php?pid=27422#p27422">отсюда</a> (только с обновлёнными данными для версии 2.1). А, Вы только интерпретатор вытаскиваете, ясно.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:50:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87275#p87275</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87274#p87274</link>
			<description><![CDATA[<p>В коде используется только 32-битная версия. Вот манифесты.</p><p>wscript.exe.manifest<br /></p><div class="codebox"><pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;assembly xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot; manifestVersion=&quot;1.0&quot;&gt;

&lt;assemblyIdentity
  type=&quot;win32&quot;
  name=&quot;wscript.exe&quot;
  version=&quot;1.0.0.0&quot; /&gt; 

  &lt;dependency&gt;
          &lt;dependentAssembly&gt;
              &lt;assemblyIdentity
                  type=&quot;win32&quot;
                  name=&quot;dynwrapx.sxs&quot;
                  version=&quot;2.1.0.0&quot; /&gt;
          &lt;/dependentAssembly&gt;
  &lt;/dependency&gt;

&lt;/assembly&gt;
</code></pre></div><p>dynwrapx.sxs.manifest<br /></p><div class="codebox"><pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;assembly xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot; manifestVersion=&quot;1.0&quot;&gt;

&lt;assemblyIdentity
    type=&quot;win32&quot;
    name=&quot;dynwrapx.sxs&quot;
    version=&quot;2.1.0.0&quot; /&gt;

&lt;file name=&quot;dynwrapx.dll&quot;&gt;
     &lt;comClass
        clsid=&quot;{89565276-A714-4a43-912E-978B935EDCCC}&quot;
        threadingModel=&quot;Both&quot;
        progid=&quot;DynamicWrapperX&quot; /&gt;
&lt;/file&gt;

&lt;/assembly&gt;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:35:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87274#p87274</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87273#p87273</link>
			<description><![CDATA[<p><strong>JSman</strong>, я же не могу сходу Resources распарсить. Вам сподручнее. )<br />Мне нужно сразу иметь оба варианта на потенциальный запуск (внутренняя переменная среды даст имя папки x32/x64).<br />P.S. Хотя полагаю там всего пару строк надо поправить в манифестах. Компонент и интерпретатор и так при мне.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:30:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87273#p87273</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87272#p87272</link>
			<description><![CDATA[<p><strong>Flasher</strong>, я опубликовал универсальное решение. Оно запускается на 32-битных и 64-битных системах. Если нет, поправьте.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:22:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87272#p87272</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87271#p87271</link>
			<description><![CDATA[<p><strong>JSman</strong><br />Вы бы прямо тут манифест для x64 выложили, чтобы не перепрыгивать с x32 для запуска.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:14:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87271#p87271</guid>
		</item>
		<item>
			<title><![CDATA[JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=87269#p87269</link>
			<description><![CDATA[<p>Я думаю многие на форуме привыкли работать с <strong>DynamicWrapperX</strong>, написанного коллегой <strong>YMP</strong>. Но иногда крайне не хочется оставлять следы в реестре. Проблема решается использованием технологии манифестов.</p><p>Код, который вложен в пост, перечислит открытые окна с использованием WinAPI.</p><p>Вкратце по алгоритму. Файл js хранит в себе ресурсы (2 манифеста, ActiveX-библиотеку и wscript.exe). При первом запуске осуществляется их проверка наличия возле файла скрипта. Далее, ресурсы распаковываются, после чего заново осуществляется запуск нашего js, но с помощью распакованного хоста wscript.exe.</p><p>Если есть у кого-то мысли по оптимизации, я буду рад слышать. Представляется, что одним из направлений оптимизации является сжатие кода путем вложения cab-архива, в котором находятся все 4 ресурса.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Sun, 12 Oct 2014 15:06:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=87269#p87269</guid>
		</item>
	</channel>
</rss>
