Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как показать Open With диалог

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Как показать Open With диалог

Автор: http://www.swissdelphicenter.ch

{
  This code displays the application/file "Open With" dialog
  Passing the full file path and name as a parameter will cause the
  dialog to display the line "Click the program you want to use to open
  the file 'filename'".
}

uses
  ShellApi;

procedure OpenWith(FileName: string);
begin
  ShellExecute(Application.Handle, 'open', PChar('rundll32.exe'),
    PChar('shell32.dll,OpenAs_RunDLL ' + FileName), nil, SW_SHOWNORMAL);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Opendialog1.Execute then
    OpenWith(Opendialog1.FileName);
end;

Here's a translation of the provided text into Russian:

Код, который вы предоставили, написан на Delphi и использует API Shell для отображения диалога "Открой с помощью". Вот разбивка того, что он делает:

uses
  ShellApi;

Эта строка импортирует API Shell, который предлагает функции для взаимодействия с оболочкой Windows.

procedure OpenWith(FileName: string);
begin
  ShellExecute(Application.Handle, 'open', PChar('rundll32.exe'),
    PChar('shell32.dll,OpenAs_RunDLL' + FileName), nil, SW_SHOWNORMAL);
end;

Эта процедура принимает имя файла в качестве входного параметра и использует функцию ShellExecute для отображения диалога "Открой с помощью". Параметры, передаваемые в ShellExecute, следующие:

  • Application.Handle: Обратная ссылка на приложение (в этом случае, на Delphi-программу).
  • 'open': Операция, которую нужно выполнить (открытие файла в этом случае).
  • PChar('rundll32.exe'): Исполнительный файл, который будет выполнять операцию (в этом случае, rundll32.exe, который является утилитой Windows).
  • PChar('shell32.dll,OpenAs_RunDLL' + FileName): Командные аргументы для rundll32.exe (в этом случае, он просит выполнить функцию OpenAs_RunDLL из DLL shell32.dll с указанным именем файла).
  • nil: Не требуется обратная ссылка на окно.
  • SW_SHOWNORMAL: Диалог должен отображаться в нормальном состоянии.
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    OpenWith(OpenDialog1.FileName);
end;

Эта процедура связана с событием клика кнопки на форме. Когда кнопка нажата, она проверяет, был ли выполнен диалог открытия файла (т.е., была выбрана файл). Если файл был выбран, она вызывает процедуру OpenWith и передает выбранное имя файла в качестве параметра.

Чтобы отобразить диалог "Открой с помощью" в вашем программе, вы можете создать кнопку на форме и связать эту процедуру с ее событием клика. Когда кнопка нажата, будет отображен диалог открытия файла, позволяющий пользователю выбрать файл. Затем диалог "Открой с помощью" появится, перечисляя все приложения, которые могут открывать файл.

Вот альтернативное решение с использованием другого подхода:

procedure TForm1.Button1Click(Sender: TObject);
var
  shell: IShellDispatch;
begin
  if OpenDialog1.Execute then
  begin
    shell := CreateOleObject('shell.application') as IShellDispatch;
    shell.Open(OpenDialog1.FileName, 'OpenWith');
  end;
end;

В этом коде мы создаем экземпляр интерфейса IShellDispatch с использованием позднего связывания и вызываем метод Open, чтобы отобразить диалог "Открой с помощью". Этот подход более гибок, чем оригинальный код, потому что позволяет настроить поведение диалога и обеспечивает доступ к другим функциям оболочки.

В статье описывается способ отображения диалога "Открыть с помощью" в приложении Delphi, используя функцию ShellExecute из библиотеки ShellApi.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Диалоги и Фреймы ::


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:24:47/0.0070939064025879/2