Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

EnumChildWindows   Найти похожие ветки 

 
tred   (2003-02-12 21:03) [0]

привет всем.
ситуация такая
вылетает ошибка но не сразу
" прога вызвала ошибку ,прога будет закрыта,,,,
если будет повторятся перезагрузи комп "
но если вместо буфера ставлю listbox все окей,
кто подскажет всем спаситбо,

function EnumWindowsCallback(hwn:HWND):boolean;stdcall;
var texts:string; bus: array[0..1599] of Char;
begin
SetLength(texts, GetWindowTextLength(hwn));
lstrcat(bus,pchar(texts));
lstrcat(bus,#13#10);
result:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var ie:hwnd;
begin ie:= GetForegroundWindow;
EnumChildWindows(ie,@EnumWindowsCallback,0);
//savebus; проца сохранения в файл
end;end.


 
Игорь Шевченко ©   (2003-02-13 11:13) [1]


> lstrcat(bus,pchar(texts));


Вот и ошибка. Надо lstrcopy


 
tred   (2003-02-13 12:20) [2]

нет не помогает ничего не изменилось.


 
Игорь Шевченко ©   (2003-02-13 13:18) [3]

Угу. разобрался. Ты полный бред написал.


 
Игорь Шевченко ©   (2003-02-13 13:19) [4]

Ты скажи, что хочешь получить-то ?


 
Kair ©   (2003-02-13 13:32) [5]

Эта штука у меня нормально компилится.


 
Игорь Шевченко ©   (2003-02-13 13:49) [6]

Но при всем при этом работать она не будет


 
tred   (2003-02-13 14:03) [7]

извиняюсь забыл про ету строку
GetWindowText(hwnd, PChar(Texts), Length(Texts));
получаем заголовки всех дочерних окон.


 
Игорь Шевченко ©   (2003-02-13 14:21) [8]

У тебя все переменные - локальные. По выходе из функции уничтожаются


 
tred   (2003-02-13 15:00) [9]

переменную bus я вынес,работает но не долго
ничего не меняется.
но самое главное с listbox все работает.


 
Игорь Шевченко ©   (2003-02-13 15:06) [10]

Приведи код, который работает


 
tred   (2003-02-13 15:53) [11]

function EnumWindowsCallback(hwn:HWND;List:TListBox):boolean;stdcall;
var texts:string; txtLength : integer;
begin
SetLength(texts, GetWindowTextLength(hwn));
GetWindowText(hwn, PChar(Texts), Length(Texts));
List.Items.Add(Texts);
result:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var ie:hwnd;
begin
ie:= GetForegroundWindow; ListBox1.Items.Clear;
EnumChildWindows(ie,@EnumWindowsCallback,integer(ListBox1));
end;end.


 
Игорь Шевченко ©   (2003-02-13 17:10) [12]

Этот код будет работать.
Теперь найди 10 отличий :-)


 
tred   (2003-02-13 17:54) [13]

я знаю что он рабочий. в таком случае, вы мне подскажите как listbox
на буфер заменить


 
Игорь Шевченко ©   (2003-02-14 10:28) [14]

var
StringBuffer : String;

function EnumWindowsCallback(hwn:HWND;List:TListBox):boolean;stdcall;
var texts:string; txtLength : integer;
begin
SetLength(texts, GetWindowTextLength(hwn));
GetWindowText(hwn, PChar(Texts), Length(Texts));
StringBuffer := StringBuffer + Texts + #13#10;
result:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var ie:hwnd;
begin
ie:= GetForegroundWindow; StringBuffer := "";
EnumChildWindows(ie,@EnumWindowsCallback,integer(ListBox1));
end;end.



 
tred   (2003-02-14 21:19) [15]

>Игорь Шевченко
благодарю.



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

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-44230
Che
2003-03-31 02:54
2003.04.14
TMaskEdit


7-44484
NetKnight
2002-12-04 16:06
2003.04.14
Program Shortcut ?


4-44523
Dr. Web
2003-02-10 15:31
2003.04.14
Как програмно запустить другую программу под другим пользером


1-44264
Ops
2003-04-02 14:40
2003.04.14
Закрыть форму в OnShow.


9-43977
serg_1
2002-11-04 15:14
2003.04.14
Точка внутри полигона