<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7303</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7303&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS, JScript: получить список ДиспетчерЗадач - Приложения».]]></description>
		<lastBuildDate>Thu, 28 Jun 2012 12:39:40 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61253#p61253</link>
			<description><![CDATA[<p>Список окон &quot;как в Диспетчере&quot; получить не удалось, но для моей задачи хватило принципа как в приведенном скрипте.</p><p>По каждому процессу получаем &quot;Заголовок окна&quot; а там уж сами решайте - подходит или не подходит.</p><p>Всем участникам благодарен за внимание к моему вопросу и оживленную дискуссию.<br />Надеюсь на дальнейшее плодотворное сотрудничество. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><div class="codebox"><pre><code>&#039; окно процесса

  Set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)

  if Instr(1, WScript.FullName, &quot;WScript.exe&quot;, 1) &gt; 0 Then
     WshShell.Run &quot;CScript &quot;&quot;&quot; &amp; WScript.ScriptFullName &amp; &quot;&quot;&quot;&quot;, 0
     Set WshShell = Nothing
     WScript.Quit 1
  End if

  strComputer = &quot;.&quot;

  Set objWMIService = GetObject(&quot;winmgmts:&quot; _
      &amp; &quot;{impersonationLevel=impersonate}!\\&quot; _ 
      &amp; strComputer &amp; &quot;\root\cimv2&quot;) 

  Set colProcess = objWMIService.ExecQuery _
      (&quot;Select * from Win32_Process&quot;)

  Set Stream   = CreateObject(&quot;ADODB.Stream&quot;)

  For Each objProcess in colProcess
      Set WshExec = WshShell.Exec(&quot;cmd&quot;)
      With WshExec.StdIn
           .WriteLine &quot;tasklist /FI &quot;&quot;IMAGENAME eq &quot; + objProcess.Name + &quot;&quot;&quot; /V /FO &quot;&quot;LIST&quot;&quot;&quot;
           .WriteLine &quot;exit&quot;
      End With
      ss = WshExec.StdOut.ReadAll
      ss = StrConv(ss, &quot;Windows-1251&quot;, &quot;cp866&quot;)
      MsgBox ss
      Set WshExec = Nothing
  Next

  Set Stream   = Nothing
  Set WshShell = Nothing

  WScript.Quit 0


&#039; конвертация из DOS в WINDOWS
Function StrConv(Text, SourceCharset, DestCharset)
    Stream.Type = 2
    Stream.Mode = 3
    Stream.Open
    Stream.Charset = SourceCharset
    Stream.WriteText Text
    Stream.Position = 0
    Stream.Charset = DestCharset
    StrConv = Stream.ReadText
    Stream.Close
End Function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Thu, 28 Jun 2012 12:39:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61253#p61253</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61248#p61248</link>
			<description><![CDATA[<div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>ну положим даже и кнопки на формах и прочие лейблы это тоже окна</p></blockquote></div><p>Угу.</p><div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>конечно не все, что видим в систрее это окна…</p></blockquote></div><p>Что мы видим в System Tray — совсем не те окна.</p><div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>…но окна присутвуют либо незримо, либо без областей</p></blockquote></div><p>Угу. Либо вовсе отсутствуют.</p><br /><p>Я так понимаю: надо найти соответствие между стилями окон и перечнем окон в Диспетчере задач. Хотя можно поступить и иначе: найти блуждающие по Сети исходные коды одной из версий Windows 2000 <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 27 Jun 2012 19:24:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61248#p61248</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61244#p61244</link>
			<description><![CDATA[<p>ну положим даже и кнопки на формах и прочие лейблы это тоже окна<br />конечно не все, что видим в систрее это окна, но окна присутвуют либо незримо, либо без областей</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Wed, 27 Jun 2012 17:16:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61244#p61244</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61237#p61237</link>
			<description><![CDATA[<p><strong>Slav</strong>, можете продолжать верить в то, что иконки в SystemTray — это окна. Я давно понял, что Ваши убеждения — самые правильные.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 27 Jun 2012 06:40:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61237#p61237</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61236#p61236</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>...<br /></p><div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Иконка такое же окно.</p></blockquote></div><p>Нет.</p><div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Есть программы, для которых она даже является parent.</p></blockquote></div><p>Которых?</p></blockquote></div><p>alexii,</p><p>предлагаю Вам запустить команду из поста #10 коллеги <strong>smaharbA</strong> и убедиться в этом самому.</p><p>Я пользуюсь русским драйвером Punto Switcher.<br />Висит <em>иконкой</em> в трее и замечательно делает свое дело.<br />Вот строка из списка видимых окон на моем компе:</p><div class="codebox"><pre><code>&quot;punto.exe&quot;,&quot;8508&quot;,&quot;Console&quot;,&quot;0&quot;,&quot;4 656 КБ&quot;,&quot;Работает&quot;,&quot;МойДомен\яПользователь&quot;,&quot;0:00:00&quot;,&quot;Punto Switcher Main Window&quot;</code></pre></div><p>В принципе можем продолжить эту тему.<br />Но я бы попросил у Вас о другом.<br />К сожалению, PowerShell я не знаю совсем.<br />Чтобы не открывать кросс-тему в другом разделе не могли бы Вы здесь разместить скрипт на PowerShell по моему вопросу:<br />в цикле (например, с периодом 3 секунды) анализировать все видимые окна на предмет их названий.</p><p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Wed, 27 Jun 2012 05:28:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61236#p61236</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61233#p61233</link>
			<description><![CDATA[<p>«основное окно» —:<br /></p><div class="quotebox"><blockquote><p>Главное окно — это окно, создаваемое при запуске процесса. После инициализации могут быть открыты другие окна, включая окна Modal и TopLevel, но первым окном, связанным с процессом, будет оставаться главное окно.</p><p>Можно получать свойство MainWindowHandle только для процессов, запущенных на локальном компьютере. Значение свойства MainWindowHandle — это значение, которое однозначно определяет окно, связанное с процессом.</p><p>Главное окно связывается с процессом только при наличии графического интерфейса у данного процесса. Если связанный процесс не имеет главного окна, значение свойства MainWindowHandle равно нулю.</p></blockquote></div><div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>В списке Диспетчера видны как раз не &quot;основные окна&quot; - а видимые.</p></blockquote></div><p>Не совсем так: видимые окна верхнего уровня.</p><div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Иконка такое же окно.</p></blockquote></div><p>Нет.</p><div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Есть программы, для которых она даже является parent.</p></blockquote></div><p>Которых?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 26 Jun 2012 19:01:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61233#p61233</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61224#p61224</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Коллега, надеюсь, Вы понимаете, что перед тем, как добавлять процесс в список, нужно ещё проверять, является ли его основное окно видимым или скрытым?</p><p>P.S. Иконка — не окно. Иконки в System Tray не имеют никакого отношения к окнам.</p></blockquote></div><p>alexii,</p><p>1) Не понял термина &quot;основное окно&quot;. У стандартного windows-приложения есть parent-окно и, возможно, chield-окна. Parent-окно совсем не обязательно может быть видимым - программа может работать как некий монитор и при необходимости генерировать chield-окна (сообщения, диалоги и т.д.)<br />В списке Диспетчера видны как раз не &quot;основные окна&quot; - а видимые.<br />Которые могут быть и parent и chield.</p><p>2) Иконка такое же окно. Есть программы, для которых она даже является parent.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Tue, 26 Jun 2012 08:54:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61224#p61224</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61223#p61223</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>...Ваша программа почему-то показал два Диспетчера (курсивом). Он же сам показал только три (выделено жирным) - так оно и есть, хотя сам Диспетчер должен был бы отображаться в собственном окне.</p></blockquote></div><p>Rumata,</p><p>посмотрел внимательно - согласен, с Диспетчером какие-то непонятки.<br />Но это - скажем так - проблемы второстепенные, можно самому обработать.</p><p>Проблемы первостепенные этого подхода - исключительно на мой взгляд - следующие:<br />1) Нужен Word<br />2) Нет реакции на событие.<br />Ну и для полной гармонии - хотелось бы узнать для окна его процесс.<br />Но в рамках объекта Task это невозможно.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Tue, 26 Jun 2012 08:38:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61223#p61223</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61222#p61222</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>1) Да, я могу получить MainWindowTitle процесса. Но ведь у каждого процесса в Windows есть главное окно - даже если его никто никогда не видел. Т.е. на каждый процесс мне по любому что-то вернется - но это не будет &quot;список из первой вкладки ДиспетчераЗадач - Приложения (в английском варианте Applications).&quot; А мне нужен именно он.</p></blockquote></div><p>Коллега, надеюсь, Вы понимаете, что перед тем, как добавлять процесс в список, нужно ещё проверять, является ли его основное окно видимым или скрытым?</p><p>P.S. Иконка — не окно. Иконки в System Tray не имеют никакого отношения к окнам.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 26 Jun 2012 08:34:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61222#p61222</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61220#p61220</link>
			<description><![CDATA[<div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>( tasklist /fi &quot;Пользователь eq %username%&quot; /fo csv /nh /v 2&gt; nul || tasklist /fi &quot;username eq %username%&quot; /fo csv /nh /v ) | find /v &quot;Н/Д&quot;</p></blockquote></div><p>smaharbA,</p><p>спасибо - лаконично и... <em>почти</em> то, что надо.</p><p>К сожалению, в список попадают так же те программы, которые в трее внизу справа.<br />Логично - главное окно-иконка видна.<br />Но мне как раз этого не нужно.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Tue, 26 Jun 2012 08:12:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61220#p61220</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61218#p61218</link>
			<description><![CDATA[<p>( tasklist /fi &quot;Пользователь eq %username%&quot; /fo csv /nh /v 2&gt; nul || tasklist /fi &quot;username eq %username%&quot; /fo csv /nh /v ) | find /v &quot;Н/Д&quot;</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 26 Jun 2012 06:26:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61218#p61218</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61217#p61217</link>
			<description><![CDATA[<div class="quotebox"><cite>Slav пишет:</cite><blockquote><p>Word.Application</p></blockquote></div><p>Визуально сравнил списки приложений: один, полученный с помощью кода из первого сообщения и второй - с помощью Диспетчера Задач. Они различаются. </p><div class="quotebox"><blockquote><p>C:\PROGS\SCRIPTS\JavaScript&gt;ver</p><p>Microsoft Windows [Version 6.0.6002]</p><p>C:\PROGS\SCRIPTS\JavaScript&gt;cscript z.vbs<br />Microsoft (R) Windows Script Host Version 5.7<br />Copyright (C) Microsoft Corporation. All rights reserved.</p><p><em>Windows Task Manager</em><br />Start<br /><strong>cscript z.vbs - Far 2.0.1807 x86 Администратор<br />Серый форум / VBS, JScript: получить список ДиспетчерЗадач - Приложения - Mozilla Firefox<br />Inbox - Microsoft Outlook</strong><br /><em>Windows Task Manager</em><br />Program Manager</p></blockquote></div><p>Ваша программа почему-то показал два Диспетчера (курсивом). Он же сам показал только три (выделено жирным) - так оно и есть, хотя сам Диспетчер должен был бы отображаться в собственном окне.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 26 Jun 2012 06:12:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61217#p61217</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61216#p61216</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>Slav</strong>, в таком разе пользуйте PowerShell. Там у класса <a href="http://msdn.microsoft.com/ru-ru/library/system.diagnostics.process.aspx">System.Diagnostics.Process</a> непосредственно есть свойство <a href="http://msdn.microsoft.com/ru-ru/library/system.diagnostics.process.mainwindowtitle.aspx">Process.MainWindowTitle</a>.</p></blockquote></div><p>alexii,</p><p>видимо все-таки придется осваивать PowerShell - правда придется переехать в другой раздел форума. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Посмотрел Вашу ссылку. Не совсем то, что мне нужно. Или я плохо смотрел?</p><p>1) Да, я могу получить MainWindowTitle процесса. Но ведь у каждого процесса в Windows есть главное окно - даже если его никто никогда не видел. Т.е. на каждый процесс мне по любому что-то вернется - но это не будет &quot;список из первой вкладки ДиспетчераЗадач - Приложения (в английском варианте Applications).&quot; А мне нужен именно он.<br />Если Вы посмотрите мой пример из первого поста, то там эта задача решается использованием <em>Task.Visible </em> - ничего похожего в System.Diagnostics.Process я не нашел.</p><p>2) Ну очень хочется узнавать о появлении нового приложения (фактически - нового видимого окна) по событию. Не хочу в цикле опрашивать каждую секунду, две, три... список процессов, узнавать у каждого его окно а потом гадать - оно видимое или нет.</p><p>Пока приспособил для своей задачи <em>tasklist</em> - чуть позже выложу отлаженый скрипт.</p><p>Да, пожалуй, уточню задачу - может вариантов станет больше.<br />Есть процесс с известным мне именем - именно процесс. В зависимости от ситуации этот процесс создает видимые окна, которые - естесственно - появляются в списке приложений. Именно приложений. Мне необходимо узнать о появлении очередного окна и получить его название - в этом названии нужная мне информация.<br />Если интересно - это задача из телефонии. Софтфон висит как процесс, когда поступает звонок создается видимое окно, в названии окна - абонент и его номер.</p>]]></description>
			<author><![CDATA[null@example.com (Slav)]]></author>
			<pubDate>Tue, 26 Jun 2012 05:26:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61216#p61216</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61203#p61203</link>
			<description><![CDATA[<p><strong>Slav</strong><br />Извините, не обратил внимание, что Вы говорите о приложениях.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 25 Jun 2012 12:38:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61203#p61203</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=61201#p61201</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>я считаю, что у любой задачи есть множество решений.</p></blockquote></div><p><strong>Slav</strong>, в таком разе пользуйте PowerShell. Там у класса <a href="http://msdn.microsoft.com/ru-ru/library/system.diagnostics.process.aspx">System.Diagnostics.Process</a> непосредственно есть свойство <a href="http://msdn.microsoft.com/ru-ru/library/system.diagnostics.process.mainwindowtitle.aspx">Process.MainWindowTitle</a>.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 25 Jun 2012 12:16:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=61201#p61201</guid>
		</item>
	</channel>
</rss>
