Недавно добавленные исходники

•  Animation Loaders  983

•  DeLiKaTeS Tetris (Тетрис)  5 913

•  TDictionary Custom Sort  7 867

•  Fast Watermark Sources  7 534

•  3D Designer  10 762

•  Sik Screen Capture  8 096

•  Patch Maker  8 291

•  Айболит (remote control)  8 341

•  ListBox Drag & Drop  7 189

•  Доска для игры Реверси  101 191

•  Графические эффекты  8 407

•  Рисование по маске  7 783

•  Перетаскивание изображений  6 373

•  Canvas Drawing  6 751

•  Рисование Луны  6 681

•  Поворот изображения  5 804

•  Рисование стержней  4 750

•  Paint on Shape  3 448

•  Генератор кроссвордов  4 449

•  Головоломка Paletto  3 585

•  Теорема Монжа об окружностях  4 383

•  Пазл Numbrix  2 840

•  Заборы и коммивояжеры  3 792

•  Игра HIP  2 557

•  Игра Go (Го)  2 567

•  Симулятор лифта  2 954

•  Программа укладки плитки  2 381

•  Генератор лабиринта  3 135

•  Проверка числового ввода  2 616

•  HEX View  3 021

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получить дескриптор окна другого приложения и сделать его активным



Использование фуекции Windows API FindWindow() - простейший способ нахождение окна, при условии, что известен его заголовок или имя оконного класса. Если Вам известна только часть заголовка окна (например 'Netscape - ' + 'какой-то неизвестный URL'), Ва м нужно использовать функцию EnumWindows() для получения всех окон, затем вызывать функцию GetWindowsText() и GetClassName для поиска нужного окна. Следующий пример находит первое окно, содержащее совпадающую часть заголовка окна и полностью совпадающее название оконного класса (если он задан) и делает это окно активным.


type
  PFindWindowStruct = ^TFindWindowStruct;
  TFindWindowStruct = record
  Caption : string;
  ClassName : string;
  WindowHandle : THandle;
end;

function EnumWindowsProc(hWindow : hWnd; lParam : LongInt) : Bool {$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var
  lpBuffer: PChar;
  WindowCaptionFound: bool;
  ClassNameFound: bool;
begin
  GetMem(lpBuffer, 255);
  Result := True;
  WindowCaptionFound := False;
  ClassNameFound := False;

  try
    if GetWindowText(hWindow, lpBuffer, 255) > 0 then
      if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer)) > 0 then
        WindowCaptionFound := true;

    if PFindWindowStruct(lParam).ClassName = '' then
      ClassNameFound := True
    else
    if GetClassName(hWindow, lpBuffer, 255) > 0 then
      if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer)) > 0 then
        ClassNameFound := True;

    if (WindowCaptionFound and ClassNameFound) then
    begin
      PFindWindowStruct(lParam).WindowHandle := hWindow;
      Result := False;
    end;

  finally
    FreeMem(lpBuffer, sizeof(lpBuffer^));
  end;
end;

function FindAWindow(Caption : string; ClassName : string) : THandle;
var
  WindowInfo : TFindWindowStruct;
begin
  with WindowInfo do begin
    Caption := Caption;
    ClassName := ClassName;
    WindowHandle := 0;
    EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
    FindAWindow := WindowHandle;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  TheWindowHandle : THandle;
begin
  TheWindowHandle := FindAWindow('Netscape - ', '');
  if TheWindowHandle = 0 then
    ShowMessage('Window Not Found!')
  else
    BringWindowToTop(TheWindowHandle);
end;






Похожие по теме исходники

Посторонние окна WinAPI

A Star (нахождение кратчайшего пути)

Нахождение кратчайшего пути

Облако тегов

 

Дейкстра: поиск кратчайшего пути




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте