blackeyes 发表于 2015-1-2 14:07:20

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

有高手能给写出个完整代码吗?

netegg 发表于 2015-1-2 14:15:00

#include<array.au3>
local $a=processlist()
_arraydisplay($a)

blackeyes 发表于 2015-1-2 17:47:47

本帖最后由 blackeyes 于 2015-1-2 17:55 编辑

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

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


$Pid = ProcessExists("进程名字")
Patch=_GetDir(_WinAPI_GetProcessFileName($Pid))

netegg 发表于 2015-1-2 18:30:53

#Include <WinAPIEx.au3>
_WinAPI_GetProcessWorkingDirectory

netegg 发表于 2015-1-2 18:32:36

‘有高手能给写出个完整代码吗?’----这是你自己说的

blackeyes 发表于 2015-1-2 18:55:20

本帖最后由 blackeyes 于 2015-1-2 18:58 编辑

#Include
_WinAPI_GetProcessWorkingDirectory
netegg 发表于 2015-1-2 18:30 http://www.autoitx.com/images/common/back.gif


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

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


说明白一一点,我就是想检测系统所有进程所在的文件夹下面哪个文件夹下面是否有“abc.txt”这个文件,如果有再进行别的操作,如何实现?

netegg 发表于 2015-1-2 18:58:30

#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
                $aList[$i] = _WinAPI_GetProcessWorkingDirectory($aList[$i])
        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

blackeyes 发表于 2015-1-2 18:59:29

谢谢,楼上的这个我就知道如何处理了,再次感谢,高手

netegg 发表于 2015-1-2 18:59:58

剩下的是你自己的逻辑问题,和函数无关

blackeyes 发表于 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 跳转到下一次错误.:2


运行出错了,怎么回事啊

Global $hToken, $aAdjust, $aList = 0

上面这行语句不是进行声明了吗

netegg 发表于 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

blackeyes 发表于 2015-1-2 19:54:53

本帖最后由 blackeyes 于 2015-1-2 19:59 编辑


      $aList = ProcessList()
      For $i = 1 To $aList

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

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


      Next是我弄错了,这个代码就是我需要的,谢谢!
页: [1]
查看完整版本: [求助]列出当前系统所有进程的名字的AUTOIT代码怎么写