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

Вниз

Проблема с LVM_GETITEM.   Найти похожие ветки 

 
Renard ©   (2002-08-21 21:46) [0]

Для получения списка из ListView я использую следующий код:


ListBox1.Clear;
hMap := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,1024,"MyFile");
pMap := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
pItem := pMap;
with pItem^ do
begin
mask := LVIF_STATE or LVIF_TEXT;
pItem^.iSubItem := 0;
stateMask := LVIS_SELECTED;
pszText := Ptr(Integer(pMap) + Sizeof(TLVItem));
cchTextMax := 255;
iImage := 0;
lParam := 0;
end;
hWnd := FindWindow(nil, "My Computer");
hWnd := FindWindowEx(hWnd, 0, "SHELLDLL_DefView", nil);
hWnd := FindWindowEx(hWnd, 0, "SysListView32", nil);
Cnt := SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
for K := 0 to Cnt - 1 do
begin
pItem^.iItem := K;
n:=SendMessage(hWnd, LVM_GETITEM, k, Integer(pItem));
ListBox1.Items.Add(pItem^.pszText);
end;
UnmapViewOfFile(pMap);
CloseHandle(hMap);


В win95 он работает отлично, а вот в win2k выдает ошибку типа: Memory can not be read".
Подскажите пожалуйста в чем моя ошибка и как ее исправить.
Заранее багодарен.


 
Suntechnic ©   (2002-08-22 08:06) [1]

Вообще-то странно, что этот код по Win95 работает. По идеи он и там не должен работать... проблема в том, что данные находятся в контексте другого процесса. И адрес той структуры, которую ты передаешь последним параметром SendMessage(hWnd, LVM_GETITEM... неимеет никакого смысла в контексте того процесса. Это общепринятая ошибка и решается она путём внедрения в адресное пространство другого процесса. Хорошо об этом у Рихтера написано и даже, если мне не изменяет память с аналогичным примером.



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

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

Наверх




Память: 0.47 MB
Время: 0.019 c
6-21188
kosmach
2002-08-05 10:17
2002.10.07
Как послать файл с ServerSocket и принять его на ClientSocket?


3-20886
Hooch
2002-09-16 15:09
2002.10.07
табличка foxpro


3-20893
Mike13
2002-09-15 18:55
2002.10.07
Проблема с TADOQuery и параметрами типа DateTime


1-20973
ruslan_as
2002-09-26 13:26
2002.10.07
как присвоить полю Float значение пусто


1-20959
Tadeush
2002-09-26 11:19
2002.10.07
TMemo<-TStringList