监控系统粘贴板和时间截的小软件(开源成世)
          梅菉佬--惊屎无人知  2026-06-05
①使用电脑,经常要用到剪贴板历史的,在windows10中有系统的,但是在ubuntu24中,我找不到,找第三方软件,也是各种不顺限制,有的版本变了就无法使用,又或这样那样的要求,不如干脆自已做一个自用吧。
②先是,读出粘贴板的历史数据,主要是文本,至于非文本格式,暂不理吧,手机粘贴板历史也是如是。
③发现,还要加上当前时间截,这个功能很小,但很实用,很多系统没有自带这功能,自已在ubuntu24中加上lazarus用托盘小软件,轻松实现。
④发现,最好加上常用的难打字,如,塘㙍的㙍字,这个字平时不容易打字出来,事先放入小软件中,到时当成粘贴板历史数据取出来用就行了。又发现,一些五笔中能记忆的字,也可如是,例如,逐,垂,等字。还有一些特殊符号,手机上有,电脑难找但要以显示的,例如,☆★①②③④⑤,还有,一些平时要常查但难记忆的,例如linux的命令,快捷键,也可以加入,相当于托盘记事本。。。。
⑤还有,在ubuntu中,加入到开机启动中,测试顺利可用。还有,编程时,加入ini文件,可以使用时编写文本,不用每次编译源码。还有,要用分级菜单功能,暂定二级树形菜单,否则太难看了。刚开始用最简单的timer来读取粘贴板数据,后来找到别的API,不用timer了,但是,linux的API比起windows的API,似乎难找得多了。。。
于是,自产自用小工具产生了。实测可用。独乐乐不如众乐乐,于是,开源,念心经,惊S无人知,压惊也,这点小事被卡住,多么不抵。。。
//显式初始化GTK(安全调用)
  gtk_init(nil, nil);  // 使用正确的选择常量
  clipboard_PGtk := gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
  g_signal_connect_data(
    clipboard_PGtk,
    'owner-change',
    TGCallback(@ClipboardChanged),
    nil,
    nil,
    0    //G_CONNECT_DEFAULT  // 或直接写 0
    );         

wwwwww := TStringList.Create;

  rootpath := extractfilepath(ParamStr(0));

  wwwwww.LoadFromFile(rootpath + 'date_paste_menu.ini');
  for i := 0 to wwwwww.Count - 1 do
  begin
    mm := tmenuitem.Create(self);
    mm.Caption := wwwwww[i];
    mm.hint := wwwwww[i];
    mm.OnClick := self.MenuItem1.OnClick;
    MenuItem_INI.Add(mm);
  end;
  wwwwww.Clear;
  wwwwww.LoadFromFile(rootpath + 'have-a-look.ini');
  for i := 0 to wwwwww.Count - 1 do
  begin
    subname := copy(wwwwww[i], 0, pos('#', wwwwww[i]) - 1);
    submain := copy(wwwwww[i], pos('#', wwwwww[i])+1, length(wwwwww[i]));
    if subname = '' then subname := '看';
    mm := tmenuitem.Create(self);
    mm.Caption := submain;
    mm.hint := submain;
    mm.OnClick := self.MenuItem1.OnClick;
    for j := 0 to MenuItem_have_a_look.Count - 1 do
      if MenuItem_have_a_look.Items[j].Caption = subname then break;

    if ((MenuItem_have_a_look.Count>0) and (MenuItem_have_a_look.Items[j].Caption = subname)) then
    begin
      MenuItem_have_a_look.Items[j].Add(mm);
    end
    else
    begin
      submm := tmenuitem.Create(self);
      submm.Caption := subname;
      MenuItem_have_a_look.Add(submm);
      submm.Add(mm);
    end;

  end; 

①刚才打开以前Ubuntu18下Lazarus3.0.0的角谷猜想自制图形化小软件,源代码在Ubuntu24下Lazarus4.4.0下无法编译,各种修改技巧亦无用。
②但别的工程,四色染色算法,托盘日期截,最短路径算法,TSP的sealine算法等又正常,估计可能因dbgrid水平滚动条?treeview控件?tchart控件?搞不清。
③于是得一结论:没有环境支持的代码尽量勿搞,不实用的勿搞,浪费時間引发疲劳,不如上网看风景图片....

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐