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

Вниз

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

 
NieL   (2008-05-03 10:43) [0]

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


 
DVM ©   (2008-05-03 11:12) [1]


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

RegQueryValue


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

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


 
palva ©   (2008-05-03 11:39) [3]

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


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

Вот набросал тут. С реестром никогда не приходилось работать так что возможно где-то ошибаюсь. Пока получилось извлекать только программу открывающую файл по умолчанию. а как вывести весь список программ. (например расширение *.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;



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1209748683
Res
2008-05-02 21:18
2008.05.25
RegSetValueEx && REG_DWORD


2-1209358089
молодой
2008-04-28 08:48
2008.05.25
вопрос доступа


2-1209032542
Int23
2008-04-24 14:22
2008.05.25
Как убрать расшареное имя с папки


3-1197290014
Kolan
2007-12-10 15:33
2008.05.25
Как сделать Data Transformation, чтобы указывать любой сервер?


2-1209890039
Граф
2008-05-04 12:33
2008.05.25
Как отфильтровать по букве, если она встречается не в начале