60 lines
1.3 KiB
C#
60 lines
1.3 KiB
C#
using System.Diagnostics;
|
|
using System.Net.Sockets;
|
|
|
|
namespace LeagueAPI.Utils;
|
|
|
|
public static class ProcessFinder
|
|
{
|
|
public static Process GetProcess()
|
|
{
|
|
Process[] processesByName = Process.GetProcessesByName("LeagueClientUx");
|
|
return processesByName.FirstOrDefault(p => p.ProcessName == "LeagueClientUx")
|
|
?? throw new InvalidOperationException("Failed to find LCUx process.");
|
|
}
|
|
|
|
public static ProcessInfo GetProcessInfo()
|
|
{
|
|
return new ProcessInfo(GetProcess());
|
|
}
|
|
|
|
public static bool IsActive()
|
|
{
|
|
try
|
|
{
|
|
GetProcessInfo();
|
|
return true;
|
|
}
|
|
catch (InvalidOperationException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool IsPortOpen()
|
|
{
|
|
try
|
|
{
|
|
return IsPortOpen(GetProcessInfo());
|
|
}
|
|
catch (InvalidOperationException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool IsPortOpen(ProcessInfo processInfo)
|
|
{
|
|
try
|
|
{
|
|
using TcpClient tcpClient = new();
|
|
tcpClient.Connect("127.0.0.1", processInfo.AppPort);
|
|
tcpClient.Close();
|
|
return true;
|
|
}
|
|
catch (SocketException)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|