上次发的ev的例子发现不能;跑这就尴尬 了,测试了社区的例子发现飞跃老哥的直接进行dllcall的是没有问题的,但是包括河老板的ev的例子都无法使用,我发的例子脱离了ra的环境后也是存在调用问题,之后和僵尸大佬研究了一下,找到一个在影子上面的调用示例,进行了简单的修改改造成一个可用的例子
下面做个分享,各位朋友在测试ev调用类的时候可以试试我这个例子
下面的例子是僵尸老哥改进的
runwith("Admin","32")
everyDLL := "C:\Users\JiangShi\Desktop\Everything.dll"
ev := New everything(everyDLL)
; ev.SetMatchWholeWord(True)
ev.SetSearch("影子输入法")
ev.Query()
Num := ev.GetTotResults()
Loop % Num
{
aaa .= ev.GetResultFullPathName(A_index - 1) "`n"
}
MsgBox % aaa
return
class everything
{
__New(everyDLL){
this.hModule := DllCall("LoadLibrary", str, this.everyDLL := everyDLL)
}
__Get(aName){
}
__Set(aName, aValue){
}
__Delete(){
DllCall("FreeLibrary", "UInt", this.hModule)
return
}
SetSearch(aValue)
{
this.eSearch := aValue
dllcall(this.everyDLL "\Everything_SetSearch",str,aValue)
return
}
;设置全字匹配
SetMatchWholeWord(aValue)
{
this.eMatchWholeWord := aValue
dllcall(this.everyDLL "\Everything_SetMatchWholeWord",int,aValue)
return
}
;设置正则表达式搜索
SetRegex(aValue)
{
this.eMatchWholeWord := aValue
dllcall(this.everyDLL "\Everything_SetRegex",int,aValue)
return
}
;执行搜索动作
Query(aValue=1)
{
dllcall(this.everyDLL "\Everything_Query",int,aValue)
return
}
;返回管理员权限状态
GetIsAdmin()
{
return dllcall(this.everyDLL "\Everything_IsAdmin")
}
;返回匹配总数
GetTotResults()
{
return dllcall(this.everyDLL "\Everything_GetTotResults")
}
;返回可见文件结果的数量
GetNumFileResults()
{
return dllcall(this.everyDLL "\Everything_GetNumFileResults")
}
;返回文件名
GetResultFileName(aValue)
{
return strget(dllcall(this.everyDLL "\Everything_GetResultFileName",int,aValue))
}
;返回文件全路径
GetResultFullPathName(aValue,cValue=128)
{
VarSetCapacity(bValue,cValue*2)
dllcall(this.everyDLL "\Everything_GetResultFullPathName",int,aValue,str,bValue,int,cValue)
return bValue
}
}