ditto 添加统计粘贴次数功能
通过观察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;
统计的作用
- 通过一段时间的使用,可以记录使用次数最高的记录
- 使用了如果一年多,则 ditto.db 的文件会特别的大。 则根据使用记录次数, 可以删除一些不常用的数据, 避免空间浪费
ditto 添加统计粘贴次数功能的更多相关文章
- Java web--Filter过滤器分IP统计访问次数
分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...
- awk 统计出现次数--转
知识点: 1)数组 数组是用来存储一系列值的变量,可通过索引来访问数组的值. Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串. 下标通常称为键,数组元素的键和值存储在Awk程序 ...
- Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性
简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...
- web_02Java ee实现验证码,网站访问次数功能
Web Web_02版本: 实现功能 1,验证码 2,网站访问次数统计 设计内容 1,servlet 2,jsp 3,js *重点 1,验证码相关: 1,Servlrt类实现验证码的生成 CheckC ...
- 利用 clipboardData 在网页中实现截屏粘贴的功能
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 为现有图像处理程序添加读写exif的功能
为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现. ...
- FastReport 中添加二维码功能.(Delphi)
http://www.cnblogs.com/fancycloud/archive/2011/07/24/2115240.html FastReport 中添加二维码功能.(Delphi) 在实际 ...
- phpcms 移植【添加相关文章】功能
添加相关文章功能相当有用,移植一个过来基本上可以实现比较复杂的页面内包含分类功能,做二次开发时可以省下不少力气. 用例:如果一个产品,属于一个厂家,而这个厂家是动态添加的,既不是一个分类,而是一个厂家 ...
- TogetherJS – 酷!在网站中添加在线实时协作功能
TogetherJS是一个免费.开源的 JavaScript 库,来自 Mozilla 实验室,可以实现基于 Web 的在线协作功能.把 TogetherJS 添加到您的网站中,您的用户可以在实时的互 ...
- Swift - 给表格添加移动单元格功能(拖动行)
1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现拖动按钮 (3)鼠标按住拖动按钮,可以 ...
随机推荐
- 洛谷 P1832 A+B Problem(再升级)题解
START: 2021-08-09 15:28:07 题目链接: https://www.luogu.com.cn/problem/P1832 给定一个正整数n,求将其分解成若干个素数之和的方案总数. ...
- kettle连接mysql报Communications link failure
添加2个命名参数 1.autoReconnect=true 2.useSSL=false
- idea警告 breakpoints dramatically slow down
idea启动项目提示的黄色警告 , 其实就是有地方断点之后 , 影响项目运行速 打开断点管理 , 查看具体是哪个影响了 , 断点不需要了及时取消
- MapReduce实践
1. 词频统计任务要求 首先,在Linux系统本地创建两个文件,即文件wordfile1.txt和wordfile2.txt.在实际应用中,这两个文件可能会非常大,会被分布存储到多个节点上.但是,为了 ...
- APK 跳转其他APK
+import android.content.ComponentName;^M /* @@ -343,6 +346,15 @@ public class MainActivity extends A ...
- 功能测试--APP专项
APP测试重点 APP测试与web测试的区别 APP测试常见问题 APP日志分析 APP压力稳定性测试
- Vue父子组件传值.sync
<template> <div class="content"> <btn :btnName.sync='num' ></btn> ...
- jvm垃圾收集器汇总
1.吞吐量和延时 吞吐量:吞吐量指的是cpu的利用时间,计算公式是 运行用户代码时间 / (用户代码时间 + 垃圾收集时间),吞吐量越大说明cpu的利用率越大. 延时:延时指的是停顿时间,用户代码不 ...
- C# Set集合
包含不重复元素的集合称为"集(set)"..NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都实现ISet<T ...
- HTTP通信基础
1. HTTP通信流程: 1)输入www.baidu.com2)解析成IP地址:192.168.0.13)浏览器通过该IP访问web服务器获取web资源4)再返回给客户端5)最后呈现在用户面前 2. ...