<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JScript: Работа с WinAPI без регистрации в реестре]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10046&amp;type=atom" />
	<updated>2014-10-12T19:59:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=10046</id>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87291#p87291" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2014-10-12T19:59:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87291#p87291</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87278#p87278" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p><strong>И вопрос новичка.</strong> Создание новой копии wscript.exe обязательно? Читал, но ни разу не пользовался таким свойством.</p></blockquote></div><p>Естественно, при запуске WScript.exe в порядке приоритета сперва рассматриваются манифесты внутри каталога, где он лежит, а потом уже WinSxS. В этом суть переносного подхода.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-10-12T17:14:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87278#p87278</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87277#p87277" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>, да,&nbsp; обязательно. Казалось бы можно было скопировать его из системной директории, но не всегда это получается при ограниченных правах.&nbsp; Может быть через cmd стоит попробовать.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2014-10-12T17:13:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87277#p87277</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87276#p87276" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2014-10-12T16:37:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87276#p87276</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87275#p87275" />
			<content type="html"><![CDATA[<p>Т.е. <a href="http://forum.script-coding.com/viewtopic.php?pid=27422#p27422">отсюда</a> (только с обновлёнными данными для версии 2.1). А, Вы только интерпретатор вытаскиваете, ясно.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-10-12T15:50:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87275#p87275</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87274#p87274" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2014-10-12T15:35:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87274#p87274</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87273#p87273" />
			<content type="html"><![CDATA[<p><strong>JSman</strong>, я же не могу сходу Resources распарсить. Вам сподручнее. )<br />Мне нужно сразу иметь оба варианта на потенциальный запуск (внутренняя переменная среды даст имя папки x32/x64).<br />P.S. Хотя полагаю там всего пару строк надо поправить в манифестах. Компонент и интерпретатор и так при мне.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-10-12T15:30:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87273#p87273</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87272#p87272" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong>, я опубликовал универсальное решение. Оно запускается на 32-битных и 64-битных системах. Если нет, поправьте.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2014-10-12T15:22:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87272#p87272</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87271#p87271" />
			<content type="html"><![CDATA[<p><strong>JSman</strong><br />Вы бы прямо тут манифест для x64 выложили, чтобы не перепрыгивать с x32 для запуска.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-10-12T15:14:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87271#p87271</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JScript: Работа с WinAPI без регистрации в реестре]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=87269#p87269" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2014-10-12T15:06:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=87269#p87269</id>
		</entry>
</feed>
