<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=12456</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12456&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS: Перечислить имена системных шрифтов (VBS >> JS)».]]></description>
		<lastBuildDate>Thu, 23 Feb 2017 19:20:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113148#p113148</link>
			<description><![CDATA[<p>По ощущениям тут много лишнего.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 23 Feb 2017 19:20:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113148#p113148</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113145#p113145</link>
			<description><![CDATA[<p>Нет времени. И это работает.</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Thu, 23 Feb 2017 19:08:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113145#p113145</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113142#p113142</link>
			<description><![CDATA[<p><strong>martyn-k</strong><br />Зачем же сохранять и выполнять vbs, если можно то же самое на JS выполнить? о_0</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 23 Feb 2017 18:45:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113142#p113142</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113140#p113140</link>
			<description><![CDATA[<p>Вот, что получилось по итогу:<br /></p><div class="codebox"><pre><code>
var fonts_arr = get_font_list (false).replace(/&amp; /g, &quot;\n&quot;).split(&quot;\n&quot;);
var w = new Window(&quot;palette {preferredSize: [300, 200]}&quot;, &quot;&quot;, undefined, {resizeable:true});
w.add(&quot;dropdownlist&quot;, undefined, fonts_arr);
w.show();

function get_font_list (replace)
{ 
          var data_folder_name = &quot;u_data&quot;;
          var fonts_file_name = &quot;font_list.txt&quot;;
          var script_name = &quot;get_fonts.vbs&quot;;
          if ($.os.indexOf(&quot;Windows&quot;) != -1)
          {
                 var data_folder = new Folder(&quot;~&quot; + &quot;\\&quot; + data_folder_name);
                 if (!data_folder.exists) data_folder.create();
                 
                 var data_folder_fs_name = data_folder.fsName.replace(/\\/g, &quot;\\\\&quot;);
                 
                 var system_fonts_folder = Folder(Folder.system.parent.fsName + &quot;\\Fonts&quot;);

                 var font_list_file = new File(data_folder_fs_name + &quot;\\&quot; + fonts_file_name);

                 if (font_list_file.exists &amp;&amp; (font_list_file.modified.getTime() &gt; system_fonts_folder.modified.getTime()))
                 {
                        return read_txt (font_list_file);
                 }
                 
                 var script_fs_name = data_folder_fs_name + &quot;\\&quot; + script_name;
                                                      
                 var script_file = new File(script_fs_name);
                 if (!script_file.exists)
                 {
                        var vbs_code = &#039;GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv&quot;)._\
EnumValues &amp;H80000002, &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&quot;, arrNames\
n = UBound(arrNames)\
Do\
    nn = -1\
    For j = LBound(arrNames) to n - 1\
        If arrNames(j) &gt; arrNames(j + 1) Then : TempValue = arrNames(j + 1) : arrNames(j + 1) = arrNames(j) : arrNames(j) = TempValue : nn = j : End If\
    Next\
    n = nn\
Loop Until nn = -1\
For Each Name In arrNames : strValue = strValue &amp; vbCrLf &amp; Name : Next\
CreateObject(&quot;Scripting.FileSystemObject&quot;).CreateTextFile(&quot;&#039; + data_folder_fs_name + &#039;\\\\&#039; + fonts_file_name + &#039;&quot;,1).Write Mid(strValue, 2)&#039;;
                        script_file.open(&quot;w&quot;);
                        script_file.write(vbs_code);
                        script_file.close();
                 }
                 system.callSystem(&quot;wscript.exe &quot; + data_folder_fs_name + &quot;\\&quot; + script_name);
                 return read_txt (font_list_file);
          }
          else
          {
                  //system.callSystem(); //тут пока пусто
           }
}

function read_txt (txt_file)
{
    txt_file.open(&quot;r&quot;);
    var content = txt_file.read();
    txt_file.close();
    return content;
}
</code></pre></div><p>Из кода, думаю, все понятно: сохраняется vbs-файл, потом он запускается и сохраняет txt-файл (это все Ваше). Если в системной папке со шрифтами произошли изменения, то нужно этот файл перезаписать, а иначе читать из него.<br />Со всеми сохранениями у меня это выполняется за 450 мс, из них чтение — 300 мс.</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Thu, 23 Feb 2017 18:35:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113140#p113140</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113006#p113006</link>
			<description><![CDATA[<p><strong>Flasher</strong>, СПАСИБО!<br />Очень благодарен Вам за все Ваши варианты!<br />Пусть Господь благословит Вас на все доброе!!!</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Tue, 21 Feb 2017 21:32:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113006#p113006</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113004#p113004</link>
			<description><![CDATA[<p>Я же привёл цитату. Там сказано о записи в переменные jsx-кода. А приводите опять вывод в файл.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 21 Feb 2017 20:50:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113004#p113004</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113003#p113003</link>
			<description><![CDATA[<p>Думаю, не стоит трать время, зависания происходили после экспериментов с кавычками и с использованием параметра start:<br /></p><div class="codebox"><pre><code>system.callSystem(&quot;cmd.exe /c \&quot; start cscript.exe D:\\info\\ae\\scripts\\TEST_TEMP_SCRIPTS\\fonts.vbs &gt; D:\\fonts1.txt\&quot;&quot;);</code></pre></div><p>От его использования я отказался.<br />Мне понравилось это:<br /></p><div class="codebox"><pre><code>reg query HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&gt;D:\\f.txt</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Tue, 21 Feb 2017 20:46:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113003#p113003</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=113000#p113000</link>
			<description><![CDATA[<p><strong>martyn-k</strong><br />Пожалуйста. Вот с этим бы ещё разобраться:<br /></p><div class="quotebox"><blockquote><p>Возвращать значение напрямую рисковано (записывать его в переменную), Афтер бывало ждал-ждал, и зависал.</p></blockquote></div><p>Как выглядела запись?</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 21 Feb 2017 19:09:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=113000#p113000</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112998#p112998</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />На AE CC 2015 тоже записалось.<br />Вы дали решение. ОГРОМНОЕ СПАСИБО!</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Tue, 21 Feb 2017 18:24:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112998#p112998</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112996#p112996</link>
			<description><![CDATA[<p><strong>martyn-k</strong><br />Этот пункт на CS4 у меня ничего не выводит. Выбрал скрипт через первый пункт:<br /></p><div class="codebox"><pre><code>system.callSystem(&quot;wscript.exe D:\\Fonts.vbs&quot;);</code></pre></div><p>Запускался этот:</p><div class="codebox"><pre><code>GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv&quot;)._
EnumValues &amp;H80000002, &quot;SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts&quot;, Arr
For Each Name In Arr : S = S &amp; vbCr &amp; Name : Next
CreateObject(&quot;Scripting.FileSystemObject&quot;).CreateTextFile(&quot;D:\Fonts.txt&quot;,1).Write Mid(S, 2)</code></pre></div><p>Всё записалось без висов.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 21 Feb 2017 18:04:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112996#p112996</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112981#p112981</link>
			<description><![CDATA[<p><strong>Flasher</strong><br />Не сработало. &quot;Ошибка: Не удается найти указанный раздел или параметр в реестре&quot;.<br />Прописывать: Меню File-&gt;Scripts-&gt;Open Script Editor. Запуск: F5.</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Tue, 21 Feb 2017 09:59:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112981#p112981</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112974#p112974</link>
			<description><![CDATA[<p><strong>martyn-k</strong><br />В первом варианте нужно так: ...\\Windows<span style="color: red"><strong>\&quot; \&quot;</strong></span>NT\\...</p><p>Скачал AE. Куда прописывать?</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 21 Feb 2017 00:16:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112974#p112974</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112968#p112968</link>
			<description><![CDATA[<p><strong>Flasher</strong>, спасибо.<br />Простите, со слешами, это невнимательность, я пробовал разные варианты:<br />Вариант 1, просто запрос:<br /></p><div class="codebox"><pre><code>var str = system.callSystem(&quot;reg query HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&gt;D:\\f.txt&quot;);
alert (str);</code></pre></div><p><span class="postimg"><img src="http://www.imageup.ru/img122/2688374/1.jpg" alt="http://www.imageup.ru/img122/2688374/1.jpg" /></span><br />Вариант 2, без кавычек:<br /></p><div class="codebox"><pre><code>var str = system.callSystem(&quot;cmd.exe /c reg query HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&gt;D:\\f.txt&quot;);
alert (str);</code></pre></div><p>Появляется пустой алерт. И создается пустой текстовый файл.<br />Вариант 3, дополнительные кавычки, это советовали на форумах по After Effects:<br /></p><div class="codebox"><pre><code>var str = system.callSystem(&#039;cmd.exe /c \&quot; \&quot;reg query HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&gt;D:\\f.txt\&quot;\&quot;&#039;);
alert (str);</code></pre></div><p><span class="postimg"><img src="http://www.imageup.ru/img122/2688392/3.jpg" alt="http://www.imageup.ru/img122/2688392/3.jpg" /></span><br />Вариант 4, без /c:<br /></p><div class="codebox"><pre><code>var str = system.callSystem(&#039;cmd.exe reg query HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts&gt;D:\\f.txt&#039;);
alert (str);</code></pre></div><p><span class="postimg"><img src="http://www.imageup.ru/img122/2688396/4.jpg" alt="http://www.imageup.ru/img122/2688396/4.jpg" /></span><br />Вариант 5, взял в кавычки запрос:<br /></p><div class="codebox"><pre><code>var str = system.callSystem(&quot;cmd /c reg query \&quot;HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts\&quot;&gt;D:\\f.txt&quot;);
alert (str);</code></pre></div><p>Промелькает консоль со списком:<br /><span class="postimg"><img src="http://www.imageup.ru/img122/2688405/5.jpg" alt="http://www.imageup.ru/img122/2688405/5.jpg" /></span><br />Затем пустой алерт. Создается пустой текстовый файл. Если закрывающую кавычку (после Fonts) переношу в самый конец, появляется только пустой алерт, файл не создается.<br />Кратко: /с ставил в разные места, %20, одинарную кавычку, одинарный слеш - все это или не работает, или в алерте пишет про ошибку или отсутствие прав. Без cmd - пишет, что системе не удается найти указанный файл.</p>]]></description>
			<author><![CDATA[null@example.com (martyn-k)]]></author>
			<pubDate>Mon, 20 Feb 2017 20:58:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112968#p112968</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112875#p112875</link>
			<description><![CDATA[<p><strong>martyn-k</strong><br />Почему после D: нет \\ ? Кавычка перед start и в конце обязательна?<br />REG имеет код возврата (0/1 = успешно/нет). В цитате я не увидел, что нужно запускать именно через cmd /c.<br />Нужно выяснить, какой код ждёт AE. Мы же можем использовать WSH.Quit(&quot;&lt;код выхода&gt;&quot;).<br />В каком смысле имена разбросаны? Они же по алфавиту идут.<br /></p><div class="codebox"><pre><code>GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv&quot;)._
EnumValues &amp;H80000002, &quot;SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts&quot;, Arr
For Each Name In Arr : S = S &amp; vbCr &amp; Name : Next  : WSH.Echo Mid(S, 2)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 19 Feb 2017 18:50:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112875#p112875</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=112872#p112872</link>
			<description><![CDATA[<p><span style="color: green"><strong>martyn-k</strong></span><br /><span style="color: green"><a href="http://forum.script-coding.com/misc.php?action=rules">Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.</a><br />Исправьте всюду в двух последних опубликованных постах на форуме.</span></p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Sun, 19 Feb 2017 18:09:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=112872#p112872</guid>
		</item>
	</channel>
</rss>
