# DWPRMON.CLS - Process Monitor Class Documentation ## Overview DWPRMON.CLS provides process monitoring capabilities for DataWindow applications. It allows tracking and managing DataWindow processes during runtime. ## Class Properties - `ProcessID` - Current process identifier - `ProcessName` - Name of the monitored process - `StartTime` - Process start timestamp - `Status` - Current process status (Active/Inactive) - `MemoryUsage` - Current memory consumption - `CPUUsage` - CPU utilization percentage ## Methods ### Constructor Constructor( as_processname ) Initializes a new process monitor instance - Parameters: - `as_processname`: String - Name of process to monitor ### StartMonitoring() StartMonitoring() Begins monitoring the specified process - Returns: Boolean - True if monitoring started successfully ### StopMonitoring() StopMonitoring() Stops monitoring the current process - Returns: Boolean - True if monitoring stopped successfully ### GetProcessMetrics() GetProcessMetrics() Retrieves current process performance metrics - Returns: Structure containing: - CPU usage - Memory usage - Thread count - Handle count ### IsProcessActive() IsProcessActive() Checks if monitored process is still running - Returns: Boolean - True if process is active ## Events - `ProcessStarted` - Fired when monitoring begins - `ProcessStopped` - Fired when monitoring ends - `MetricsUpdated` - Fired when new metrics are collected - `ThresholdExceeded` - Fired when resource usage exceeds defined limits ## Usage Example // Create monitor instance DWPRMON lw_monitor lw_monitor = CREATE DWPRMON("myprocess") // Start monitoring lw_monitor.StartMonitoring() // Check process status IF lw_monitor.IsProcessActive() THEN // Process metrics lst_metrics = lw_monitor.GetProcessMetrics() END IF // Stop monitoring lw_monitor.StopMonitoring() ## Notes - Requires appropriate system permissions to monitor processes - Recommended to properly dispose monitor instances when no longer needed - Can be used to monitor multiple processes simultaneously using separate instances