作ってみましたがよくわからん・・・
参考:
http://www.dev.pei.jp/programming/sdk/sdk69.html
#uselib "advapi32.dll"
#func OpenSCManager "OpenSCManagerA" sptr, sptr, sptr
#func EnumServicesStatusEx "EnumServicesStatusExA" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
#func CloseServiceHandle "CloseServiceHandle" sptr
#uselib "kernel32.dll"
#func OpenProcess "OpenProcess" sptr, sptr, sptr
#func CloseHandle "CloseHandle" sptr
#uselib "psapi.dll"
#func EnumProcessModules "EnumProcessModules" sptr, sptr, sptr, sptr
#func GetModuleBaseName "GetModuleBaseNameA" sptr, sptr, sptr, sptr
#define SC_MANAGER_ENUMERATE_SERVICE $00000004
#define SC_ENUM_PROCESS_INFO $00000000
#define SERVICE_WIN32 $00000030
#define SERVICE_ACTIVE $00000001
#define SERVICE_STATE_ALL $00000003
#define PROCESS_QUERY_INFORMATION $00000400
#define PROCESS_VM_READ $00000010
dim enumServiceStatus, 9, 1024
needed = 0
returned = 0
resumeHandle = 0
dim module, 1024
sdim name, 1024
buf = "" : notesel buf
OpenSCManager 0, 0, SC_MANAGER_ENUMERATE_SERVICE : scmHandle = stat
if scmHandle=0 { dialog "failed OpenSCManager" : end }
EnumServicesStatusEx scmHandle, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_ACTIVE, varptr(enumServiceStatus), 4*9*1024, varptr(needed), varptr(returned), varptr(resumeHandle), 0
if stat=0 { dialog "failed EnumServiceStatusEx" : end }
repeat returned
OpenProcess PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, 0, enumServiceStatus(7, cnt) : handle = stat
if handle!=0 {
EnumProcessModules handle, varptr(module), 4*1024, varptr(needed)
if stat {
GetModuleBaseName handle, module, varptr(name), 1024
if stat>0 { noteadd name }
}
CloseHandle handle
}
loop
CloseServiceHandle scmHandle
mes buf