public void UpdateUnityProcessInfos() { UnityProcessInfos.Clear(); foreach (var projectInfo in UnityProjectInfos) { var lockFile = $"{projectInfo.projectPath}/Temp/UnityLockfile"; if (File.Exists(lockFile)) { var lockers = FileUtil.WhoIsLocking(lockFile); if (lockers.Count > 0) { foreach (var locker in lockers) { if (locker.ProcessName == "Unity") { var processInfo = new UnityProcessInfo() { project = projectInfo, process = lockers[0] }; processInfo.project.projectName += $"(PID:{processInfo.process.Id})"; if (processInfo.process.Responding == false) { processInfo.project.projectName += "(未响应)"; } UnityProcessInfos.Add(processInfo); break; } } } } } }
public void CloseUnityProcess(UnityProcessInfo unityProcessInfo) { if (UnityProcessInfos.Remove(unityProcessInfo)) { unityProcessInfo.process.Kill(); } }
public void RestartUnityProcess(UnityProcessInfo unityProcessInfo) { if (UnityProcessInfos.Remove(unityProcessInfo)) { unityProcessInfo.process.Kill(); UNITY_PROCESS_START_INFO.FileName = unityProcessInfo.process.MainModule.FileName; UNITY_PROCESS_START_INFO.Arguments = $"-projectPath \"{unityProcessInfo.project.projectPath}\""; Process.Start(UNITY_PROCESS_START_INFO); } }
public void SelectUnityProcess(UnityProcessInfo unityProcessInfo) { ShowWindow(unityProcessInfo.process.MainWindowHandle, SW_RESTORE); ShowWindow(unityProcessInfo.process.MainWindowHandle, SW_MAXIMIZED); }