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

Вниз

Пуск-Программы .   Найти похожие ветки 

 
tytus ©   (2004-01-10 19:01) [0]

добрый вечер. У меня есть такой код:
procedure TForm1.Button3Click(Sender: TObject);
var
 FindData:_WIN32_FIND_DATA;
 Fetched:LongWord;
begin
SHGetSpecialFolderLocation(Application.Handle,CSIDL_PROGRAMS,IDList);
SHGetDataFromIDList(SHellFolder,IDList,SHGDFIL_FINDDATA,
           @FindData,SizeOf(FindData));
SHellFolder.EnumObjects(Application.Handle,96,EnumList);????
while EnumList.Next(1,IDList,Fetched)=S_OK do
 begin
   s:=GetOutText(SHellFolder,IDList,false);\Взято из Demos\VirtualViewer\
   Memo1.Lines.Add(s);
 end;
end;
Вот на этих ??? выдает AccessViolation, хотя таким же макаром, только без SHGetDataFromIDList, я получаю список всех ярлыков и папок на рабочем столе. SHGetDeskTopFolder.


 
YuRock ©   (2004-01-10 19:10) [1]

Где описана SHellFolder?
Где описана EnumList?
Где описана IDList?
...


 
tytus ©   (2004-01-10 19:19) [2]

>YuRock;
в Private. Но в GetDeskTopFolder работает.


 
YuRock ©   (2004-01-10 19:21) [3]

А где они инициализируются? Может, неверно или вообще нигде?


 
tytus ©   (2004-01-10 19:28) [4]

>YuRock
procedure TForm1.Button2Click(Sender: TObject);
var
 s:string;
 Fetched:LongWord;
begin
SHGetDeskTopFolder(ShellFolder);
SHellFolder.EnumObjects(Application.Handle,96,EnumList);
while EnumList.Next(1,IDList,Fetched)=S_OK do
 begin
   s:=GetOutText(SHellFolder,IDList,false);
   Memo1.Lines.Add(s);
 end;
Memo1.Lines.Add("__________________");
end;


 
YuRock ©   (2004-01-10 19:43) [5]

По-моему, я знаю, в чем проблема. Нужно в Button2Click удалить  EnumList (EnumList.Release), тогда все должно заработать.


 
tytus ©   (2004-01-10 20:07) [6]

>YuRock.
Не помогает. EnumList.Reset (Release нету).
Но дело и не в этом. Если нажать первой Button3 то все равно глючит, и виснет так, что приходится перезагружать комп. На ХР тоже глючит, но нормально снимает задачу, или даже через Ctrl+F2.
Может что-то с SHGetDataFromIDList? Или прописать все переменные в TForm1.Button3Click?


 
YuRock ©   (2004-01-10 20:13) [7]

Вызывайте не EnumList.Release, а EnumList._Release

!!!!!!!!!!!


 
tytus ©   (2004-01-10 20:23) [8]

Все равно не помогает....


 
YuRock ©   (2004-01-10 20:29) [9]

А где и как инициализирован IDList ?


 
YuRock ©   (2004-01-10 20:43) [10]

Под него надо память обязательно выделить. Луче объявит как

IDList: TITEMIDLIST;


 
tytus ©   (2004-01-10 21:21) [11]

TITEMIDLIST не воспринимается EnumList.Next и  SHGetDataFromIDLisist.


 
YuRock ©   (2004-01-11 17:13) [12]

Надо с собакой передавать


 
YuRock ©   (2004-01-11 17:32) [13]

> YuRock ©   (11.01.04 17:13) [12]
Извиняюсь - я наврал.

А легче всего получить нужный путь так:

function GetProgramsDir: String;
var
 pBuffer: Array[0..MAX_PATH] of Char;
 IDList: PItemIDList;
begin
 SHGetSpecialFolderLocation(Application.Handle, CSIDL_PROGRAMS, IDList);
 ShGetPathFromIDList(IDList, @pBuffer);

 Result := String(pBuffer);
end;



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

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

Наверх





Память: 0.47 MB
Время: 0.051 c
7-1072548423
Morfey
2003-12-27 21:07
2004.03.28
dll


3-1077182213
NorthMan1
2004-02-19 12:16
2004.03.28
Кто занимался переносом из FOX а в ORACLE - отзовитесь


14-1077706123
}|{yk
2004-02-25 13:48
2004.03.28
Модераторам


4-1072692276
Alexandr Tarasov
2003-12-29 13:04
2004.03.28
Блокирование файла в ОС Windows не используя полититку безопаснос


3-1077800860
Rule
2004-02-26 16:07
2004.03.28
Не могу создать сервер автоматизации DCOM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский