吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2312|回复: 32
收起左侧

[Python 原创] python做的本地文件搜索工具

  [复制链接]
sgbyg 发表于 2024-7-20 16:10

解决每次打开Everything都需要等待更新索引的问题


[Python] 纯文本查看 复制代码
from subprocess import Popen
from tkinter import Tk, Entry, ttk, Menu
from ctypes import WinDLL, create_unicode_buffer


def on_right_click(event):
    item = tree.identify_row(event.y)
    menu = Menu(root, tearoff=0)
    menu.add_command(label="打开目录", command=lambda: Popen(f'explorer "{tree.item(item, "values")[1]}\\"'))
    menu.post(event.x_root, event.y_root)


def search(_):
    query = search_entry.get()
    everything_dll.Everything_SetSearchW(query)
    everything_dll.Everything_QueryW(True)

    num_results = everything_dll.Everything_GetNumResults()
    root.title(f'找到 {num_results} 条结果')

    for item in tree.get_children():
        tree.delete(item)

    for i in range(min(num_results, max_results)):
        buffer = create_unicode_buffer(buffer_size)
        everything_dll.Everything_GetResultFullPathNameW(i, buffer, buffer_size)
        path, name = buffer.value.rsplit("\\", 1)
        tree.insert("", "end", values=(name, path))


everything_dll = WinDLL('Everything64.dll')

max_results = 50
buffer_size = 260

root = Tk()
root.attributes('-alpha', 0.98)

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
window_width = 1400
window_height = 650
x = (screen_width - window_width) // 2
y = (screen_height - window_height) // 2
root.geometry(f"{window_width}x{window_height}+{x}+{y}")

root.columnconfigure(0, weight=1)
root.rowconfigure(1, weight=1)

search_entry = Entry(root)
search_entry.grid(sticky="ew")
search_entry.bind("<KeyRelease>", search)

columns = ("name", "path")
tree = ttk.Treeview(root, columns=columns, show='headings')
tree.grid(sticky="nsew")
tree.heading("name", text="名称", anchor="w")
tree.heading("path", text="路径", anchor="w")
tree.bind("<Button-3>", on_right_click)

root.mainloop()





成品 ---> https://ww0.lanzoue.com/iAh2H252415a




点评

你这个成品发的有问题,应该要给出Everything64.dll,否则软件无效  发表于 2024-7-21 00:50

免费评分

参与人数 12吾爱币 +18 热心值 +12 收起 理由
ameirmisaki + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
gl443437 + 1 + 1 我很赞同!
240721 + 1 + 1 我很赞同!
XY139 + 1 + 1 学到了
anzhi0708 + 1 + 1 用心讨论,共获提升!
xqf192 + 1 我很赞同!
wdx666nynl + 1 谢谢@Thanks!
kenan9527 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
ysy2001 + 1 + 1 谢谢@Thanks!
Bob5230 + 1 + 1 我很赞同!
wkdxz + 3 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kangta520 发表于 2024-7-20 16:56
之前用Everything现在用listary

免费评分

参与人数 2吾爱币 +1 热心值 +1 收起 理由
zxczxc19941102 + 1 我也用listary了,网购了一个6.2永久PRO版本
wangzhu3366 + 1 我很赞同!

查看全部评分

xdm2211 发表于 2024-7-20 17:13
把everything安装为服务 允许后台一直运行就行了。然后打开就可以搜不用等待。
506874511 发表于 2024-7-20 16:33
tanglikecuan 发表于 2024-7-20 16:56
这个只能特定环境下用,成品别人也用不了!
long88888888 发表于 2024-7-20 17:19
是的,一直后台运行就好了
wkdxz 发表于 2024-7-20 17:50
谢谢楼主提供的代码!

我有一个程序也是使用everything搜索 ,因为不知道其他途径就是开启了HTTP服务以后,使用request来读取结果的。感觉楼主这个比我的那个方便多了。

不知道有没有everything.dll的更多用法,或者资料可以参考一下 。
wasm2023 发表于 2024-7-20 18:28
比较卡,不如everything流畅
nitian0963 发表于 2024-7-20 19:08
这个只能特定环境下用,成品别人也用不了!
zhufuan 发表于 2024-7-20 19:21
老师,无法使用,是怎么回事
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 04:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表