Внешний вид сайта:

Узнать связанное с расширением файла приложение

Суть идеи заключается в том, чтобы осуществить поиск в реестре расширения в HKEY_CLASSES_ROOT, а найдя его получить его значение по умолчанию, а затем выполнить новый поиск уже для этого значения. Начнем, читаем значение по умолчанию ключа Shell \ Open \ Command.
{
 Использование: //найти и запустить
 var
    sExe: string;
 begin
    sEXE:= GetExeByExtension('.htm') ;
    if (sEXE <> '') and FileExists(sEXE) then
      ShellExecute(Handle, 'OPEN', PChar(sEXE), 
           nil, nil, SW_SHOWNORMAL) ;
 }
uses Registry;

 function GetExeByExtension (sExt : string) : string;
 var
    sExtDesc: string;
 begin
    with TRegistry.Create do
    begin
      try
        RootKey:= HKEY_CLASSES_ROOT;
        if OpenKeyReadOnly(sExt) then
        begin
          sExtDesc:= ReadString('') ;
          CloseKey;
        end;
        if sExtDesc  <> '' then
        begin
          if OpenKeyReadOnly(sExtDesc + 
                 '\Shell\Open\Command') then
          begin
            Result:= ReadString('') ;
          end
        end;
      finally
        Free;
      end;
    end;

    if Result <> '' then
    begin
      if Result[1] = '"' then
      begin
        Result:= Copy(Result, 2, -1 + 
             Pos('"', Copy(Result, 2, MaxINt))) ;
      end
    end;
 end;

Комментарии

Нет комментариев. Ваш будет первым!