如何查找数组里面的数据
前几天发贴咨询如何获取进程描述,有高手已经回复了,可用代码#include <Array.au3>
Local $List = ProcessList() ;返回当前运行进程的名称和 PID 值的数组.
For $i = 1 To $List
$List[$i] = FileGetVersion($List[$i], "FileDescription")
Next
_ArrayDisplay($List,"显示进程数组",Default,32,Default,"进程名|描述")
现在又遇到一个新问题了,上面代码得到一个数组,里面包含进程名和描述
我想要根据描述结束某个进程,那么,我会定义一个变量赋值为将要结束的进程
比如dim $killprocess="任务管理器"那么我就需要在这个数组里面进行搜索匹配的值
我查看了帮助文档,有三个命令可能查找_ArraySearch、_ArrayFindAll、_ArrayBinarySearch
好像未能成功,只能根据二进制来查找吗?
然后我使用StringToBinary("任务管理器")转换为二进制,再用_ArrayBinarySearch($List,$killprocess)查找,得到的结果是-1
请问,数组里面的数据不能查找中文吗?看帮助文档里面示例都是查找的数字
另外,还有一种办法,用_ArrayToString可以把数组内容导出为字符串,这样就不好定位进程名字
请高手解惑,TKS 已经检索过,同时标记下,或当时立即结束进程不就行了?何必之后再去搜索一遍#include <Array.au3>
Local $killprocess = '任务管理器'
Local $killprocessList = ''
Local $aList = ProcessList() ;返回当前运行进程的名称和 PID 值的数组.
ReDim $aList[$aList + 1]
For $i = 1 To $aList
$aList[$i] = FileGetVersion($aList[$i], 'FileDescription')
If $aList[$i] == $killprocess Then $killprocessList &= $aList[$i] & '|'
Next
_ArrayDisplay($aList, '显示进程数组', -1, 0, '', '进程名|描述')
If $killprocessList = '' Then Exit
MsgBox(0, '', $killprocessList)
Local $aPid = StringRegExp($killprocessList, '\d+', 3)
For $i = 0 To UBound($aPid) - 1
;ProcessClose($aPid[$i]) ;结束进程
Next 回复 2# afan
非常感谢超级版主给力的回复
ReDim 这个关键字有些不懂
查看官方文档,注释是调整现有数组大小
按官方示例来说ReDim $aList[$aList + 1]这句代码就已经数组加1了,为何版主后面还带了个呢?
另外,这个+1是增加的行或者列?还是行和列同时加1? 回复 3# jmdfwy
+1 才和原数组的元素数量一致,因为是在基数上加的,实际等同于 UBound(原数组)
后面的是调整的第二维的维数,即列数,原数组为2,调整为3,以装载新数据
其实就本例目的而言,这些都是多余的,只是为了调试,显示出来看看而已 本帖最后由 tvzml 于 2015-1-14 09:08 编辑
#include <Array.au3>
Local $killprocess = '任务管理器'
Local $killprocessList = ''
Local $aList = ProcessList() ;返回当前运行进程的名称和 PID 值的数组.
ReDim $aList[$aList + 1]
For $i = 1 To $aList
$aList[$i] = FileGetVersion($aList[$i], 'FileDescription')
If $aList[$i] == $killprocess Then $killprocessList &= $aList[$i] & '|'
Next
_ArrayDisplay($aList, '显示进程数组', -1, 0, '', '进程名|PID|描述')
Local $SO = _ArrayFindAll($aList, "描述关键字", 0, 0, 0, 0, 2)
If IsArray($SO) Then
ProcessClose($aList[$SO]) ;结束进程
EndIf
绝对匹配查找,如果存在多个结果,请处理好数组即可! FileGetVersion 这个关键字,好像不能完全获取想要的信息
上面代码中,只能获取部分程序的描述,但是在任务管理器里面,所有进程都有描述的。。。
请问,有啥解决办法不?
支持下,学习学习· 谢谢分享。。。。。。。。 学习学习。。。。。。。。。。。。。。。。。。
页:
[1]