Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Вниз

Дочерние окна   Найти похожие ветки 

 
ATLANTIDO   (2002-04-21 16:48) [0]

Как узнать заголовки или классы всех дочерних окон какого либо окна ?


 
Song   (2002-04-21 16:52) [1]

GetWindowName()
GetClassname()


 
ATLANTIDO   (2002-04-21 17:06) [2]

Это понятно, а как хэндл получить ?


 
Atrem   (2002-04-21 17:49) [3]

чтобы перебрать все дочерние окна используй EnumChildWindows


 
ATLANTIDO   (2002-04-21 18:48) [4]

А как ей пользоваться ?


 
Song   (2002-04-21 19:31) [5]

2ATLANTIDO © (21.04.02 18:48)
http://delphi.vitpc.com/helloworld/wininf.htm


 
ATLANTIDO   (2002-04-21 23:05) [6]

Воспользовавшись этой статьей написал следующий код:

unit Unit2;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
ListBox1: TListBox;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
var
buffer: array [0..255] of char;
Begin
GetClassName(Wd, buffer, SizeOf(Buffer));
if Buffer<>"" then ListBox1.Items.Add(buffer);
EnumProc := TRUE;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
H : HDC;
begin
H:=GetForegroundWindow;
if H<>0 then
begin
EnumChildWindows(h, @TForm1.EnumProc, 0);
ListBox1.items.Add("----------------");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Clear;
end;

end.

В ListBox"e выводятся тоько "-----------";
В чем ошибка ?


 
Song   (2002-04-22 08:34) [7]

Я думаю, что h в TTimer.OnTimer дожно быть у Вас равно GetDeskTopWindow


 
Song   (2002-04-22 08:37) [8]

Хотя нет. Я понял, что Вы хотите. Вы хотите получть дочерние окна другой программы, а не всех дочерних окон первого уровня.
Попробуйте проверить значение h


 
Atrem   (2002-04-22 12:11) [9]

попробуй такой вариант :


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
ListBox1: TListBox;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function MyProc(wnd:hwnd;lparam:longint):boolean;stdcall;
var text:array[0..255] of char;
begin
Result:=true;
if not IsWindow(wnd) then exit;
GetClassName(wnd,text,256);
Form1.ListBox1.Items.Add(text);

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var wnd:HWND;
begin
wnd:=GetForegroundWindow;
if wnd>32 then
begin
ListBox1.Clear;
EnumChildWindows(wnd,@myProc,0);
end;
end;
end.


 
ATLANTIDO   (2002-04-23 15:31) [10]

Спасибо, помогло !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-77287
Fissher
2002-05-30 18:38
2002.06.24
Прога не работает на другой машине


14-77567
Marauder
2002-05-19 11:21
2002.06.24
Самая насущная...


7-77649
Antalex
2002-03-28 19:54
2002.06.24
В TurboPaskal при подключении CRT ошибка деления на 0


1-77481
First_May
2002-06-07 12:19
2002.06.24
Excel


6-77525
star
2002-01-23 13:25
2002.06.24
Всем, кто спрашивал про работу с NetSessionEnum и NetFileEnum.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский