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

Как загрузить поток `TStream` из файла в буфере обмена Windows в Delphi

Delphi , ОС и Железо , Буфер обмена

Как загрузить поток TStream из файла в буфере обмена Windows в Delphi

Вопрос, который вы задали, связан с необходимостью работы с файлами в буфере обмена Windows, используя технологии Delphi. Когда вы копируете файл в буфер обмена, он сохраняется в специальном формате CF_HDROP, который позволяет идентифицировать файл как объект, готовый к перетаскиванию. Для работы с таким форматом и чтения файлов из буфера обмена, можно использовать функцию DragQueryFile.

Пример кода

uses
  Classes, Clipbrd, ShellAPI;

var
  hDrop: THandle;
  MyStream: TMemoryStream;
  Files: TStringList;
  NumFiles, FileIdx: DWORD;
  FileName: array[0..MAX_PATH] of Char;
  I: Integer;
begin
  Files := TStringList.Create;
  try
    Clipboard.Open;
    try
      if Clipboard.HasFormat(CF_HDROP) then
      begin
        // Получаем дескриптор, который указывает на список файлов в буфере обмена
        hDrop := Clipboard.GetAsHandle(CF_HDROP);
        NumFiles := DragQueryFile(hDrop, $FFFFFFFF, nil, 0);
        if NumFiles <> 0 then
        begin
          for FileIdx := 0 to NumFiles-1 do
          begin
            // Получаем имена файлов из буфера обмена
            if DragQueryFile(hDrop, FileIdx, FileName, MAX_PATH) <> 0 then
              Files.Add(FileName);
          end;
        end;
      end;
    finally
      Clipboard.Close;
    end;
    for I := 0 to Files.Count-1 do
    begin
      MyStream := TMemoryStream.Create;
      try
        // Загружаем содержимое файла в поток
        MyStream.LoadFromFile(Files[I]);
        MyStream.Position := 0;
        // Теперь можно использовать поток MyStream как нужно...
      finally
        MyStream.Free;
      end;
    end;
  finally
    Files.Free;
  end;
end;

Важные замечания

  • Используйте модуль ShellAPI для работы с функциями перетаскивания файлов.
  • Не освобождайте дескриптор hDrop, так как буфер обмена владеет им.
  • Перед использованием данных из буфера обмена, убедитесь, что формат CF_HDROP присутствует.

Используя данный пример, вы сможете загрузить содержимое файла из буфера обмена в поток TMemoryStream, который затем можно использовать для чтения или записи данных в вашем приложении на Delphi.

Создано по материалам из источника по ссылке.

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


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

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




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


:: Главная :: Буфер обмена ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 10:54:28/0.011568069458008/0