ShiningLoreLauncher/ProcessControl.cs
Darkness 0ccdbd2cc9 add
2019-06-17 19:45:20 +09:00

73 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
/*
프로세스 리스트를 컨트롤 하는 클래스로
다중 클라이언트 제어를 위한 기능 추가 예정
1인 1클라이언트 혹은 1인 2클라이언트까지만 제어할 예정
게임 시작 버튼 입력 시 클라이언트 개수를 체크하여 실행 제한을 둔다.
혹시 편법으로 클라이언트를 일정 개수 이상 실행할 경우도 염두하여
프로세스 리스트를 5분 단위로 체크하여 일정 개수 이상의 클라이언트가
실행 될 경우 모든 게임 종료.
*/
namespace ShiningLoreLauncher
{
class ProcessControl
{
int count = 0;
//모든 프로세스 리스트 검색
public void ProcessCheckM(int numCheck)
{
Process[] pl = Process.GetProcesses();
if (numCheck == 0)
{
foreach (Process p in pl)
{
WriteProcessInfo(p);
}
}
else if(numCheck == 1)
{
foreach (Process p in pl)
{
AllClose(p);
}
}
}
//프로세스 리스트중에서 샤이닝로어 클라이언트 검출
private void WriteProcessInfo(Process processInfo)
{
string processname = processInfo.ProcessName.ToString();
if (processname == "SlOnline")
{
count++;
}
//만약에 샤로가 2개 넘어서 켜질 경우
if (count > 2 && processname == "SlOnline")
{
processInfo.Kill();
MessageBox.Show("클라이언트가 세개 이상입니다. 샤이닝로어를 강제 종료합니다.");
}
}
public void AllClose(Process processInfo)
{
string processname = processInfo.ProcessName.ToString();
if (processname == "SlOnline")
{
processInfo.Kill();
MessageBox.Show("런처가 종료되었습니다. 모든 샤이닝로어를 종료합니다.");
}
}
}
}