Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43

Копирование в буфер обмена

10.04.2022, 13:59. Показов 2551. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте подскажите пожалуйста, есть код который копирует в буфер из Image изображение
Delphi
1
ClipBoard.Assign(Image1.Picture);
Хотел узнать можно ли скопировать сразу несколько фото из 2 разных Image?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2022, 13:59
Ответы с готовыми решениями:

Буфер обмена для графического редактора
Доброго времени суток, уважаемые программисты! В универе получил задание на летнюю практику сделать графический редактор.(Вроде задание...

Копирование в буфер обмена и вставка из него
Здравствуйте! Возникли проблемы с буфером обмена. Похоже, что вставка и копирование из TMemo происходит в неправильной кодировке. 1)...

Копирование содержимого текстового файла в буфер обмена
Сначала был такой код: procedure TForm1.Button1Click(Sender: TObject); var f: TextFile; s: array of string; i,n:byte; ...

25
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
10.04.2022, 18:16  [ТС]
Студворк — интернет-сервис помощи студентам
Прога просто закрывается и ничего не копируется!
0
Заблокирован
10.04.2022, 18:33
Цитата Сообщение от amiyr Посмотреть сообщение
Прога просто закрывается и ничего не копируется!
Чо за прога?
0
0 / 0 / 0
Регистрация: 16.12.2021
Сообщений: 43
10.04.2022, 18:56  [ТС]
При выполнении данного кода
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
uses
  ShlObj, ClipBrd; 
 
procedure CopyFilesToClipboard(FileList: string); 
var 
  DropFiles: PDropFiles; 
  hGlobal: THandle; 
  iLen: Integer; 
begin 
  iLen := Length(FileList) + 2; 
  FileList := FileList + #0#0; 
  hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, 
    SizeOf(TDropFiles) + iLen); 
  if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.'); 
  begin 
    DropFiles := GlobalLock(hGlobal); 
    DropFiles^.pFiles := SizeOf(TDropFiles); 
    Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen); 
    GlobalUnlock(hGlobal); 
    Clipboard.SetAsHandle(CF_HDROP, hGlobal); 
  end; 
end; 
 
// Example, Beispiel: 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  CopyFilesToClipboard('C:\1.jpg'#0'C:\2.jpg'); 
end;
0
Заблокирован
10.04.2022, 20:04
Цитата Сообщение от amiyr Посмотреть сообщение
При выполнении данного кода
Кот старый. Пришлось понять, как он работает, и доработать напильником.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses
  ShlObj, ClipBrd, IOUtils, Types;
 
procedure CopyFilesToClipboard(FileList: string); overload;
begin
  var iLen:= Length(FileList) + 2;
  FileList:= FileList + #0#0;
 
  var hGlobal:= GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
                            SizeOf(TDropFiles) + sizeof(char) * iLen);
 
  if (hGlobal = 0)
    then raise Exception.Create('Ошибка резервирования памяти.');
 
  var DropFiles:= PDropFiles(GlobalLock(hGlobal));
  DropFiles^.pFiles:= SizeOf(TDropFiles);
  DropFiles^.fWide:= true;
  Move(FileList[1], (PByte(DropFiles) + SizeOf(TDropFiles))^, sizeof(char) * iLen);
  GlobalUnlock(hGlobal);
  Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
 
function CopyFilesToClipboard(Files: TStringDynArray): Boolean; overload;
begin
  result:= false;
  try
    if length(Files) = 0
      then raise Exception.Create('Список файлов пуст.');
 
    var filelist:= '';
 
    for var fn in Files do
      begin
        if not FileExists(fn)
          then raise Exception.CreateFmt('Файл "%s" не найден', [fn]);
 
        filelist:= filelist + fn + #0;
      end;
    CopyFilesToClipboard(filelist);
    result:= true;
  except on e: Exception do
    Application.MessageBox(pchar(e.Message), 'Ошибка', MB_OK or MB_ICONSTOP);
  end;
end;
Проверено, оно работает!
Вложения
Тип файла: 7z bin.7z (6.23 Мб, 7 просмотров)
0
Модератор
 Аватар для D1973
9966 / 6500 / 2464
Регистрация: 21.01.2014
Сообщений: 27,511
Записей в блоге: 3
10.04.2022, 20:04
Цитата Сообщение от amiyr Посмотреть сообщение
Прога просто закрывается и ничего не копируется!
А права у Вас есть, в корне системного диска что-то делать?
Или Вы не на 10-ке?
Или диск С: не системный?
0
Заблокирован
10.04.2022, 20:08
Цитата Сообщение от D1973 Посмотреть сообщение
А права у Вас есть, в корне системного диска что-то делать?
Или Вы не на 10-ке?
Или диск С: не системный?
Код старый был, для однобайтных char-ов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2022, 20:08

Буфер обмена
как занести из делфи инфу(текст) в буфер обмена, а потом вставить ее в любое текстовое поле windows? Добавлено через 7 минут имеется...

Буфер обмена
Привет! Ребятки выручайте. Меня интересует только одно. Работа на Delhpi/Component UDPServer. У этого компонента есть...

Буфер обмена
Добрый вечер форумчане. Выручайте. Вот код Delphi 7: procedure TSpisok.BitBtn1Click(Sender: TObject); var Path : String; ...

Буфер обмена.
Написал программу которая поддерживает работоспособность другой программы. Ну так вот вопрос: Как сделать чтобы моя программа копировала...

Буфер обмена
В делфи можно использовать буфер обмена как в Ворде ? Как его можно использовать так ? Как бы забирая ранее копированные части ? То есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru