diff -r 43417d0ac3f2 -r 70c0a58e1ab5 OSProcess.st --- 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