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

Вниз

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

 
volser   (2005-01-18 10:33) [0]

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


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


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 не пашет.


 
jonni ©   (2005-01-18 21:48) [2]

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-19 12:36) [3]


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);


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


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

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


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

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


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

Посмотрел пример.
Через 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 получать?


 
jonni ©   (2005-01-19 22:03) [7]

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?


 
jonni ©   (2005-01-19 22:10) [8]

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.......


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

У меня XP


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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
1-1109162385
BVV
2005-02-23 15:39
2005.03.06
Потоки


9-1101838585
Домовенок
2004-11-30 21:16
2005.03.06
[GLScene]: GLCanvas


3-1107428374
BioAngel
2005-02-03 13:59
2005.03.06
paradox и пароль


10-1085723911
Punker
2004-05-28 09:58
2005.03.06
Выбрать лист в Excel?


1-1108844251
wingman
2005-02-19 23:17
2005.03.06
integer overflow error - почему?