<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71415</guid>
        <pubDate>Mon, 13 Jan 2003 17:42:35 +0000</pubDate>
        <title>Все дочерние окна и процессы</title>
        <link>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71415</link>
        <description><![CDATA[Song: Вообщем решение есть, но мне его пока не написать по той причине что весь день на работе, а там даже компа нет пока, чтобы реализовать. Но если не терпится, можешь сам попробовать:<br><br>1.Запускаем сервер и браузер (ShellExecute).<br>2.Подождём пока загрузится страница в браузер - WaitForInputIdle()<br>3.Читаем дискриптор окна браузера - GetForeGroundWindow и определяем его класс, ну типа TOpera :-))<br>4.Запускаем нить - TThread, которая будет сканировать все верхние окна - EnumWindows(), на предмет того, есть ли окно с классом, который мы нашли на шаге 3.<br>5.Если после перебора всех окон, такого окна не нашлось, значит все экземпляры таких окон (то бишь все окна браузера) закрыты.Закрываем сервер.<br>6.Разрушаем поток.]]></description>
        <author>Song</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71413</guid>
        <pubDate>Mon, 13 Jan 2003 16:00:01 +0000</pubDate>
        <title>Все дочерние окна и процессы</title>
        <link>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71413</link>
        <description><![CDATA[Antipich: Через эти функции, по-моему, муднова-то. Проще в цикле проверять активное окно(GetForegroundWindow), далее получать его текст (GetWindowText(h:THandle)), и сравнивать, не эксплорер ли он.<br> По-моему, все окна эксплорера-это отдельные процессы, а не дочерние окна главного. Поэтому EnumChildWindows(или как там она) не подойдёт. Но я могу и ошибаться.<br> А сли я ошибаюсь, то так:<br>сначала определяешь хандел родительского эксплорера(это, надеюсь, ты сможешь), например он будет h.<br>А далее так:<br><br>Function EnumChildProc(Handle:HWND; Param:LongInt):Boolean; stdcall; <br>Begin <br> {сюда через переменную Handle будут передаваться все дочерние окна, а там уже проверяй заголовок окна, если он есть(у кнопок его естественно нет, а они сюда тоже передадуться)} <br> Result:=True; <br>End; <br> <br>Procedure TForm1.Button1Click(Sender:TObject); <br>Begin <br> EnumChildWindows(h,@EnumChildProc,0); <br>End; <br><br>Но я не уверен, что это именно то, что тебе надо. Так что прошу, если чё, меня строго не судить :)<br><br><br><br>]]></description>
        <author>Antipich</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71411</guid>
        <pubDate>Mon, 13 Jan 2003 12:12:23 +0000</pubDate>
        <title>Все дочерние окна и процессы</title>
        <link>https://forum.sources.ru/index.php?showtopic=6523&amp;view=findpost&amp;p=71411</link>
        <description><![CDATA[vot: Из основной программы запускаем эксплорер (соответственно, иммем его хэндл),<br>и подсовываем ему на вход нужный html-файл.<br><br>Юзер в браузере нажал шифт при клике на ссылку -&gt; породился еще один эксплорер со своим окном.... <br>Допустим, наплодили мы кучу новых окон от родительского браузера.<br>Теперь начинаем их закрывать...<br><br>Вопрос:<br>как главная программа _без_использования_хуков может узнать,<br>что _все_ дочерние окна/процессы закрыты, в том числе и окно &quot;главного&quot; браузера?<br>После закрытия всех порожденных окон наша программа должна завершиться сама.<br><br>Думаю, надо копать в сторону EnumChildWindows и EnumChildProc ...<br><br>Можете помочь кусочком рабочего кода?<br>]]></description>
        <author>vot</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	