;===============================================================================
; Function Name: _ProcessListProperties()
; Description: Get various properties of a process, or all processes
; Call With: _ProcessListProperties( [$Process [, $sComputer]] )
; Parameter(s): (optional) $Process - PID or name of a process, default is "" (all)
; (optional) $sComputer - remote computer to get list from, default is local
; Requirement(s): AutoIt v3.2.4.9+
; Return Value(s): On Success - Returns a 2D array of processes, as in ProcessList()
; with additional columns added:
; [0][0] - Number of processes listed (can be 0 if no matches found)
; [1][0] - 1st process name
; [1][1] - 1st process PID
; [1][2] - 1st process Parent PID
; [1][3] - 1st process owner
; [1][4] - 1st process priority (0 = low, 31 = high)
; [1][5] - 1st process executable path
; [1][6] - 1st process CPU usage
; [1][7] - 1st process memory usage
; [1][8] - 1st process creation date/time = "MM/DD/YYY hh:mm:ss" (hh = 00 to 23)
; [1][9] - 1st process command line string
; ...
; [n][0] thru [n][9] - last process properties
; On Failure: Returns array with [0][0] = 0 and sets @Error to non-zero (see code below)
; Author(s): PsaltyDS at http://www.autoitscript.com/forum
; Date/Version: 07/02/2008 -- v2.0.2
; Notes: If an integer PID or string process name is provided and no match is found,
; then [0][0] = 0 and @error = 0 (not treated as an error, same as ProcessList)
; This function requires admin permissions to the target computer.
; All properties come from the Win32_Process class in WMI.
; To get time-base properties (CPU and Memory usage), a 100ms SWbemRefresher is used.
;===============================================================================
Func _ProcessListProperties($Process = "", $sComputer = ".")
Local $sUserName, $sMsg, $sUserDomain, $avProcs, $dtmDate
Local $avProcs[1][2] = [[0, ""]], $n = 1
; Convert PID if passed as string
If StringIsInt($Process) Then $Process = Int($Process)
; Connect to WMI and get process objects
$oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" & $sComputer & "\root\cimv2")
If IsObj($oWMI) Then
; Get collection processes from Win32_Process
If $Process = "" Then
; Get all
$colProcs = $oWMI.ExecQuery("select * from win32_process")
ElseIf IsInt($Process) Then
; Get by PID
$colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
Else
; Get by Name
$colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
EndIf
If IsObj($colProcs) Then
; Return for no matches
If $colProcs.count = 0 Then Return $avProcs
; Size the array
ReDim $avProcs[$colProcs.count + 1][10]
$avProcs[0][0] = UBound($avProcs) - 1
; For each process...
For $oProc In $colProcs
; [n][0] = Process name
$avProcs[$n][0] = $oProc.name
; [n][1] = Process PID
$avProcs[$n][1] = $oProc.ProcessId
; [n][2] = Parent PID
$avProcs[$n][2] = $oProc.ParentProcessId
; [n][3] = Owner
If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "\" & $sUserName
; [n][4] = Priority
$avProcs[$n][4] = $oProc.Priority
; [n][5] = Executable path
$avProcs[$n][5] = $oProc.ExecutablePath
; [n][8] = Creation date/time
$dtmDate = $oProc.CreationDate
If $dtmDate <> "" Then
; Back referencing RegExp pattern from weaponx
Local $sRegExpPatt = "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)"
$dtmDate = StringRegExpReplace($dtmDate, $sRegExpPatt, "$2/$3/$1 $4:$5:$6")
EndIf
$avProcs[$n][8] = $dtmDate
; [n][9] = Command line string
$avProcs[$n][9] = $oProc.CommandLine
; increment index
$n += 1
Next
Else
SetError(2); Error getting process collection from WMI
EndIf
; release the collection object
$colProcs = 0
; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process
; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros
Local $oRefresher = ObjCreate("WbemScripting.SWbemRefresher")
$colProcs = $oRefresher.AddEnum($oWMI, "Win32_PerfFormattedData_PerfProc_Process" ).objectSet
$oRefresher.Refresh
; Time delay before calling refresher
Local $iTime = TimerInit()
Do
Sleep(20)
Until TimerDiff($iTime) >= 100
$oRefresher.Refresh
; Get PerfProc data
For $oProc In $colProcs
; Find it in the array
For $n = 1 To $avProcs[0][0]
If $avProcs[$n][1] = $oProc.IDProcess Then
; [n][6] = CPU usage
$avProcs[$n][6] = $oProc.PercentProcessorTime
; [n][7] = memory usage
$avProcs[$n][7] = $oProc.WorkingSet
ExitLoop
EndIf
Next
Next
Else
SetError(1); Error connecting to WMI
EndIf
; Return array
Return $avProcs
EndFunc;==>_ProcessListProperties
$avRET = _ProcessListProperties("notepad.exe")
MsgBox(0,"Memory Usage",$avRET[1][7])
分享到:
相关推荐
2. 导入函数:通过`DllCall`函数,脚本可以获取DLL中的函数,如`ThreadCreate`和`ThreadJoin`。 3. 创建线程:调用`ThreadCreate`函数,传入需要异步执行的AutoIt3代码,创建新的线程。 4. 线程管理:脚本可以使用...
首先,AutoIt3的核心功能包括模拟键盘和鼠标操作、窗口控制、进程管理等。在信息管理方面,这些功能可以用于读取、写入和修改文件,如CSV或Excel表格,这些通常用于存储数据。文件名称“busynessdata”可能指的是...
2. **内置函数**:AutoIt3包含大量的内置函数,用于处理系统操作(如文件和目录操作、进程控制)、窗口交互(如窗口查找、控制、模拟鼠标和键盘事件)、字符串处理、数学运算等。例如,`FileOpen`、`FileRead`、`...
进程管理涉及到对Windows系统的进程列表获取、进程等待及结束等操作。此外,学习如何运行文件,对于执行自动化任务特别重要。 #### 定时器的应用 定时器的使用可以让脚本在特定时间或事件触发时执行某些操作。...
4. **进程和系统管理**:可以监控和控制其他应用程序的进程,获取系统信息,甚至可以进行注册表操作。 5. **脚本编译**:编写好的AutoIt脚本可以被编译成独立的可执行文件,这样无需AutoIt环境也能运行,提高了脚本...
3. 交互与系统:AutoItX提供了许多与系统交互的功能,如读写注册表、获取系统信息、进程管理等。 4. 文件操作:包括创建、删除、重命名文件和目录,以及读写文件内容。 5. GUI创建:虽然C++本身就有丰富的GUI库,...
而"AutoIt_PChome下载介绍.txt"则可能是一份简短的说明文档,详细解释了如何在PCHome网站上获取和安装AutoIt3。这些资源对于初学者来说非常有价值,可以帮助他们快速上手。 **标签相关知识点** - **AutoIt3**:...
直接与窗口的"标准控件"交互(设置/获取 文字,移动,关闭,等等) 脚本可以编译为标准可执行文件 创建用户图形界面接口(GUI) COM支持 正则表达式 直接调用外部DLL 和 Windows API 函数 程序运行为功能(让程序运行于其它...
4. 系统控制库:用于系统级别的操作,如进程控制、注册表操作、系统信息获取等。 5. 数学与逻辑运算库:提供数学计算和逻辑判断相关的函数。 6. 数据处理库:例如CSV读写、XML解析等。 7. 日期和时间库:用于处理...
它支持编写简单的脚本,用于实现诸如文件操作、窗口控制、系统信息获取、进程管理等一系列功能。 1. **基础语法与编程元素**:AutoIt拥有简单直观的语法,类似于Basic,使得初学者能够快速上手。它提供了变量、常量...
- 获取当前系统中正在运行的所有进程的信息。 2. **进程等待及结束**: - 等待指定进程结束或强制结束进程。 3. **运行文件**: - 在AutoIt脚本中启动外部程序。 #### 九、窗口管理 1. **窗口列表**: - ...
5. **系统信息获取**:能获取系统信息,如硬件配置、操作系统版本等,为自动化流程提供决策依据。 6. **进程和窗口管理**:可以管理和控制运行中的进程及窗口,实现对程序的自动化控制。 7. **网络通信**:支持TCP...
根据提供的文件信息,我们可以深入探讨AutoIt的基础知识及其高级应用,包括但不限于AutoIt的基本概念、语法结构、常用功能以及实际应用场景等内容。 ### 第一章 AutoIt基础 #### 1. 关于AutoIt AutoIt是一种专门...
压缩包内的“js获取表格内容.txt”可能是关于如何使用AutoIt与JavaScript交互,从网页表格中提取数据的教程或示例代码。这表明AutoIt不仅可以控制桌面应用,还可以与Web应用进行交互,例如自动化网页数据的抓取。 ...
- 与窗口的标准控件进行交互,如获取或设置文本、移动、关闭窗口等。 - 编译脚本为可独立运行的可执行文件。 - 创建GUI。 - 支持COM对象。 - 使用正则表达式进行模式匹配。 - 调用外部的DLL和Windows API函数。 - ...
3. **函数库**:AutoIt拥有丰富的内置函数库,涵盖各种任务,例如系统信息获取、文件和目录操作、网络通信、注册表操作等。这些函数大大增强了脚本的功能。 4. **GUI创建**:AutoIt提供了强大的GUI创建工具,允许...
这款图标截取器利用了AUTOIT的强大功能,允许用户轻松地获取任何.exe或.dll文件中的图标,甚至可以从运行中的进程获取图标。这对于开发者、设计师以及对系统美化有需求的用户来说非常实用。 该工具的操作流程通常...
再者,通过进程查找来定位窗口,可能涉及到`Process`函数,该函数可以用来查找并获取有关运行中的进程的信息。 标签"autoit3"进一步确认了这个程序的开发工具和主要技术栈是AutoIt3。AutoIt3提供了一系列强大的命令...
4. **内置函数**:AutoIt内含大量内置函数,如File操作函数(读写文件、目录管理)、进程控制函数、网络通信函数等,为实现各种功能提供了便利。 5. **脚本编译**:AutoIt脚本可以通过Scite编辑器或官方编译器转换...