备份还原剪切板

这篇具有很好参考价值的文章主要介绍了备份还原剪切板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

忘记是抄谁的了,这里改进了一下。还原后没有clear 并再一次备份。
因为还原一次后,如果再还原,会句柄无效的。

unit clipbak;
  
interface
uses  
  SysUtils, Classes, Clipbrd, Windows, Contnrs, Dialogs;
  
type
  TClipData = class
    Format: WORD;  
    Data: THANDLE;  
  end;  
  
  TClipBackuper = class  
  private  
    ClipList: TList;  
  public  
    constructor Create;  
    destructor Destroy; override;  
    procedure BackupClip();
    function RestoreClip:Boolean;
  end;  
  

implementation  


constructor TClipBackuper.Create;  
begin  
  Cliplist := TObjectList.Create;  
end;  
  
destructor TClipBackuper.Destroy;  
begin  
  ClipList.Free;  
end;     
  
procedure TClipBackuper.BackupClip;  
var  
  i: Integer;
  Data: THANDLE;  
  pcd: TClipData;  
  DataMem: Pointer;
  FileName : array [0..255] of Char;
  FileStr:string;
begin  
  ClipList.Clear;
  Clipboard.Open;
  try  
    for i := 0 to Clipboard.FormatCount - 1 do
    begin
      pcd := TClipData.Create;  

      pcd.Format := Clipboard.Formats[i];
      Data := THANDLE(Clipboard.GetAsHandle( pcd.Format));
//      GetClipboardFormatName(pcd.Format, FileName, 255);
//      FileStr := string(FileName);
//      OutputDebugString(pchar(FileStr));
      if (Data = 0) then
      begin
        pcd.free;
        continue;
      end;
      //分配内存
      pcd.Data := GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, GlobalSize(Data));
      //锁定内存
      DataMem := GlobalLock(pcd.Data);
      //有分配成功的话,复制当前剪切板的内存数据
      if (DataMem <> nil) then
      begin
        CopyMemory(DataMem, GlobalLock(Data), GlobalSize(Data));
        //解锁
        GlobalUnlock(THANDLE(pcd.Data));
        GlobalUnlock(THANDLE(Data));
      end;
      ClipList.Add(pcd);
    end;  
  finally  
    Clipboard.Close;
  end;
end;


//还原回去后,要再一次backup 不然再RestoreClip 不会再一次还原不会成功
function TClipBackuper.RestoreClip:Boolean;
var  
  pcd: TClipData;  
  i: Integer;
begin  
  Clipboard.Open();  
  try
    Clipboard.Clear();  
    for i := 0 to ClipList.Count - 1 do  
    begin
      pcd := TClipData(ClipList[i]);
      if SetClipboardData(pcd.Format, pcd.Data) <= 0 then
      begin
       Result := False;
       Exit;
      end;
    end;
  finally
    Clipboard().Close();
  end;
  BackupClip; //再备份一次
  Result := True;
end;
  
end.

 文章来源地址https://www.toymoban.com/news/detail-746960.html

到了这里,关于备份还原剪切板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 备份和还原

    目录 一、数据备份的重要性 二、数据库备份类型 2.1 物理备份 2.2 逻辑备份 1.完全备份 2.差异备份 3.增量备份 三、常见的备份方法 3.1 物理冷备 3.2 专用备份工具 mysqldump 或 mysqlhotcopy 3.3 启用二进制日志进行增量备份 3.4 第三方工具备份 四、MySQL完全备份 五、数据库完全备份

    2024年02月07日
    浏览(30)
  • 人大金仓逻辑备份与还原

    逻辑备份 sys_dump 备份 切换用户 su - kingbase 进入到逻辑备份工具目录 /data/KingbaseES/ES/V8/ClientTools/bin 参数-F表示文件输出格式,p为plain模式,这里输出为sql格式;-U用户,-p密码 -d数据库 逻辑还原 进入到逻辑备份工具目录 /data/KingbaseES/ES/V8/ClientTools/bin 参数-F表示文件输出格式,

    2024年01月16日
    浏览(42)
  • MySQL备份还原

    mysql create database school; mysql use school; /*  1.创建student和score表  */   --创建student表   CREATE TABLE student (   id INT(10) NOT NULL UNIQUE PRIMARY KEY ,   name VARCHAR(20) NOT NULL ,   sex VARCHAR(4) ,   birth YEAR,   department VARCHAR(20) ,   address VARCHAR(50)   );   --创建score表   CREATE TABLE score (   id INT(10) NO

    2024年02月14日
    浏览(66)
  • GHost系统备份与还原

    前期准备工作:U盘(=8G),最好大一点,如果你U盘要放GHO或者ISO文件的话,可能就不够用了。 我这里使用的老白菜工具,然后制作一个启动U盘。附教程连接:http://laobaicai.bsllcmgs.cn/upqdzz.html 1.将制作好的老白菜启动u盘插入电脑USB插口,然后开启电脑启动Boot设置,去设置USB启

    2024年02月04日
    浏览(43)
  • SqlServer备份,还原,生成脚本

    SqlServer备份,还原,生成脚本 1 SqlServer备份 1.1 选择需要备份的数据库,右键菜单=》选择任务=》选择备份 如下图所示 1.2 配置备份数据库的参数,选择备份类型以及备份路径 如下图所示 此处注意【目标】也就是备份路径,可以删除和添加,但是保持这里只有一项内容,多项

    2024年02月06日
    浏览(41)
  • disql备份还原

    本文档根据官方文档,进行整理。 在 disql 工具中使用 BACKUP 语句你可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库: 语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录。 默认的备份路径为 dm.ini 中 BAK_PATH 配置的

    2024年02月20日
    浏览(36)
  • ES索引备份还原

    es数据出于线上数据安全考虑,对于es已有的索引数据可以进行安全备份,通常可以将es备份到共享文件目录或者一些其它的数据存储的文件系统eg:HDFS、Amazon S3、Azure Cloud。备份会生成索引的快照存储到指定的仓库路径下,当需要进行数据还原的时候,就可以通过访问备份还

    2024年02月06日
    浏览(33)
  • mysql备份与还原

    mysql日志管理 、备份与恢复 备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。 而备份、恢复中,日志起到了很重要的作用 #######前言:日志⭐⭐ MySQL 的日志默认保存位置为 /usr/local/mysql/data ##配置文件 vim /etc/my.cnf [mysqld] ##错误日志,

    2024年02月11日
    浏览(37)
  • MySQL的备份与还原

    1、MySQL的备份说明 热备: 在数据库正在运行下进行备份,备份期间,数据库读写均可以正常进行; 温备: 数据库可用性弱于热备,备份期间,数据库只能进行读操作,不能进行写操作。 冷备: 在备份期间,应用的读写操作不可进行。 2、 基于mysqldump命令进行数据备份 数据

    2024年02月15日
    浏览(34)
  • ETCD备份还原

    备份只需要在一个节点上备就可以了,每个节点上的数据是同步的;但是数据恢复是需要在每个主节点上进行 3.1多个master还原

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包