Сохранение всего содержимого буфера обмена в файлDelphi , ОС и Железо , Буфер обменаАвтор: http://forum.vingrad.ru var FS: TFileStream; procedure TForm1.bClearClick(Sender: TObject); begin OpenClipBoard(0); EmptyClipboard; CloseClipBoard; end; procedure TForm1.BSaveClick(Sender: TObject); var CBF: Cardinal; CBFList: TList; i: Integer; h: THandle; p: Pointer; CBBlockLength, Temp: Cardinal; FS: TFileStream; begin if OpenClipBoard(0) then begin CBFList := TList.Create; CBF := 0; repeat CBF := EnumClipboardFormats(CBF); if CBF <> 0 then CBFList.Add(pointer(CBF)); until CBF = 0; edit1.text := IntToStr(CBFList.Count); if CBFList.Count > 0 then begin FS := TFileStream.Create('e:\cp.dat', fmCreate); Temp := CBFList.Count; FS.Write(Temp, SizeOf(Integer)); for i := 0 to CBFList.Count - 1 do begin h := GetClipboardData(Cardinal(CBFList[i])); if h > 0 then begin CBBlockLength := GlobalSize(h); if h > 0 then begin p := GlobalLock(h); if p <> nil then begin Temp := Cardinal(CBFList[i]); FS.Write(Temp, SizeOf(Cardinal)); FS.Write(CBBlockLength, SizeOf(Cardinal)); FS.Write(p^, CBBlockLength); end; GlobalUnlock(h); end; end; end; FS.Free; end; CBFList.Free; CloseClipBoard; end; end; procedure TForm1.bLoadClick(Sender: TObject); var h: THandle; p: Pointer; CBF: Cardin! al; CBBlockLength: Cardinal; i, CBCount: Integer; FS: TFileStream; begin if OpenClipBoard(0) then begin FS := TFileStream.Create('e:\cp.dat', fmOpenRead); if FS.Size = 0 then Exit; FS.Read(CBCount, sizeOf(Integer)); if CBCount = 0 then Exit; for i := 1 to CBCount do begin FS.Read(CBF, SizeOf(Cardinal)); FS.Read(CBBlockLength, SizeOf(Cardinal)); h := GlobalAlloc(GMEM_MOVEABLE or GMEM_SHARE or GMEM_ZEROINIT, CBBlockLength); if h > 0 then begin p := GlobalLock(h); if p = nil then GlobalFree(h) else begin FS.Read(p^, CBBlockLength); GlobalUnlock(h); SetClipboardData(CBF, h); end; end; end; FS.Free; CloseClipBoard; end; end; Перевод контента на русский язык: Программа Delphi, которая сохраняет содержимое буфера обмена в файл и затем загружает его обратно в буфер обмена. Вот шаг за шагом, как она работает:
Вот некоторые предложения по улучшению кода:
Вот пример улучшения процедуры
И вот пример улучшения процедуры
Обратите внимание, что эти предложения только рекомендации, и вам нужно тщательно тестировать код, чтобы убедиться, что он работает правильно в всех сценариях. Рассказывается о программном коде на Delphi, который позволяет сохранять и загружать содержимое буфера обмена в файл. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Буфер обмена ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |