q115643492 发表于 2011-4-11 11:23:53

(已解决)求判断进程名长度及所在路径的代码

本帖最后由 q115643492 于 2011-4-16 15:40 编辑

有个需求需实现:
有很多进程,其文件所在路径为c:\a目录,其中有几个6位数的进程名,如binju2.exe, ftu86h.exe等,这些进程名都是固定的,但唯一有一个6位数的进程名是随机的,我想判断这个随机的进程是否存在,如果存在就执行其他操作。
思路:检测当前进程,计算进程名长度,如果发现进程名长度为10 (6+4 ,4为.exe)的进程,则判断该进程文件所在目录是否为c:\a,最后需排除c:\a目录下其他的几个固定6位数的进程名。
求这样一段代码,感谢!

大绯狼 发表于 2011-4-11 11:54:46

搜索关于 进程 正则的相关内容 论坛里都有

kadingxiaodi 发表于 2011-4-11 12:12:57

搜索一下,应该有吧

q115643492 发表于 2011-4-11 16:20:02

搜不到啊
能给我弄段代码吗

afan 发表于 2011-4-11 17:01:09

#include <WinAPIEx.au3>

Local $Dir = 'C:\a\'
Local $sEList = 'binju2.exe|ftu86h.exe'
Local $aList = ProcessList()
For $i = 1 To $aList
        If StringLen($aList[$i]) = 10 Then
                $tmp = StringReplace(_WinAPI_GetProcessFileName($aList[$i]), $Dir, '')
                If @extended > 0 Then
                        If Not StringRegExp($tmp, '(?i)' & $sEList) Then MsgBox(0, '发现异形', $tmp)
                EndIf
        EndIf
Next

q115643492 发表于 2011-4-12 10:52:54

回复 5# afan


代码提示错误啊

afan 发表于 2011-4-12 11:03:27

回复 6# q115643492


    什么错误提示?

lixiaolong 发表于 2011-4-12 12:58:01

回复 7# afan

应该是_WinAPI_GetProcessFileName吧.
我的WinAPIEx.au3里找不到这个函数.

menfan1 发表于 2011-4-12 13:06:40

官网下新版的WinAPIEx.au3呗

lixiaolong 发表于 2011-4-12 13:10:20

回复 7# afan

我找到了,WinAPIEx_3.2里面就有那个函数.
http://www.autoitscript.com/forum/topic/98712-winapiex-udf/page__hl__winapiex

q115643492 发表于 2011-4-15 13:06:46

本帖最后由 q115643492 于 2011-4-15 13:54 编辑

回复 7# afan


C:\Documents and Settings\azd\桌面\1.au3(8,78) : ERROR: _WinAPI_GetProcessFileName(): undefined function.
                $tmp = StringReplace(_WinAPI_GetProcessFileName($aList[$i])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\azd\桌面\1.au3 - 1 error(s), 0 warning(s)


是这个错误

q115643492 发表于 2011-4-16 15:32:02

本帖最后由 q115643492 于 2011-4-16 15:41 编辑

已经解决。谢谢各位!

asdasdasd 发表于 2011-8-20 16:47:49

afan绝对好人,呵呵
页: [1]
查看完整版本: (已解决)求判断进程名长度及所在路径的代码