![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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