<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7303&amp;type=atom" />
	<updated>2012-06-28T12:39:40Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7303</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61253#p61253" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-28T12:39:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61253#p61253</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61248#p61248" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-27T19:24:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61248#p61248</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61244#p61244" />
			<content type="html"><![CDATA[<p>ну положим даже и кнопки на формах и прочие лейблы это тоже окна<br />конечно не все, что видим в систрее это окна, но окна присутвуют либо незримо, либо без областей</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-06-27T17:16:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61244#p61244</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61237#p61237" />
			<content type="html"><![CDATA[<p><strong>Slav</strong>, можете продолжать верить в то, что иконки в SystemTray — это окна. Я давно понял, что Ваши убеждения — самые правильные.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-27T06:40:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61237#p61237</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61236#p61236" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-27T05:28:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61236#p61236</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61233#p61233" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-26T19:01:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61233#p61233</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61224#p61224" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-26T08:54:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61224#p61224</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61223#p61223" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-26T08:38:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61223#p61223</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61222#p61222" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-26T08:34:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61222#p61222</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61220#p61220" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-26T08:12:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61220#p61220</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61218#p61218" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-06-26T06:26:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61218#p61218</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61217#p61217" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-06-26T06:12:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61217#p61217</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61216#p61216" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Slav]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=16491</uri>
			</author>
			<updated>2012-06-26T05:26:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61216#p61216</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61203#p61203" />
			<content type="html"><![CDATA[<p><strong>Slav</strong><br />Извините, не обратил внимание, что Вы говорите о приложениях.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-06-25T12:38:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61203#p61203</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS, JScript: получить список ДиспетчерЗадач - Приложения]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=61201#p61201" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-06-25T12:16:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=61201#p61201</id>
		</entry>
</feed>
