#ifndef INCLUDE_RESTART_PROCESS_H #define INCLUDE_RESTART_PROCESS_H #ifndef INCLUDE_KOLIBRI_H #include "../lib/kolibri.h" #endif enum { MULTIPLE, SINGLE }; #define MAX_PROCESS_COUNT 256 :bool CheckProcessExists(dword proc_name) { int i; proc_info Process; for (i=0; i<MAX_PROCESS_COUNT; i++;) { GetProcessInfo(#Process, i); if (strcmpi(#Process.name, proc_name)==0) return 1; } return 0; } :void KillProcessByName(dword proc_name, byte multiple) { int i; proc_info Process; for (i=0; i<MAX_PROCESS_COUNT; i++;) { GetProcessInfo(#Process, i); if (strcmpi(#Process.name, proc_name)==0) { KillProcess(Process.ID); if (multiple==SINGLE) break; } } } :int GetProcessesCount(dword proc_name) { int i, count=0; proc_info Process; for (i=0; i<MAX_PROCESS_COUNT; i++;) { GetProcessInfo(#Process, i); if (strcmpi(#Process.name, proc_name)==0) count++; } return count; } :void RestartProcessByName(dword proc_name, byte multiple) { KillProcessByName(proc_name + strrchr(proc_name, '/'), multiple); RunProgram(proc_name, ""); } :void RestartAllProcess() { int i; proc_info Process, Self; GetProcessInfo(#Self, -1); for (i=0; i<MAX_PROCESS_COUNT; i++;) { GetProcessInfo(#Process, i); if (Process.name) && (!streq(#Process.name, "OS")) && (Process.ID != Self.ID) KillProcess(Process.ID); } RunProgram("/sys/launcher", NULL); } #endif