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

Ассоциативное выполнение

Delphi , Файловая система , Файлы

Ассоциативное выполнение

У Нострадамуса нашли стих, который описывает апгрейд копмьютера: "...старая мать новым камнем украсится станет умней и быстрее работать..."


unit UcShell;

interface

uses
  Classes, SysUtils, Windows, ShellApi, Forms;

{---------------------------------------------------------------}

function WinExecutableName(const AssociatedFile: string): string;

procedure WinShellOpen(const AssociatedFile: string);
procedure WinShellPrint(const AssociatedFile: string);
procedure WinShellExecute(const Operation, AssociatedFile: string);

{---------------------------------------------------------------}

implementation

const
  cStrBufSize = 80;

{---------------------------------------------------------------}

function WinExecutableName(const AssociatedFile: string): string;
//HINSTANCE FindExecutable(
//    LPCTSTR lpFile,      // указатель на строку с именем файла
//    LPCTSTR lpDirectory, // указатель на строку с директорией по умолчанию
//    LPTSTR lpResult      // указатель на буфер для строки, возвращаемой выполняемым файлом
//   );
begin
  SetLength(result, cStrBufSize); //ucshell
  FindExecutable(pchar(AssociatedFile), '', pchar(result));
  SetLength(result, strlen(pchar(result)));
end;

//

procedure WinShellExecute(const Operation, AssociatedFile: string);
var
  a1: string;
begin
  a1 := Operation;
  if a1 = '' then
    a1 := 'open';
  ShellExecute(
    application.handle //hWnd: HWND
    , pchar(a1) //Operation: PChar
    , pchar(AssociatedFile) //FileName: PChar
    , '' //Parameters: PChar
    , '' //Directory: PChar
    , SW_SHOWNORMAL //ShowCmd: Integer
    );
  //  GetLastErrorString(0); //ucdialog
end;

procedure WinShellPrint(const AssociatedFile: string);
begin
  WinShellExecute('print', AssociatedFile);
end;

procedure WinShellOpen(const AssociatedFile: string);
begin
  WinShellExecute('open', AssociatedFile);
end;

{-----------------------------------------------------------------}
end.

Программный модуль на языке Delphi, который предоставляет несколько функций для работы с оболочкой Windows:

  1. WinExecutableName: Функция принимает файл в связке и возвращает имя исполняемого файла.
  2. WinShellOpen: Процедура открывает файл в связке с помощью ассоциированного приложения.
  3. WinShellPrint: Процедура печатает файл в связке с помощью уместного принтера.
  4. WinShellExecute: Процедура выполняет указанную операцию над файлом в связке, например, открывает или печатает его.

Имплементация использует несколько функций Windows API:

  1. FindExecutable: Функция используется для поиска имени исполняемого файла.
  2. ShellExecute: Функция используется для выполнения указанной операции над файлом.

Разбор каждой процедуры:

WinExecutableName Функция принимает файл в связке и возвращает его имя исполняемого файла с помощью функции FindExecutable. Функция настраивает буфер для приема результата, вызывает FindExecutable, а затем устанавливает длину буфера равной фактической длине результата.

WinShellOpen Процедура открывает файл в связке с помощью ассоциированного приложения, вызывая WinShellExecute с операцией 'open'.

WinShellPrint Процедура печатает файл в связке с помощью уместного принтера, вызывая WinShellExecute с операцией 'print'.

WinShellExecute Процедура выполняет указанную операцию над файлом в связке. Она принимает два параметра: операцию (например, 'open', 'print') и файл в связке. Если операция не указана, она по умолчанию равна 'open'. Функция вызывает ShellExecute с указанной операцией, именем файла и другими параметрами.

Код также включает несколько констант:

  1. cStrBufSize: Константа определяет размер буфера, используемого в WinExecutableName.
  2. SW_ SHOWNORMAL: Константа используется для указания, как файл должен быть открыт (например, нормально).

Код также включает комментарий о стихе Нострадамуса, который seems to relate to the idea of upgrading or improving something (in this case, a computer). However, it's not clear how this relates to the code itself.

В статье описывается использование Delphi для создания ассоциативного выполнения файлов на Windows, которое позволяет вызывать приложения по их расширению и имену.


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

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




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


:: Главная :: Файлы ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:54:04/0.0036869049072266/0