<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Перевод принтера из Offline в Online]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5372&amp;type=atom" />
	<updated>2016-02-11T14:29:27Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5372</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Перевод принтера из Offline в Online]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101018#p101018" />
			<content type="html"><![CDATA[<p>А управление принтерами через WMI разве не удобнее ? </p><p><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa394363(v=vs.85).aspx">MSDN</a></p><p>Я к тому, что глаголы (<strong>Verbs</strong>) работают с учётом языка системы. На иностранной версии Windows такой код видимо работать не будет.</p><p>А <strong>wmi</strong> вроде надёжнее ?</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2016-02-11T14:29:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101018#p101018</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Перевод принтера из Offline в Online]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100912#p100912" />
			<content type="html"><![CDATA[<p>Усовершенствовал скрипт возобновления принтеров.<br />1) Добавлена совместимость с Windows 7 (метод DoIt )<br />2) Добавлен пропуск:<br />- не-принтера &quot;Установка принтера&quot;;<br />- виртуальных PDF-принтеров;<br />- виртуальных Microsoft-принтеров;<br />- виртуального принтера APS-печать.<br />3) Добавлен вывод сообщений для пользователя.</p><div class="codebox"><pre><code>Set Shell = CreateObject(&quot;Shell.Application&quot;)
Set objFolder = Shell.NameSpace(4)
 
For Each printer In objFolder.Items
	if printer&lt;&gt;&quot;Установка принтера&quot; And InStr(printer,&quot;Microsoft&quot;)=0 And InStr(UCase(printer),&quot;PDF&quot;)=0 Then
		a=true
		wscript.echo chr(10)+chr(13)+&quot;Принтер &quot;+printer+ &quot; :&quot;
		If InstrRev(objFolder.GetDetailsOf(printer, 2), &quot;Не подключен&quot;) &lt;&gt; 0 OR Instr(objFolder.GetDetailsOf(printer, 2), &quot;Отключен&quot;) &gt; 0 Then &#039; если принтер в режиме &quot;Автономная работа&quot;
			For Each verb in printer.verbs
				If InStr(verb.Name,&quot;оперативн&quot;)&gt;0 Then verb.DoIt
			Next
			printer.InvokeVerbEx(&quot;&amp;Использовать принтер в оперативном режиме&quot;)
			if InstrRev(objFolder.GetDetailsOf(printer, 2), &quot;Не подключен&quot;) &lt;&gt; 0 OR Instr(objFolder.GetDetailsOf(printer, 2), &quot;Отключен&quot;) &gt; 0 Then
				wscript.echo &quot;ОШИБКА: в оперативный режим&quot;
			Else
				wscript.echo &quot;OK: в оперативный режим&quot;
			End If
			a=false
		End If
     
		If Instr(objFolder.GetDetailsOf(printer, 2), &quot;Приостановлен&quot;) &gt; 0 AND InStr(UCase(printer),&quot;APS&quot;)=0 Then &#039; если принтер в режиме &quot;Приостановленой печати&quot;
			For Each verb in printer.verbs
				If InStr(verb.Name,&quot;озобновить&quot;)&gt;0 Then verb.DoIt
			Next
        		printer.InvokeVerbEx(&quot;В&amp;озобновить печать&quot;)
        		printer.InvokeVerbEx(&quot;Возобновить &amp;печать&quot;)
			a=false
			If Instr(objFolder.GetDetailsOf(printer, 2), &quot;Приостановлен&quot;) &gt; 0 AND InStr(UCase(printer),&quot;APS&quot;)=0 Then &#039; если принтер в режиме &quot;Приостановленой печати&quot;
				wscript.echo &quot;ОШИБКА: возобновление&quot;
			Else
				wscript.echo &quot;OK: возобновление&quot;
			End If
		End If
		If a Then wscript.echo &quot;OK&quot;
	End If
Next</code></pre></div><p>Идея с методом DoIt позаимствована отсюда<br /><a href="https://www.autoitscript.com/forum/topic/70493-how-to-automate-rightclick-and-select-menu-item-on-one-of-the-list-view-item/">https://www.autoitscript.com/forum/topi … view-item/</a></p><p>Запуск скрипта</p><div class="codebox"><pre><code>CScript.exe /E:VBScript Start_Printers.vbs</code></pre></div>]]></content>
			<author>
				<name><![CDATA[GreenRain]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33662</uri>
			</author>
			<updated>2016-02-07T12:19:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100912#p100912</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Перевод принтера из Offline в Online]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=43889#p43889" />
			<content type="html"><![CDATA[<p>При помещении скрипта в <a href="http://forum.script-coding.com/viewtopic.php?id=5376">Коллекцию</a> желательно, как минимум, приводить его к читабельному виду: «<strong>E</strong>ach», «<strong>I</strong>n», «<strong>T</strong>hen», «<strong>E</strong>nd <strong>I</strong>f»; указать вложенность синтаксических конструкций табуляцией или пробелами. Такие слова, как «ничё», «нацарапал» — лучше не употреблять в Коллекции. Я взял на себя смелость сие поправить.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-01-16T20:05:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=43889#p43889</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Перевод принтера из Offline в Online]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=43658#p43658" />
			<content type="html"><![CDATA[<p>Немного модифицировал, учёл состояние приостановленной печати и комбинацию с автономным состоянием...<br /></p><div class="codebox"><pre><code>Set Shell = CreateObject(&quot;Shell.Application&quot;)
Set objFolder = Shell.NameSpace(4)
For each printer in objFolder.Items

If InstrRev(objFolder.GetDetailsOf(printer, 2),&quot;Не подключен&quot;)&lt;&gt;0 then &#039; если принтер в режиме &quot;Автономная работа&quot;
printer.InvokeVerbEx(&quot;&amp;Использовать принтер в оперативном режиме&quot;)
end if

If InstrRev(objFolder.GetDetailsOf(printer, 2),&quot;Приостановлена&quot;)&lt;&gt;0 then &#039; если принтер в режиме &quot;Приостановленой печати&quot;
printer.InvokeVerbEx(&quot;Возобновить &amp;печать&quot;)
end if

Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2011-01-13T07:57:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=43658#p43658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Перевод принтера из Offline в Online]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=43657#p43657" />
			<content type="html"><![CDATA[<p>Коллеги, приветствую !<br />По своей работе частенько сталкиваюсь с тем, что пользователи кривыми ручками переводят принтер в режим Offline, т.е. &quot;Автономная работа&quot; и потом кричат что принтер в состоянии &quot;не подключен&quot;, провода все проверили - на месте, но он ничё не печатает.<br />Вот по этому поводу нацарапал следующий скрипт, который переводит принтер в &quot;Оперативный режим&quot;, надеюсь кому-нибудь пригодится...<br /></p><div class="codebox"><pre><code>Set Shell = CreateObject(&quot;Shell.Application&quot;)
Set objFolder = Shell.NameSpace(4)
For each printer in objFolder.Items
If objFolder.GetDetailsOf(printer, 2)=&quot;Не подключен&quot; then &#039; если принтер в режиме &quot;Автономная работа&quot;
printer.InvokeVerbEx(&quot;&amp;Использовать принтер в оперативном режиме&quot;)
end if
Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2011-01-13T06:55:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=43657#p43657</id>
		</entry>
</feed>
