Карта сайтаСсылкиКонтакты

Добавить Ваше приложение в меню Windows Отправить

PDF Печать
Статьи

Можно зарегистрировать свой тип файлов (расширение) для Вашего приложения. Но иногда нужно, чтобы пользователь мог послать файл Вашему приложению без необходимости регистрации типа файла, просто отправив свой файл командой Windows Отправить из контекстного меню Проводника.

Мы часто используем этот пункт меню Windows, чтобы отправить ярлык на Рабочий Стол, отправить файл на флешку или флоппи диск. Папка Отправить (SendTo) содержит ярлыки назначения, которые отображаются в контекстном меню Windows. В Windows 7 эта папка находится по адресу: Disk:\Users\Пользователь\AppData\Roaming\Microsoft\Windows\SendTo. Любой пользователь может настроить содержание этой папки.

Контекстное меню Проводника Windows

Вот как можно создать Ваш собственный пункт меню Проводника Windows Отправить.

  • Создать ярлык для Вашего приложения.
  • Поместить его в папку SendTo.
  • Теперь можно отправлять файлы Вашему приложению через контекстное меню Проводника Отправить.

Создание ярлыка и помещение его в папку SendTo в Delphi состоит из одного шага:


uses
    { ... }, ShlObj, ActiveX, ComObj;
	
procedure CreateShortcutIn(const SpecialFolderCSIDL: integer;
                           const shortcutName : string) ;
var
     IObject : IUnknown;
     ISLink : IShellLink;
     IPFile : IPersistFile;
     PIDL : PItemIDList;
     InFolder : array[0..MAX_PATH] of Char;
     TargetName : String;
     LinkName : WideString;
begin
     TargetName := ParamStr(0) ;
 
     IObject := CreateComObject(CLSID_ShellLink) ;
     ISLink := IObject as IShellLink;
     IPFile := IObject as IPersistFile;
 
     with ISLink do
     begin
       SetPath(pChar(TargetName)) ;
       SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
     end;
 
     // получить расположение "специальной папки"
     SHGetSpecialFolderLocation(0, SpecialFolderCSIDL, PIDL) ;
     SHGetPathFromIDList(PIDL, InFolder) ;
 
     LinkName := Format('%s\%s.lnk',[InFolder, shortcutName]) ;
 
     IPFile.Save(PWChar(LinkName), false) ;
end;

Использование


// CSIDL_SENDTO = "Send TO" специальная папка

 CreateShortcutIn(CSIDL_SENDTO,'My Delphi Application') ;

Обработка файла передается в приложение в событии OnCreate формы:


procedure TMainForm.FormCreate(Sender: TObject) ;
begin
   // получаем файл, который нужно отправить в Ваше приложение
   if ParamCount > 0 then
      ShowMessage(ParamStr(1)) ;
end;

Примечание: В Windows, для того, чтобы вручную добавить ярлык в папку SendTo, нужно выполнить следующие действия:

  • Нажмите кнопку Пуск и выберите пункт Выполнить.
  • В поле Открыть введите SendTo и нажмите ОК.
  • Используя операции перетаскивания, перетащите нужный элемент в эту папку.

 

Добавить комментарий


Защитный код
Обновить