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

Показать диалог Открыть с помощью

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

Показать диалог Открыть с помощью

Оформил: DeeCo
Автор: 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 the translation of the Delphi code snippet into Russian:

Клаузы использования

uses
  ShellApi;

Модуль ShellApi обеспечивает функции для взаимодействия с оболочкой Windows.

Процедура OpenWith

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

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

  • Application.Handle: handle приложения Delphi
  • 'open': глагол для использования (в этом случае, "открыть")
  • PChar('rundll32.exe'): исполняемый файл для запуска (в этом случае, rundll32.exe)
  • PChar('shell32.dll,OpenAs_RunDLL' + FileName): аргументы командной строки
    • 'shell32.dll,OpenAs_RunDLL' - функция оболочки API для вызова (OpenAs_RunDLL)
    • FileName - добавляется к строке аргументов командной строки
  • nil: не передаются дополнительные параметры
  • SW_SHOWNORMAL: стиль окна (в этом случае, нормально отображается)

Процедура TForm1.Button1Click

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

Эта процедура вызывается при клике кнопки на TForm1. Она использует компонент OpenDialog (OpenDialog1) для позволения пользователю выбрать файл и затем передает имя файла, выбранного пользователем, в процедуру OpenWith.

Замечания

  • Процедура OpenWith предполагает, что путь к файлу и имя файла передаются как параметр.
  • Используется исполняемый файл rundll32.exe, чтобы запустить функцию оболочки API. Это старая Windows-утилита, которая была отменена, но все еще работает в многих случаях.
  • DLL-файл shell32.dll содержит функции оболочки API, включая OpenAs_RunDLL.
  • Стиль окна SW_SHOWNORMAL вызывает диалоговое окно нормально.

Альтернативное решение Если вы хотите более современный и надежный способ отображения диалогового окна "Открыть с помощью", вы можете использовать компонент TShellExecute в Delphi. Этот компонент обеспечивает более простой способ выполнения команд оболочки и может обрабатывать многие случаи, которые не могут быть обработаны rundll32.exe.

Пример:

procedure OpenWith(FileName: string);
begin
  ShellExecute.Create(nil).Execute('open', FileName, nil);
end;

Код создает новый экземпляр компонента TShellExecute и вызывает метод Execute, чтобы отобразить диалоговое окно "Открыть с помощью". Параметры:

  • 'open': глагол для использования (в этом случае, "открыть")
  • FileName: путь к файлу и имя файла для открытия
  • nil: не передаются дополнительные параметры

Код более компактен и проще для понимания, чем оригинальный код-снippet. Однако он все еще использует старую Windows-утилиту (rundll32.exe), поэтому вам может быть желательно использовать более современное решение, если это возможно.

В статье описывается код на языке 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 01:15:55/0.004723072052002/2