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)鼠标按住拖动按钮,可以 ...
随机推荐
- K-th occurrence (后缀自动机上合并权值线段树+树上倍增)
K-th occurrence (后缀自动机上合并权值线段树+树上倍增) You are given a string SSS consisting of only lowercase engli ...
- NOIP2011普及组
T2 统计单词数 也是一道经典题 字符串匹配 #include<iostream> #include<cstdio> #include<map> #include ...
- mmdetection RPNHead--_init_layers()
RPNHead类包含的函数: (1)_init_():初始化函数 (2)_init_layers():设置Head中的卷积层 (3)forward_single():单尺度特征图的前向传播 (4)lo ...
- delphi 给 Timage 加上滚动条方法
delphi Timage 加上滚动条的方法 1:将 Timage 放入 TScrollBox内,即 [1]设image1.parent:= ScrollBox1; [2]在Object I ...
- 解决WIN7下pl/sql连接弹出空白提示框问题
问题描述: win7 32位系统,已安装oracle10.0开发客户端,已配置数据库, 登陆pl/sql时出现空白提示框问题,尝试重装oracle无果,于是上网查找解决方法,逐步尝试,终于把客户端弄好 ...
- VS 2022创建ATL组件 (C++)
https://www.cnblogs.com/chechen/p/8119018.html 步骤如下: 1.新建ATL项目 打开Visual Studio 2022 新建ATL项目 2.添加接口类. ...
- LVS负载均衡 2022年4月
1. 负载均衡技术简介 2 1.1 负载均衡类型3 1.2 LVS简介4 1.3 Keepalived简介5 2. 负载均衡搭建主要步骤 6 2.1 LVS+Keepalived的负载均衡系统搭建6 ...
- 使用arcgis按掩膜批量处理MODIS.tif数据提取研究区.shp边界的python代码
在输入代码之前,需要先用arcgis把需要处理的数据导入,再把研究区shp导入,然后定义投影,先掩膜处理一个数据,再进行下一步输入代码批量处理数据的步骤.如果 不先定义投影,可能会出现输入代码不执行的 ...
- uni-popup 遮不住头部标题的解决办法
要做一个小程序,会有弹窗,但是uni-app的API组件uni.showModal不足以满足我的需求,于是我用HBuilderX引入了uni-popup. 代码是这样的 <button @cli ...
- Java-02对象传递和返回
Java-02对象传递和返回 当你在"传递"一个对象的时候,你实际上是在传递它的引用 1引用 1.1传递引用 当你将一个引用传给方法后,该引用指向的仍然是原来的对象: /** * ...