zoukankan      html  css  js  c++  java
  • 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
    ", 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
    ", s, err)
    		p, err := es.EverythingGetResultFullPathName(i)
    		fmt.Printf("FullPathName:[%s],%v
    ", p, err)
    		p, err = es.EverythingGetResultFileName(i)
    		fmt.Printf("FileName:[%s],%v
    ", p, err)
    		t, err := es.EverythingGetResultDateCreated(i)
    		fmt.Printf("DateCreated:[%s],%v
    ", t, err)
    		t, err = es.EverythingGetResultDateModified(i)
    		fmt.Printf("DateModified:[%s],%v
    ", t, err)
    		t, err = es.EverythingGetResultDateAccessed(i)
    		fmt.Printf("DateAccessed:[%s],%v
    ", t, err)
    	}
    }
    
    作者:janbar
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。喜欢我的文章请 [关注我] 吧。
    如果您觉得本篇博文对您有所收获,可点击 [推荐] [收藏] ,或到右侧 [打赏] 里请我喝杯咖啡,非常感谢。
  • 相关阅读:
    GIT使用入门
    源代码的下载和编译:
    搭建Android开发环境
    ndroid系统移植与驱动开发概述
    python 通过2个字典中的key比较 如果key一样2个字典中的v和vaule重新组成新的的字典
    Git 多分支开发合并
    Python清除字典中值为空的键值对
    01 Java基本数据类型、包装类、装箱拆箱、parseXxx()、String.valueOf()
    00 Java开发准备
    关于程序书写风格的一些漏见
  • 原文地址:https://www.cnblogs.com/janbar/p/15248436.html
Copyright © 2011-2022 走看看