URL can be done like this
Code:
RunningApps = CocoaMessage(0, CocoaMessage(0, 0, "NSWorkspace sharedWorkspace"), "runningApplications")
RunningAppsCount = CocoaMessage(0, RunningApps, "count")
OpenWindow(0, 100, 100, 600, 400, "Running applications", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 580, 380, "PID", 60, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_CheckBoxes)
AddGadgetColumn(0, 1, "Name", 280)
AddGadgetColumn(0, 2, "Executable", 1500)
Define i = 0
While i < RunningAppsCount
RunningApp = CocoaMessage(0, RunningApps, "objectAtIndex:", i)
PID.i = CocoaMessage(0, RunningApp, "processIdentifier")
AppName.s = PeekS(CocoaMessage(0, CocoaMessage(0, RunningApp, "localizedName"), "UTF8String"), -1, #PB_UTF8)
ExecutableURL.i = CocoaMessage(0, CocoaMessage(0, RunningApp, "executableURL"), "absoluteString")
URL.s = PeekS(CocoaMessage(0, ExecutableURL, "UTF8String"), -1, #PB_UTF8)
AddGadgetItem(0, i, Str(PID) + #LF$ + AppName + #LF$ + URL)
SetGadgetItemImage(0, i, CocoaMessage(0, RunningApp, "icon"))
If CocoaMessage(0, RunningApp, "isActive")
SetGadgetItemState(0, i, #PB_ListIcon_Checked)
EndIf
i + 1
Wend
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
As for the difference with "ps -x", you are right.
I suppose those other items are not applications or owned by 'root' but am not sure.
You can show more processes another way but unfortunately the name of the process is truncated to the first 16 characters
Code:
ImportC ""
proc_listallpids(*buffer, buffersize)
proc_name(pid, *buffer, buffersize)
proc_pidpath(pid, *buffer, buffersize)
EndImport
cnt = proc_listallpids(#Null, 0)
Dim PID.l(cnt - 1)
cnt = proc_listallpids(@PID(), cnt << 2)
ReDim PID(cnt - 1)
Dim buffer.a(1024)
For i = 0 To cnt - 1
Debug PeekS(@Buffer(), proc_name(PID(i), @buffer(), 1024), #PB_Ascii)
Debug PeekS(@Buffer(), proc_pidpath(PID(i), @buffer(), 1024), #PB_Ascii)
Debug ""
Next