<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12456&amp;type=atom" />
	<updated>2017-02-23T19:20:35Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12456</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113148#p113148" />
			<content type="html"><![CDATA[<p>По ощущениям тут много лишнего.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-23T19:20:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113148#p113148</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113145#p113145" />
			<content type="html"><![CDATA[<p>Нет времени. И это работает.</p>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-23T19:08:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113145#p113145</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113142#p113142" />
			<content type="html"><![CDATA[<p><strong>martyn-k</strong><br />Зачем же сохранять и выполнять vbs, если можно то же самое на JS выполнить? о_0</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-23T18:45:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113142#p113142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113140#p113140" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-23T18:35:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113140#p113140</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113006#p113006" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong>, СПАСИБО!<br />Очень благодарен Вам за все Ваши варианты!<br />Пусть Господь благословит Вас на все доброе!!!</p>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-21T21:32:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113006#p113006</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113004#p113004" />
			<content type="html"><![CDATA[<p>Я же привёл цитату. Там сказано о записи в переменные jsx-кода. А приводите опять вывод в файл.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-21T20:50:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113004#p113004</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113003#p113003" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-21T20:46:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113003#p113003</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=113000#p113000" />
			<content type="html"><![CDATA[<p><strong>martyn-k</strong><br />Пожалуйста. Вот с этим бы ещё разобраться:<br /></p><div class="quotebox"><blockquote><p>Возвращать значение напрямую рисковано (записывать его в переменную), Афтер бывало ждал-ждал, и зависал.</p></blockquote></div><p>Как выглядела запись?</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-21T19:09:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=113000#p113000</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112998#p112998" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong><br />На AE CC 2015 тоже записалось.<br />Вы дали решение. ОГРОМНОЕ СПАСИБО!</p>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-21T18:24:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112998#p112998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112996#p112996" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-21T18:04:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112996#p112996</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112981#p112981" />
			<content type="html"><![CDATA[<p><strong>Flasher</strong><br />Не сработало. &quot;Ошибка: Не удается найти указанный раздел или параметр в реестре&quot;.<br />Прописывать: Меню File-&gt;Scripts-&gt;Open Script Editor. Запуск: F5.</p>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-21T09:59:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112981#p112981</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112974#p112974" />
			<content type="html"><![CDATA[<p><strong>martyn-k</strong><br />В первом варианте нужно так: ...\\Windows<span style="color: red"><strong>\&quot; \&quot;</strong></span>NT\\...</p><p>Скачал AE. Куда прописывать?</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-21T00:16:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112974#p112974</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112968#p112968" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[martyn-k]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34655</uri>
			</author>
			<updated>2017-02-20T20:58:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112968#p112968</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112875#p112875" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-19T18:50:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112875#p112875</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Перечислить имена системных шрифтов (VBS >> JS)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=112872#p112872" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2017-02-19T18:09:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=112872#p112872</id>
		</entry>
</feed>
