/* * Copyright (c) 2019 ETH Zürich, Educational Development and Technology (LET) * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ using SafeExamBrowser.Contracts.WindowsApi; using SafeExamBrowser.Contracts.WindowsApi.Events; namespace SafeExamBrowser.WindowsApi { internal class Process : IProcess { private System.Diagnostics.Process process; public event ProcessTerminatedEventHandler Terminated; public int Id { get { return process.Id; } } public bool HasTerminated { get { process.Refresh(); return process.HasExited; } } public Process(int id) { process = System.Diagnostics.Process.GetProcessById(id); process.Exited += Process_Exited; process.EnableRaisingEvents = true; } public void Kill() { process.Refresh(); if (!process.HasExited) { process.Kill(); } } private void Process_Exited(object sender, System.EventArgs e) { Terminated?.Invoke(process.ExitCode); } } }