Tôi sẽ hỏi điều này trên Câu trả lời của Unity, nhưng tôi liên tục gặp lỗi khi cố gắng truy cập trang web để nghĩ rằng có lẽ các bạn có thể giúp đỡ. Tôi cũng đã thử subreddit Unity3d và cũng không thể giải quyết vấn đề này.
Tôi đang cố gắng để có được một danh sách tất cả các quy trình đang chạy trên máy Mac của mình từ ứng dụng Unity của tôi. Ý tưởng cuối cùng là kiểm tra xem các ứng dụng nhất định có đang chạy hay không (ví dụ: TextEdit).
Lần đầu tiên tôi đã thử kiểm tra một ứng dụng mở với GetProcessByName, nhưng đã có ngoại lệ này mặc dù quá trình đang chạy:
InvalidOperationException: Process has exited, so the requested information is not available.
Sau đó, tôi quyết định đi đơn giản nhất có thể. Tôi hình dung tôi chỉ cần in ra một danh sách tất cả các quy trình đang chạy để bắt đầu. Đây là mã của tôi:
Process[] processes = Process.GetProcesses();
GUI.Label( new Rect(x, y, 100, 20), "Process: " + processes.Length );
y += 20;
foreach (Process process in processes) {
try
{
if (!process.HasExited)
{
GUI.Label( new Rect(x, y, 100, 20), "process: " + process.ProcessName );
y += 20;
}
}
catch (System.InvalidOperationException)
{
UnityEngine.Debug.Log("Holy batman we've got an exception!");
}
}
Khi tôi chạy nó thông qua trình soạn thảo, đây là những gì tôi thấy:
Số lượng quy trình đang chạy có xu hướng dao động trong khoảng 200, nhưng tên quy trình duy nhất được in trên màn hình là Unity.
Nếu tôi cố gắng in tất cả các quy trình bằng cách xóa câu lệnh HasExited nếu tôi nhận được điều này (tất nhiên chúng không phù hợp trên màn hình):
Điều này khiến tôi nghĩ rằng nó nghĩ rằng mọi quy trình ngoại trừ Unity đã thoát ... nhưng tôi có khá nhiều quy trình bị hủy bỏ đang chạy, vì vậy tôi tự hỏi tại sao nó không liệt kê những quy trình đó? Về cơ bản tôi cần tìm kiếm trong tất cả các quy trình hiện đang chạy . Có ý kiến gì không? Có một số loại vấn đề cấp phép với việc không thể truy cập các thuộc tính của các quy trình không thống nhất bên ngoài?
EDIT: Tôi nên lưu ý rằng tôi đã thử cả hai trong khi chạy qua trình chỉnh sửa và sau khi xây dựng. Khi chạy sau khi xây dựng với! Process.HasExited một quy trình được liệt kê với một tên trống. Tôi đoán đó có thể là ứng dụng hiện đang chạy. Số lượng quá trình dao động khoảng 240.