Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как по хендлу SysListView32 получитьсписок всех его элементов?


volser ©   (2005-01-18 10:33:00) 

Помогите по сабжу плз.


volser   (2005-01-20 00:01:00) [1]

jonni
Что много не понятного в твоем коде.
Что такое twi, ph, c1?
Можешь кинуть более детальный код?


volser   (2005-01-19 23:58:00) [2]

У меня XP


jonni   (2005-01-19 22:10:00) [3]

est' vot takoy primer......

il   : array[0..$3FF] of char;
twi.iconList: Cardinal;

ReadProcessMemory(ph,POINTER(twi.iconList),@il,sizeof(il),c1);
ico := TIcon.Create;
ico.Handle := ImageList_ExtractIcon(0,cardinal(@il),ImageIndex);

na skol'ko pravil'no eto napisnao ne znayu.....no vot tochno rabotaet v windows nizhe i vklyuchaya 2K.. v windows vishe ne proveryal.......


jonni   (2005-01-19 22:03:00) [4]

nu chto mozhet bit' naprimer....
----------------
http://support.microsoft.com/default.aspx?scid=kb;en-us;811415
However, when you do this on a computer running Windows XP, the wrong handle is returned. If you call any other APIs, and then
pass this handle, those API calls will not function correctly.
----------------

mozhet ono i ne dolzhno rabotat'?? kakoy u tebya Windows?


volser   (2005-01-19 13:04:00) [5]

Посмотрел пример.
Через CreateRemoteBuffer получаю, а с imagelistом никах.
Вот кусочек кода

    nb := SendMessage(LVH, LVM_GETIMAGELIST, LVSIL_NORMAL, 0);
    ReadRemoteBuffer(Base2, @h, SizeOf(h));
    Form1.ImageList1.Handle:=h;
    ShowMessage(IntToStr(Form1.ImageList1.Count));            
модификация примера.
Но выводит 0. Как тогда imagelist получать?


volser   (2005-01-19 13:01:00) [6]

К сожалению не имеется такой литературы.
Может все таки просветишь?


Игорь Шевченко   (2005-01-19 12:40:00) [7]

Рихтера читать


volser   (2005-01-19 12:36:00) [8]


AttachThreadInputc:=ListView_GetItemCount(ListViewHandle);
GetMem(Buf,255);
             for i:=0 to c-1 do
             begin
               ListView_GetItemText(ListViewHandle,i,0,Buf,255);
               memo1.Lines.Add(IntToStr(i) +':'+ buf);
             end;
 AttachThreadInput(GetCurrentThreadId,GetWindowThreadProcessId(ListViewHandle),False);


Ну вот приатачался. Что здесь не так?


jonni   (2005-01-18 21:48:00) [9]

na skol'ko ya ponimayu ti ne smozhehs nikogda vot tak prosto poluchit' dannie NE IZ svoego processa... tebe snachalo nado otkrit' process... videlit' pamayt'... poluchit' dannie..... itd...
naprimer vot: http://www.delphiworld.narod.ru/base/dt_icons_pos_g_s.html
(ne sovsem konechno ideal'niy primer.. no pervoe chto popalos' pod ruku...)

hotya po inetu polno ssilok.....


volser   (2005-01-18 16:49:00) [10]


function GetDesktopListViewHandle: THandle;
var
 S: String;
begin
 Result := FindWindow('ProgMan', nil);
 Result := GetWindow(Result, GW_CHILD);
 Result := GetWindow(Result, GW_CHILD);
 SetLength(S, 40);
 GetClassName(Result, PChar(S), 39);
 if PChar(S) <> 'SysListView32' then Result := 0;
end;

...

var
 Item: TLVItem;
begin
 ListView_Handle := GetDesktopListViewHandle;

 ZeroMemory(@item,sizeof(item));
 if ListView_GetItem(ListView_Handle, Item) then ShowMessage('Cool');


Что у меня не правильно?
Хендл ListView берется правиль (я пробовал его прятать и показывать), а функция ListView_GetItem не пашет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо