mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2025-09-10 12:30:53 -04:00
76 lines
1.6 KiB
C
76 lines
1.6 KiB
C
#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 (Process.status_slot != TSTATE_FREE)
|
|
&& (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++)
|
|
{
|
|
if (i > GetProcessInfo(#Process, i)) break;
|
|
if (Process.status_slot != TSTATE_FREE)
|
|
&& (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++)
|
|
{
|
|
if (i > GetProcessInfo(#Process, i)) break;
|
|
if (Process.status_slot != TSTATE_FREE)
|
|
&& (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++)
|
|
{
|
|
if (i > GetProcessInfo(#Process, i)) break;
|
|
if (Process.name)
|
|
&& (Process.ID != Self.ID)
|
|
KillProcess(Process.ID);
|
|
}
|
|
RunProgram("/sys/launcher", NULL);
|
|
}
|
|
|
|
#endif
|