--- a/OSProcess.st Tue Jul 10 00:17:07 2018 +0200
+++ b/OSProcess.st Tue Jul 10 13:54:44 2018 +0200
@@ -13,6 +13,13 @@
category:'System-Support'
!
+Object subclass:#ProcessListEntry
+ instanceVariableNames:'executableName processID userName'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:OSProcess
+!
+
OSProcess subclass:#RemoteOSProcess
instanceVariableNames:'host'
classVariableNames:'MethodPerHost'
@@ -279,6 +286,39 @@
^ 'cmd'
! !
+!OSProcess class methodsFor:'utilities'!
+
+getTaskList
+ "get a tasklist (Windows OS only)"
+
+ |lines sepIdx entries|
+
+ OperatingSystem isMSWINDOWSlike ifTrue:[
+ lines := (PipeStream outputFromCommand:'tasklist') asStringCollection.
+ sepIdx := lines findFirst:[:line | line startsWith:'=='].
+ sepIdx == 0 ifTrue:[ ^ #() ].
+ entries := (lines from:(sepIdx + 1))
+ collect:[:line |
+ |s idx executableName processID userName|
+
+ s := line readStream.
+ executableName := (s upToMatching:[:ch | ch isDigit]) withoutSeparators.
+ processID := Integer readFrom:s.
+ s skipSeparators.
+ userName := s nextAlphaNumericWord.
+
+ ProcessListEntry executableName:executableName processID:processID userName:userName
+ ].
+ ^ entries
+ ] ifFalse:[
+ ^ #()
+ ].
+
+ "
+ self getTaskList
+ "
+! !
+
!OSProcess methodsFor:'accessing'!
auxStream
@@ -900,6 +940,50 @@
"Modified: / 30-05-2018 / 13:57:39 / Claus Gittinger"
! !
+!OSProcess::ProcessListEntry class methodsFor:'documentation'!
+
+documentation
+"
+ documentation to be added.
+
+ [author:]
+ anharman
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+! !
+
+!OSProcess::ProcessListEntry class methodsFor:'instance creation'!
+
+executableName:executableNameArg processID:processIDArg userName:userNameArg
+ ^ self new executableName:executableNameArg processID:processIDArg userName:userNameArg
+! !
+
+!OSProcess::ProcessListEntry methodsFor:'accessing'!
+
+executableName
+ ^ executableName
+!
+
+executableName:executableNameArg processID:processIDArg userName:userNameArg
+ executableName := executableNameArg.
+ processID := processIDArg.
+ userName := userNameArg.
+!
+
+processID
+ ^ processID
+!
+
+userName
+ ^ userName
+! !
+
!OSProcess::RemoteOSProcess class methodsFor:'documentation'!
documentation