367 {
368 List<OSProcess> plist = nilptr;
369
370 if (false == Win32Api.Kernel32.load()) {
371 return nilptr;
372 }
373
374 PROCESSENTRY32 struct = new PROCESSENTRY32();
375 plist = new List<OSProcess>();
376
377 long snopt = Win32Api.Kernel32.CreateToolhelp32Snapshot(
378 Win32Api.Kernel32.TH32CS_SNAPALL,
379 0);
380
381 try {
382 if (snopt > 0) {
383 bool succ = Win32Api.Kernel32.Process32First(snopt, struct);
384
385 while (succ) {
387 succ = Win32Api.Kernel32.Process32Next(snopt, struct);
388 }
389
390 Win32Api.Kernel32.CloseHandle(snopt);
391 }
393
394 }
395
396 return plist;
397 }