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

•  DeLiKaTeS Tetris (Тетрис)  159

•  TDictionary Custom Sort  3 336

•  Fast Watermark Sources  3 087

•  3D Designer  4 846

•  Sik Screen Capture  3 340

•  Patch Maker  3 552

•  Айболит (remote control)  3 657

•  ListBox Drag & Drop  3 014

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

•  Графические эффекты  3 944

•  Рисование по маске  3 248

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

•  Canvas Drawing  2 751

•  Рисование Луны  2 579

•  Поворот изображения  2 188

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 235

•  Головоломка Paletto  1 767

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

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 057

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 475

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 365

•  HEX View  1 497

•  Физический маятник  1 358

 
скрыть


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

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



Delphi Sources

Пример EnumWindows



Автор: Paul Powers (Borland)

  1. Создайте форму и разместите на ней два компонента ListBox.
  2. Скопируйте код, показанный ниже.
  3. Запустите SysEdit.
  4. Запустите форму Delphi. Первый ListBox должен содержать список всех запущенных приложений. Дважды щелкните на SysEdit и нижний ListBox покажет дочернее MDI-окно программы SysEdit.

unit Wintask1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    function enumListOfTasks(hWindow: hWnd): Bool; export;
    function enumListOfChildTasks(hWindow: hWnd): Bool; export;
  end;

  THoldhWnd = class(TObject)
  private
  public
    hWindow: hWnd;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  enumWindows(@TForm1.EnumListOfTasks, Longint(Self));
  if (ListBox1.Items.Count > 0) then
    ListBox1.ItemIndex := 0;
end;

function TForm1.enumListOfTasks(hWindow: hWnd): Bool;
var
  HoldString: PChar;
  WindowStyle: Longint;
  IsAChild: Word;
  HoldhWnd: THoldhWnd;

begin
  GetMem(HoldString, 256);

  HoldhWnd := THoldhWnd.Create;
  HoldhWnd.hWindow := hWindow;

  WindowStyle := GetWindowLong(hWindow, GWL_STYLE);
  WindowStyle := WindowStyle and Longint(WS_VISIBLE);
  IsAChild := GetWindowWord(hWindow, GWW_HWNDPARENT);

  {Добавляем строку с текстом задачи или именем класса и дескриптор в ListBox1.Items }
  if (GetWindowText(hWindow, HoldString, 255) > 0) and
    (WindowStyle > 0) and (IsAChild = Word(nil)) then
    ListBox1.Items.AddObject(StrPas(HoldString), TObject(HoldhWnd))
  else if (GetClassName(hWindow, HoldString, 255) > 0) and
    (WindowStyle > 0) and (IsAChild = Word(nil)) then
    ListBox1.Items.AddObject(Concat('<', StrPas(HoldString), '>'),
      TObject(HoldhWnd));

  FreeMem(HoldString, 256);
  HoldhWnd := nil;
  Result := TRUE;
end;

function TForm1.enumListOfChildTasks(hWindow: hWnd): Bool;
var
  HoldString: PChar;
  WindowStyle: Longint;
  IsAChild: Word;
  HoldhWnd: THoldhWnd;

begin
  GetMem(HoldString, 256);

  HoldhWnd := THoldhWnd.Create;
  HoldhWnd.hWindow := hWindow;

  WindowStyle := GetWindowLong(hWindow, GWL_STYLE);
  WindowStyle := WindowStyle and Longint(WS_VISIBLE);
  IsAChild := GetWindowWord(hWindow, GWW_HWNDPARENT);

  {Добавляем строку с текстом задачи или именем класса и дескриптор в ListBox1.Items }
  if (GetWindowText(hWindow, HoldString, 255) > 0) and
    (WindowStyle > 0) and (IsAChild <> Word(nil)) then
    ListBox2.Items.AddObject(StrPas(HoldString), TObject(HoldhWnd))
  else if (GetClassName(hWindow, HoldString, 255) > 0) and
    (WindowStyle > 0) and (IsAChild = Word(nil)) then
    ListBox2.Items.AddObject(Concat('<', StrPas(HoldString), '>'),
      TObject(HoldhWnd));

  FreeMem(HoldString, 256);
  HoldhWnd := nil;
  Result := TRUE;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  enumChildWindows(THoldhWnd(ListBox1.Items.Objects[ListBox1.ItemIndex]).hWindow,
    @TForm1.enumListOfChildTasks, Longint(Self));

  ListBox2.RePaint;
end;

end.





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

Примеры работы с БД

Примеры оформления DBGrid

Пример использования DBGrid




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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