Главная страница
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.021 c
15-1208079846
webster
2008-04-13 13:44
2008.05.25
Домен


15-1207718318
@!!ex
2008-04-09 09:18
2008.05.25
Утилита для синхронизации.


4-1188981076
dzr_gregory
2007-09-05 12:31
2008.05.25
Windows 2003 сервер терминалов и Delphi


2-1209008142
Andr
2008-04-24 07:35
2008.05.25
Создание формы в мной созданном обьекте.


4-1189364060
Rimd
2007-09-09 22:54
2008.05.25
enumWindows & EnumChildWindows