![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EnumChildWindows [D5, D6, WinME, Win2k]
tred © (2003-02-12 21:03:00)привет всем.
ситуация такая
вылетает ошибка но не сразу
" прога вызвала ошибку ,прога будет закрыта,,,,
если будет повторятся перезагрузи комп "
но если вместо буфера ставлю 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.
tred (2003-02-14 21:19:00) [1]>Игорь Шевченко
благодарю.
Игорь Шевченко (2003-02-14 10:28:00) [2]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-13 17:54:00) [3]я знаю что он рабочий. в таком случае, вы мне подскажите как listbox
на буфер заменить
Игорь Шевченко (2003-02-13 17:10:00) [4]Этот код будет работать.
Теперь найди 10 отличий :-)
tred (2003-02-13 15:53:00) [5]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 15:06:00) [6]Приведи код, который работает
tred (2003-02-13 15:00:00) [7]переменную bus я вынес,работает но не долго
ничего не меняется.
но самое главное с listbox все работает.
Игорь Шевченко (2003-02-13 14:21:00) [8]У тебя все переменные - локальные. По выходе из функции уничтожаются
tred (2003-02-13 14:03:00) [9]извиняюсь забыл про ету строку
GetWindowText(hwnd, PChar(Texts), Length(Texts));
получаем заголовки всех дочерних окон.
Игорь Шевченко (2003-02-13 13:49:00) [10]Но при всем при этом работать она не будет
Kair (2003-02-13 13:32:00) [11]Эта штука у меня нормально компилится.
Игорь Шевченко (2003-02-13 13:19:00) [12]Ты скажи, что хочешь получить-то ?
Игорь Шевченко (2003-02-13 13:18:00) [13]Угу. разобрался. Ты полный бред написал.
tred (2003-02-13 12:20:00) [14]нет не помогает ничего не изменилось.
Игорь Шевченко (2003-02-13 11:13:00) [15]
> lstrcat(bus,pchar(texts));
Вот и ошибка. Надо lstrcopy