Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить приложение, ассоциированное с указанным расширением файлов

Delphi , Программа и Интерфейс , Приложения чужие

Получить приложение, ассоциированное с указанным расширением файлов

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  FindExecutable returns the name and handle to the executable 
  (.EXE) file associated with a specified file type (.BMP) 
}

 { 
  Wenn du z.B eine BMP-Datei anklickst, wird die 
  dazugehorige Anwendung MSPAINT.EXE mit der Datei als 
  Parameter ausgefuhrt. In diesem Beispiel wird 
  herausgefunden, welche Anwendung (hier MSPAINT.EXE) 
  mit dem jeweiligen Datei Typ verknupft ist. 
}


 function ShellFindExecutable(const FileName, DefaultDir: string): string;
 var
   Res: HINST;
   Buffer: array[0..MAX_PATH] of Char;
   P: PChar;
 begin
   FillChar(Buffer, SizeOf(Buffer), #0);
   if DefaultDir = '' then P := nil
    else
      P := PChar(DefaultDir);
   Res := FindExecutable(PChar(FileName), P, Buffer);
   if Res > 32 then
   begin
     P := Buffer;
     while PWord(P)^ <> 0 do
     begin
       if P^ = #0 then // FindExecutable replaces #32 with #0 
        P^ := ' ';
       Inc(P);
     end;
     Result := Buffer;
   end
    else
     Result := '';
 end;

 // Example, Beispiel: 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   ShellFindExecutable('1stboot.bmp', 'c:\windows');
 end;

Это фрагмент кода на Delphi, демонстрирующий использование функции ShellFindExecutable для поиска исполняемого файла, связанного с указанным типом файлов.

Обзор того, что код делает:

  1. Функция ShellFindExecutable принимает два параметра: FileName (имя файла, для которого нужно найти связанный исполняемый файл) и DefaultDir (папка по умолчанию, где находится исполняемый файл).
  2. Функция использует API-функцию Windows FindExecutable для поиска исполняемого файла, связанного с указанным типом файлов.
  3. Если поиск успешен, функция возвращает handle к исполняемому файлу (Res > 32). В этом случае она заполняет буфер (Buffer) именем исполняемого файла и его параметрами.
  4. Функция затем анализирует буфер для извлечения имени исполняемого файла и его параметров.

В примере кода процедура Button1Click вызывает функцию ShellFindExecutable с файлом 1stboot.bmp и папкой по умолчанию c:\windows. Результат хранится в переменной Result, которая может быть использована для запуска связанного исполняемого файла или отображения информации о нем.

Альтернативное решение с использованием встроенной функции Delphi ExtractFileExt:

function GetAssociatedExecutable(FileName: string): string;
begin
  Result := '';
  with TRegistry.Create do
    try
      RootKey := HKEY_CLASSES_ROOT;
      if OpenKey(ExtractFileExt(FileName), True) then
        if ReadString('shell\open\command') <> '' then
          Result := ExtractFileDirName(ReadString('shell\open\command'));
      Free;
    except
       // handle error
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetAssociatedExecutable('1stboot.bmp'));
end;

В этом альтернативном решении функция GetAssociatedExecutable использует компонент TRegistry для запроса Windows-регистра для связанного исполняемого файла указанного типа файлов. Функция ExtractFileExt используется для извлечения расширения файла из имени файла. Возвращаемая строка является связанным исполняемым файлом.

Обратите внимание, что это альтернативное решение предполагает, что тип файла зарегистрирован в Windows-регистре и имеет связанный исполняемый файл. Если тип файла не зарегистрирован или не имеет связанного исполняемого файла, функция GetAssociatedExecutable вернет пустую строку.

Получить приложение, ассоциированное с указанным расширением файлов, используется функция FindExecutable, которая возвращает имя и хэндл исполняемого файла, связанного с указанным типом файла.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложения чужие ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:42:27/0.0055420398712158/1