Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.008 c
1-21095
vinni2000
2002-09-24 17:38
2002.10.07
Как узнать архив RAR не по расширению


7-21290
flegma
2002-07-29 01:56
2002.10.07
Как сделать форму невидимой сразу после запуска приложения?


4-21309
MJH
2002-08-19 06:31
2002.10.07
Static


1-21026
dimanew
2002-09-27 10:00
2002.10.07
В событие OnMouseDown запихал MapView.Cursor:=MyCurDrug2;


1-20986
Паша
2002-09-26 16:05
2002.10.07
Вопрос по FileMapping





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский