通过观察ditto的表发现, 可以添加触发器进行统计粘贴次数的功能,不需要用源码

Ditto 是一款强大的 Windows 剪贴板增强工具,它支持64位操作系统,而且完全免费,绿色开源,支持中文,而且还有免安装的绿色版本。

开启 Ditto 后,不会有任何程序界面出现,它只是默默地在系统右下角弹出了一个蓝色的托盘图标,这时候你复制任何内容到剪贴板都会被 Ditto 一一记录。如果你什么时候想找到它,就可以按 Ctrl+`,当中的每条内容都可以供你选择性的重新复制。

使用navicat连接数据库

主要使用的表

Types

MainDeletes

Main

Data

CopyBuffers

通过观察Main表发现数据库结构

/*
Navicat Premium Data Transfer Source Server : ditto
Source Server Type : SQLite
Source Server Version : 3035005 (3.35.5)
Source Schema : main Target Server Type : SQLite
Target Server Version : 3035005 (3.35.5)
File Encoding : 65001 Date: 17/04/2023 10:44:23
*/ PRAGMA foreign_keys = false; -- ----------------------------
-- Table structure for Main
-- ----------------------------
DROP TABLE IF EXISTS "Main";
CREATE TABLE "Main" (
"lID" INTEGER PRIMARY KEY AUTOINCREMENT,
"lDate" INTEGER,
"mText" TEXT,
"lShortCut" INTEGER,
"lDontAutoDelete" INTEGER,
"CRC" INTEGER,
"bIsGroup" INTEGER,
"lParentID" INTEGER,
"QuickPasteText" TEXT,
"clipOrder" REAL,
"clipGroupOrder" REAL,
"globalShortCut" INTEGER,
"lastPasteDate" INTEGER,
"stickyClipOrder" REAL,
"stickyClipGroupOrder" REAL,
"MoveToGroupShortCut" INTEGER,
"GlobalMoveToGroupShortCut" INTEGER
); -- ----------------------------
-- Auto increment value for Main
-- ----------------------------
UPDATE "sqlite_sequence" SET seq = 50355 WHERE name = 'Main'; -- ----------------------------
-- Indexes structure for table Main
-- ----------------------------
CREATE INDEX "Main_CRC"
ON "Main" (
"CRC" ASC
);
CREATE INDEX "Main_ClipGroupOrder"
ON "Main" (
"clipGroupOrder" DESC
);
CREATE INDEX "Main_ClipOrder"
ON "Main" (
"clipOrder" DESC
);
CREATE UNIQUE INDEX "Main_ID"
ON "Main" (
"lID" ASC
);
CREATE INDEX "Main_InGroup2"
ON "Main" (
"lParentId" ASC,
"stickyClipGroupOrder" DESC,
"bIsGroup" ASC,
"clipGroupOrder" DESC
);
CREATE INDEX "Main_IsGroup"
ON "Main" (
"bIsGroup" DESC
);
CREATE INDEX "Main_MoveToGroup"
ON "Main" (
"MoveToGroupShortCut" DESC,
"GlobalMoveToGroupShortCut" DESC
);
CREATE INDEX "Main_ParentId"
ON "Main" (
"lParentID" DESC
);
CREATE INDEX "Main_ShortCut2"
ON "Main" (
"lShortCut" DESC,
"globalShortCut" DESC
);
CREATE INDEX "Main_TopLevel"
ON "Main" (
"stickyClipOrder" DESC,
"bIsGroup" ASC,
"clipOrder" DESC
);
CREATE INDEX "Main_TopLevelParentID"
ON "Main" (
"lParentId" ASC,
"stickyClipOrder" DESC,
"bIsGroup" ASC,
"clipOrder" DESC
); -- ----------------------------
-- Triggers structure for table Main
-- ----------------------------
CREATE TRIGGER "delete_data_trigger"
BEFORE DELETE
ON "Main"
FOR EACH ROW
BEGIN
INSERT INTO MainDeletes VALUES(old.lID, datetime('now'));
END; PRAGMA foreign_keys = true;

通过表结构发现里面是有一个触发器进行记录删除时间的

同理可以增加一个触发器,记录更新时间,就可以记录下粘贴的使用id和时间

添加触发器

-- 添加 ditto 触发器
DROP TRIGGER "main"."update_date_trigger" CREATE TRIGGER "main"."update_date_trigger"
BEFORE UPDATE
ON "Main"
BEGIN
-- 这里是因为粘贴一次,会进行两次update, 所以这里删除掉已经记录的时间,避免生成两个一样的记录
DELETE FROM MainPaste WHERE lastPasteDate=old.lastPasteDate;
-- 记录一次粘贴记录
INSERT INTO MainPaste VALUES(old.lID, old.lastPasteDate);
END COMMIT;

统计粘贴次数

测试结论,通过粘贴四次 “好的”, 可以查询出复制了四次

-- 统计粘贴次数
select t1.*, t2.mText from
( select clipID, count(clipID) cnt from MainPaste group by clipID order by count(clipID) desc) t1,
Main t2
where t1.clipID = t2.lID;

统计的作用

  1. 通过一段时间的使用,可以记录使用次数最高的记录
  2. 使用了如果一年多,则 ditto.db 的文件会特别的大。 则根据使用记录次数, 可以删除一些不常用的数据, 避免空间浪费

ditto 添加统计粘贴次数功能的更多相关文章

  1. Java web--Filter过滤器分IP统计访问次数

    分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...

  2. awk 统计出现次数--转

    知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序 ...

  3. Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...

  4. web_02Java ee实现验证码,网站访问次数功能

    Web Web_02版本: 实现功能 1,验证码 2,网站访问次数统计 设计内容 1,servlet 2,jsp 3,js *重点 1,验证码相关: 1,Servlrt类实现验证码的生成 CheckC ...

  5. 利用 clipboardData 在网页中实现截屏粘贴的功能

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  6. 为现有图像处理程序添加读写exif的功能

    为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现. ...

  7. FastReport 中添加二维码功能.(Delphi)

    http://www.cnblogs.com/fancycloud/archive/2011/07/24/2115240.html FastReport 中添加二维码功能.(Delphi)   在实际 ...

  8. phpcms 移植【添加相关文章】功能

    添加相关文章功能相当有用,移植一个过来基本上可以实现比较复杂的页面内包含分类功能,做二次开发时可以省下不少力气. 用例:如果一个产品,属于一个厂家,而这个厂家是动态添加的,既不是一个分类,而是一个厂家 ...

  9. TogetherJS – 酷!在网站中添加在线实时协作功能

    TogetherJS是一个免费.开源的 JavaScript 库,来自 Mozilla 实验室,可以实现基于 Web 的在线协作功能.把 TogetherJS 添加到您的网站中,您的用户可以在实时的互 ...

  10. Swift - 给表格添加移动单元格功能(拖动行)

    1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态  (2)在编辑状态下,可以看到单元格后面出现拖动按钮  (3)鼠标按住拖动按钮,可以 ...

随机推荐

  1. idea创建maven + tomcat项目

    移动文件夹: 找到tomcat文件目录 配置完成,添加测试html文件: 运行 修改默认路径:

  2. 【SQL】数据库日志文件过大 4条命令删除日志

    USE DATATABLE GO ALTER DATABASE DATATABLE SET RECOVERY SIMPLE DBCC SHRINKFILE (DATATABLE_Log, 1) ALT ...

  3. Window10设置技巧

    1.关闭应用程序上的最近打开文件,效果图 2.固定到"开始"屏幕,效果图 3.任务栏图标太大了

  4. HBase架构、模型、特点

    如需大数据开发整套视频(hadoop\hive\hbase\flume\sqoop\kafka\zookeeper\presto\spark):请联系QQ:1974983704 1.HBase概述 H ...

  5. data location nextcloud

    /var/snap/nextcloud/common/nextcloud/data/ Adding files to Nextcloud using the command line https:// ...

  6. maven插件实现项目一键“run maven、debug maven”等命令 => 插件名:“maven helper”

    1.在IDEA中下载插件 2.使用 总结:通过 "maven helper" 插件即可通过命令实现对项目的一键管理

  7. input number类型去掉箭头和禁用滚轮

    input number类型可以输入整型.浮点型.科学计数法的数据 禁用滚轮,在input标签内添加onmouseWheel="return false" <input ty ...

  8. F. K-th Power 容斥,莫比乌斯

    F. K-th Power 传送门: 牛客:https://ac.nowcoder.com/acm/contest/34866/F cf:https://codeforces.com/group/5z ...

  9. beast加密

    Beast:  https://github.com/liexusong/php-beast?tdsourcetag=s_pctim_aiomsgbeast-安裝到/root------------- ...

  10. python abseil库(app, flags, logging)总结

    absl (Abseil PythonCommon Libraries)(https://abseil.io/docs/python/)是用于构建Python应用程序的Python库代码集合,它包括三 ...