go语言调用everything的SDK接口

介绍

官方SDK地址

  1. 本项目会将官方dll编译到可执行程序中,运行时无需考虑dll问题。
  2. 根据官方介绍,使用SDK前需要运行 everything程序。
  3. 执行 go build -tag ASCII时编译 ascii相关接口,否则编译 unicode接口。
  4. 可以参考 examples/search.go示例代码。
  5. 本项目主要是我用来学习window下go调用dll的方法,包含传参和返回值处理。
  6. 相关代码大部分都是研究go源码得到的启发。
  7. 特别注意,我的代码里面有几个使用了 go1.17才有的特性。

下面是示例代码:

package main

import (
    "fmt"
    "os"

    "github.com/jan-bar/es"
)

func main() {
    if len(os.Args) < 2 {
        fmt.Printf("usage:%s test.txt\n", os.Args[0])
        return
    }

    err := es.EverythingSetSearch(os.Args[1])
    if err != nil {
        panic(err)
    }
    err = es.EverythingSetMax(5)
    if err != nil {
        panic(err)
    }

    // 设置好需要查询的内容,不然后续遍历时可能报错
    err = es.EverythingSetRequestFlags(es.EverythingRequestFileName | es.EverythingRequestPath |
        es.EverythingRequestDateCreated | es.EverythingRequestDateModified | es.EverythingRequestDateAccessed |
        es.EverythingRequestSize)
    if err != nil {
        panic(err)
    }

    // 定好排序规则
    err = es.EverythingSetSort(es.EverythingSortDateModifiedAscending)
    if err != nil {
        panic(err)
    }

    // 开始查询
    fmt.Println("EverythingQuery:", es.EverythingQuery(true))

    // 得到查询结果个数
    num, err := es.EverythingGetNumResults()
    fmt.Println("EverythingGetNumResults", num, err)

    for i := uint32(0); i < num; i++ {
        fmt.Println("---------------------------------------------------")
        s, err := es.EverythingGetResultSize(i)
        fmt.Printf("FileSize:[%d],%v\n", s, err)
        p, err := es.EverythingGetResultFullPathName(i)
        fmt.Printf("FullPathName:[%s],%v\n", p, err)
        p, err = es.EverythingGetResultFileName(i)
        fmt.Printf("FileName:[%s],%v\n", p, err)
        t, err := es.EverythingGetResultDateCreated(i)
        fmt.Printf("DateCreated:[%s],%v\n", t, err)
        t, err = es.EverythingGetResultDateModified(i)
        fmt.Printf("DateModified:[%s],%v\n", t, err)
        t, err = es.EverythingGetResultDateAccessed(i)
        fmt.Printf("DateAccessed:[%s],%v\n", t, err)
    }
}

Original: https://www.cnblogs.com/janbar/p/15248436.html
Author: janbar
Title: go语言调用everything的SDK接口

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516608/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Go – 使用 sync.WaitGroup 来实现并发操作

    如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制,等到全部子任务执行完毕后,再进行下一步处理。这时每个子任务的执行可以并发处理,这种情景下适合使用…

    Go语言 2023年5月25日
    066
  • 记一次提升18倍的性能优化

    背景 最近负责的一个自研的 Dubbo 注册中心经常收到 CPU 使用率的告警,于是进行了一波优化,效果还不错,于是打算分享下思考、优化过程,希望对大家有一些帮助。 自研 Dubb…

    Go语言 2023年5月25日
    079
  • muduo源码分析之TcpServer模块

    这次我们开始 muduo源代码的实际编写,首先我们知道 muduo是 LT模式, Reactor模式,下图为 Reactor模式的流程图[来源1] 然后我们来看下 muduo的整体…

    Go语言 2023年5月25日
    053
  • 在开发中将git运用自如

    写这篇文章的初衷是记录自己在开发中使用git遇到的问题和如何利用git进行高效的开发。个人理解来看,很多人对git运用不自如主要是两方面的原因:1、死记硬背命令,这个其实可以通过h…

    Go语言 2023年5月25日
    054
  • Go标准的目录结构(自总结)

    微服务版 &#x251C;&#x2500;&#x2500; LICENSE.md &#x251C;&#x2500;&#x2500; …

    Go语言 2023年5月25日
    055
  • GopherCon SG 2019 “Understanding Allocations” 学习笔记

    本篇是根据 GopherCon SG 2019 “Understanding Allocations” 演讲的学习笔记。 Understanding All…

    Go语言 2023年5月25日
    050
  • go程序添加远程调用tcpdump功能

    最近开发的telemetry采集系统上线了。听起来高大上,简单来说就是一个grpc/udp服务端,用户的机器(路由器、交换机)将它们的各种统计数据上报采集、整理后交后端的各类AI分…

    Go语言 2023年5月25日
    070
  • 为开源项目 go-gin-api 增加后台任务模块

    任务管理界面 (WEB) 任务调度器 任务执行器 小结 推荐阅读 任务管理界面 (WEB) 支持在 WEB &#x754C;&#x9762; 中对任务进行管理,例如…

    Go语言 2023年5月25日
    0114
  • go学习笔记(一)

    零值的 slice等于 nil。 nil值的 slice没有底层数组 nil值的 slice的长度和容量都是 0。但是也有非 nil值的 slice的长度和容量为 0的,如 []i…

    Go语言 2023年5月25日
    040
  • 使用Go搭建并行排序处理管道笔记

    go;collapse:true;;gutter:true; package main</p> <p>import ( "bufio" …

    Go语言 2023年5月25日
    060
  • Go语言实现线程安全访问队列

    这个例子用Go语言的包”container/list”实现一个线程安全访问的队列。其中不少细节耐人寻味,做出它则是花费了不少精力,找不到样例啊! Go语言的…

    Go语言 2023年5月29日
    051
  • install go 环境

    GoSDK安装 下载 GO SDK wget https://golang.google.cn/dl/go1.17.3.linux-amd64.tar.gz tar xfv go1…

    Go语言 2023年5月25日
    066
  • 常见的限流算法

    通过限制并发访问数或者限制一个时间窗口内允许处理的请求数量来保护系统,例如,通过限流,你可以过滤掉产生流量峰值的客户和服务。 令牌桶算法 令牌桶算法是常见的一种限流算法。假设有一个…

    Go语言 2023年5月25日
    064
  • Go语言之高级篇beego框架之view

    1、基本语法 go统一使用了{{ 和 }}作为左右标签,没有其它的标签符号。 如果你想要修改为其它符号,可以修改配置文件。 使用.来访问当前位置的上下文 使用$来引用当前模板根级的…

    Go语言 2023年5月29日
    071
  • Excelize 2.5.0 正式发布,这些新增功能值得关注

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Mic…

    Go语言 2023年5月25日
    068
  • GO语言程序查询数据库字段为空遇到的几个问题总结

    如果字段值可能为空,那么从表里面读取数据的时候程序使用的变量类型应该使用 sql.NullXXX 类型,比如下面的日期类型: 开始的时候,deleteAt 使用的也是 time.T…

    Go语言 2023年5月25日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球