找回密码
 加入
搜索
查看: 3284|回复: 11

[系统综合] [求助]列出当前系统所有进程的名字的AUTOIT代码怎么写

  [复制链接]
发表于 2015-1-2 14:07:20 | 显示全部楼层 |阅读模式
有高手能给写出个完整代码吗?
发表于 2015-1-2 14:15:00 | 显示全部楼层
#include<array.au3>
local $a=processlist()
_arraydisplay($a)
 楼主| 发表于 2015-1-2 17:47:47 | 显示全部楼层
本帖最后由 blackeyes 于 2015-1-2 17:55 编辑

谢谢楼上的,我主要是想通过代码来实现到这些进程所在的文件夹,然后测试每个文件夹下面是否存在某文件,你上面的代码我运行了一下,能列出所有进程,但还是不会用

如果我想用下面代码来得到每个进程所在的文件夹,然后再对这个文件夹一个个进行检测,如何实现?,你上面那个好像是数组,不能用在下面代码单独操作吧,我只要一个提示,不用给我写出所有代码


$Pid = ProcessExists("进程名字")
Patch=_GetDir(_WinAPI_GetProcessFileName($Pid))
发表于 2015-1-2 18:30:53 | 显示全部楼层
#Include <WinAPIEx.au3>
_WinAPI_GetProcessWorkingDirectory
发表于 2015-1-2 18:32:36 | 显示全部楼层
‘有高手能给写出个完整代码吗?’----这是你自己说的
 楼主| 发表于 2015-1-2 18:55:20 | 显示全部楼层
本帖最后由 blackeyes 于 2015-1-2 18:58 编辑
#Include
_WinAPI_GetProcessWorkingDirectory
netegg 发表于 2015-1-2 18:30



这个是得到进程所在文件夹函数吧

但这个函数是对某一个进程来讲的,如何一个个处理当前系统所有进程啊’


说明白一一点,我就是想检测系统所有进程所在的文件夹下面哪个文件夹下面是否有“abc.txt”这个文件,如果有再进行别的操作,如何实现?
发表于 2015-1-2 18:58:30 | 显示全部楼层
[au3]#RequireAdmin

#Include <Array.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $hToken, $aAdjust, $aList = 0

; Enable "SeDebugPrivilege" privilege for obtain full access rights to another processes
$hToken = _WinAPI_OpenProcessToken(BitOR($SE_TOKEN_ADJUST_PRIVILEGES, $SE_TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $SE_DEBUG_NAME, $SE_PRIVILEGE_ENABLED, $aAdjust)

; Retrieve working directories for all processes the system
If Not (@error Or @extended) Then
        $aList = ProcessList()
        For $i = 1 To $aList[0][0]
                $aList[$i][1] = _WinAPI_GetProcessWorkingDirectory($aList[$i][1])
        Next
EndIf

; Enable SeDebugPrivilege privilege by default
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)

If IsArray($aList) Then
        _ArrayDisplay($aList, '_WinAPI_GetProcessCommandLine')
EndIf
[/au3]
 楼主| 发表于 2015-1-2 18:59:29 | 显示全部楼层
谢谢,楼上的这个我就知道如何处理了,再次感谢,高手
发表于 2015-1-2 18:59:58 | 显示全部楼层
剩下的是你自己的逻辑问题,和函数无关
 楼主| 发表于 2015-1-2 19:00:41 | 显示全部楼层
本帖最后由 blackeyes 于 2015-1-2 19:02 编辑

>运行 AU3Check (3.3.9.21)  开始目录:D:\AutoIT
"D:\EPOS\POSSRV-NEW\test.au3"(11,69) : warning: $SE_TOKEN_ADJUST_PRIVILEGES: 使用前并未进行声明.
$hToken = _WinAPI_OpenProcessToken(BitOR($SE_TOKEN_ADJUST_PRIVILEGES,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\EPOS\POSSRV-NEW\test.au3"(11,86) : warning: $SE_TOKEN_QUERY: 使用前并未进行声明.
$hToken = _WinAPI_OpenProcessToken(BitOR($SE_TOKEN_ADJUST_PRIVILEGES, $SE_TOKEN_QUERY)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\EPOS\POSSRV-NEW\test.au3"(11,69) : error: $SE_TOKEN_ADJUST_PRIVILEGES: 未声明的全局变量.
$hToken = _WinAPI_OpenProcessToken(BitOR($SE_TOKEN_ADJUST_PRIVILEGES,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\EPOS\POSSRV-NEW\test.au3"(11,86) : error: $SE_TOKEN_QUERY: 未声明的全局变量.
$hToken = _WinAPI_OpenProcessToken(BitOR($SE_TOKEN_ADJUST_PRIVILEGES, $SE_TOKEN_QUERY)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\EPOS\POSSRV-NEW\test.au3 - 2 错误, 2 警告
!>19:01:13 AU3Check 完成. 按下 F4 跳转到下一次错误.[CODE]:2


运行出错了,怎么回事啊

Global $hToken, $aAdjust, $aList = 0

上面这行语句不是进行声明了吗
发表于 2015-1-2 19:07:26 | 显示全部楼层
Global Const $SE_TOKEN_ASSIGN_PRIMARY = 0x00000001
Global Const $SE_TOKEN_DUPLICATE = 0x00000002
Global Const $SE_TOKEN_IMPERSONATE = 0x00000004
Global Const $SE_TOKEN_QUERY = 0x00000008
Global Const $SE_TOKEN_QUERY_SOURCE = 0x00000010
Global Const $SE_TOKEN_ADJUST_PRIVILEGES = 0x00000020
Global Const $SE_TOKEN_ADJUST_GROUPS = 0x00000040
Global Const $SE_TOKEN_ADJUST_DEFAULT = 0x00000080
Global Const $SE_TOKEN_ADJUST_SESSIONID = 0x00000100
Global Const $SE_TOKEN_EXECUTE = 0x00020000
Global Const $SE_TOKEN_READ = 0x00020008
Global Const $SE_TOKEN_WRITE = 0x000200E0
Global Const $SE_TOKEN_ALL_ACCESS = 0x000F01FF
 楼主| 发表于 2015-1-2 19:54:53 | 显示全部楼层
本帖最后由 blackeyes 于 2015-1-2 19:59 编辑
        $aList = ProcessList()
        For $i = 1 To $aList[0][0]

                $aList[$i][1] = _WinAPI_GetProcessWorkingDirectory($aList[$i][1])

                                MsgBox(0,"提示","程序"& $aList[$i][0]&"所在的文件夹为:"&$aList[$i][1])


        Next
是我弄错了,这个代码就是我需要的,谢谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-27 20:04 , Processed in 0.076467 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表