![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 1. Результат функции FindWindow() имеет тип  - HWnd  
		
	
		
		
		
		
		
	
		
		
	
	
	2. ShellWindow := CoShellWindows.Create; - кол-во окон for k := 0 to ShellWindow.Count do begin ..... end; Можно как либо связать результат функции FindWindow c переменной k, чтобы не перебирать все окна??? k:= ...(FindWindow(nil,'Заголовок окна')).  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Я так и не понял, что ты имеешь в виду связать результат с переменной. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	По сути тип HWnd тоже самое что и DWord. Функция FindWindow() - возвращает дескриптор окна, т.е. что-то вроде уникального идентификационного номера, или 0 если окно с заданными параметрами не найдено.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Использую  этот код для выдергивания html-кода странички(работает) - 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	//--- Функция считивания html-кода в TMemo...
 function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
 var
  //вытягивает код страницы в tstrings
  ps: IPersistStreamInit;
  s: string;
  ss: TStringStream;
  sa: IStream;
 begin
  ps := WB.document as IPersistStreamInit;
  ss := TStringStream.Create(s);
  try
    sa:= TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, Bool(True)));
    if Result then ACode.Add(ss.Datastring);
  finally
    ss.Free;
  end;
 end;
......
  ShellWindow := CoShellWindows.Create;
   // получаем запущенный экземпляр  Internet Explorer
   // для этого пробегаемся по всем окнам системы
 for k := 0 to ShellWindow.Count do
  begin{1}
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then Continue;
    //QueryInterface определяет, может ли интерфейс использоваться с объектом
      // проверяем , а не Браузер ли это :
   spDisp.QueryInterface(iWebBrowser2, WB);
    if WB <> nil then
    begin{2}
    // проверяем , а не HTML ли это :)
      WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      if iDoc1 <> nil then   // если да, то выдергиваем html код
      begin{3}
      // связываем запущенный экземпляр Internet Explorera как браузер
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin{4}
          Form1.RichEdit1.Clear;//Отчистка RichEdit1
          GetHTMLCode(WB, RichEdit1.Lines);// Пишем html код в  RichEdit
....
end;
end;
end;
end;
k:=FindWindow(nil,'Заголовок окна'); WB := ShellWindow.Item(k) as IWebbrowser2; GetHTMLCode(WB, RichEdit1.Lines); То компиляция проходит, но при выполнении проги выдает ошибку.  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Т.е избежать полного перебора окон. C помощью FindWindow найти дескриптро нужного мне окнаи каким-нибудь образом обойтись без цикла в имеющимся у меня коде.... 
		
	
		
		
		
		
		
	
		
		
	
	
	 |