Almost missed this thread.
Returning running processes with FBSL is quite simple, just use the CreateToolhelp32Snapshot api.
Here's some quick down and dirty script to get you started.

#option explicit
'$apptype console
#dlldeclare kernel32("CreateToolhelp32Snapshot","Process32First","Process32Next"_
"CloseHandle","GetCurrentProcessId")
dim %hList,$TabStop,$buff,$buffer
dim $PROCESSENTRY32,%hSnapshot,%success
alloc(PROCESSENTRY32,MAX_PATH + 36)
SetMem(PROCESSENTRY32,MAX_PATH + 36,0)
alloc(TabStop,12)
alloc(buff,MAX_PATH)
alloc(buffer,MAX_PATH)
SetMem(TabStop,100,0)
FBSL_SETTEXT(me,"Running Processes")
hList = Fbsl_control("ListBox",me,NULL,NULL,20,20,360,250,_
WS_CHILD + WS_VISIBLE + WS_HSCROLL + WS_VSCROLL + LBS_SORT + LBS_USETABSTOPS,WS_EX_STATICEDGE)
SendMessage(hList,LB_SETTABSTOPS,0,0)
SendMessage(hList,LB_SETTABSTOPS,1,TabStop)
SendMessage(hList,LB_SETTABSTOPS,2,TabStop)
Resize(me,0,0,400,300)
center(me)
show( me )
GetProccess()
begin events
select case cbmsg
case wm_close
exitprogram(0)
End Select
end events
sub GetProccess()
const TH32CS_SNAPPROCESS = &H2
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)
If hSnapShot = -1 Then Exit Sub
success = Process32First(hSnapShot,PROCESSENTRY32)
If success = 1 then
Do
buff = GetMem(PROCESSENTRY32,36,$MAX_PATH)
realloc(buff,strlen(buff))
buff = buff & Tab & GetMem(PROCESSENTRY32,20,4) & Tab & "Thread Count"
SendMessage(hList,LB_ADDSTRING,0,buff)
Loop while Process32Next(hSnapshot,PROCESSENTRY32)
End If
CloseHandle(hSnapShot)
End sub
This will return a list of running processes and their thread count.
When I get more time I'll see what I can do about your request.