![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно определить содержимое ListBox чужого процесса
Пашка © (2006-07-08 16:48:00)Мастера, пожалуйста подскажите, как можно получить содержимое ListBox чужого процесса.
Leonid Troyanovsky (2006-07-10 19:34:00) [1]
> Пашка (10.07.06 08:11) [4]
> А какой тип у ListBox ????
LISTBOX?
хотя,конечно, оно может быть и другим классом.
See also: GetClassName or WS32.exe.
--
Regards, LVT.
Сергей М. (2006-07-10 11:48:00) [2]
> Где то здесь ошибка
И не только здесь.
Ошибки начинаются здесь : for j:= 1to ldo begin
Пашка (2006-07-10 08:11:00) [3]А какой тип у ListBox ????
lh:=FindWindowEX(h,0,nil,nil);
h := FindWindow(nil,'TestList');
lh:=FindWindowEX(h,0,nil,nil);
l:=SendMessage(lh,LB_GETCOUNT,0,0);
for j:=1 to l do begin
k:=SendMessage(lh,LB_GETTEXTLEN,0,0);
st:=string(SendMessage(lh,LB_GETTEXT,0,0)); // Где то здесь ошибка
ListBox1.Items.Add(st);
Хотя у меня ListBox находит (так как на нем заканчивается поиск) все равно не работает.
Что значит "выделять необходимую память" ???
begin...end (2006-07-08 17:22:00) [4]> Пашка (08.07.06 17:16) [2]
Нет, непосредственно с помощью API -- не так. Вначале нужно узнать количество элементов в ListBox'е, послав ему сообщение LB_GETCOUNT, а затем в цикле определять длину текста очередного элемента (LB_GETTEXTLEN), выделять необходимую память и получать сам текст (LB_GETTEXT). Способ этот работает как для своего ListBox'а, так и для чужого.
Пашка (2006-07-08 17:16:00) [5]своего так:
for i:=0 to 10 do
d[i]:=ListBox1.items[i];
а чужого ???
begin...end (2006-07-08 17:13:00) [6]Так же, как и содержимое ListBox своего процесса.