Текущий архив: 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.47 MB
Время: 0.007 c