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

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

API-функция извлечения рекомендуемых программ


NieL ©   (2008-05-03 10:43:00) 

Народ, подскажите API функцию которая определяет рекомендуемые программы для открытия файла. (т.е. там где "Открыть с помощью" )


NieL   (2008-05-03 17:50:00) [1]

Вот набросал тут. С реестром никогда не приходилось работать так что возможно где-то ошибаюсь. Пока получилось извлекать только программу открывающую файл по умолчанию. а как вывести весь список программ. (например расширение *.doc)

procedure TForm1.Button3Click(Sender: TObject);

 function GetDefaultKey(const Ext: string): string;
 var
   Size: LongInt;
   Hk: HKEY;
   Buf: PChar;
 begin
   Result := '';
   if RegOpenKey(HKEY_CLASSES_ROOT, PChar(Ext), Hk) = 0 then
   begin
     Size := SizeOf(PChar);
     if RegQueryValue(Hk, nil, Buf, Size) = ERROR_MORE_DATA then
     begin
       GetMem(Buf, Size);
       try
         RegQueryValue(Hk, nil, Buf, Size);
         Result := string(Buf);
       finally
         FreeMem(Buf);
       end;
     end;
   end;
   RegCloseKey(Hk);
 end;

 function GetProgramAssociation(DefKey: string): string;
 var
   Size: LongInt;
   Hk: HKEY;
   Buf: PChar;
 begin
   Result := '';
   if RegOpenKey(HKEY_CLASSES_ROOT, PChar(DefKey + '\shell\open\command'), Hk) = 0 then
   begin
     Size := SizeOf(PChar);
     if RegQueryValue(Hk, nil, Buf, Size) = ERROR_MORE_DATA then
     begin
       GetMem(Buf, Size);
       try
         RegQueryValue(Hk, nil, Buf, Size);
         Result := string(Buf);
       finally
         FreeMem(Buf);
       end;
     end;
   end;
   RegCloseKey(Hk);
 end;
var
 S: string;
begin
{ S := GetProgramAssociation(GetDefaultKey('.doc')); }
 S := GetProgramAssociation('Paint.Picture');
 ShowMessage(S);
end;


palva   (2008-05-03 11:39:00) [2]

Вот здесь есть примерчик использования этой функции
http://www.swissdelphicenter.ch/torry/showcode.php?id=1431


NieL   (2008-05-03 11:20:00) [3]

Если несложно, напишите небольшой примерчик. Заранее благодарен.


DVM   (2008-05-03 11:12:00) [4]


> подскажите API функцию

RegQueryValue


Наверх

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