كيف يمكنني قائمة جميع العمليات قيد التشغيل في ويندوز ؟

StackOverflow https://stackoverflow.com/questions/648410

  •  22-07-2019
  •  | 
  •  

سؤال

وأود أن تجد وسيلة حلقة من خلال كل العمليات النشطة و القيام التشخيص الشيكات عليها (mem استخدام وحدة المعالجة المركزية في الوقت إلخ) كيندا مماثلة إلى إدارة المهام.

المشكلة هو تقسيمها إلى قسمين:

  1. إيجاد جميع العمليات
  2. إيجاد تشخيص سمات عنهم

أنا لست متأكدا حتى في ما مساحة تذهب تبحث عن ذلك.أي مساعدة / نصائح / روابط بالامتنان.

هل كانت مفيدة؟

المحلول

إيجاد جميع العمليات

يمكنك القيام بذلك من خلال عملية الفصل

using System.Diagnostics;
...
var allProcesses = Process.GetProcesses();

تشغيل التشخيص

هل يمكنك أن تعطينا المزيد من المعلومات هنا ؟ ليس من الواضح ما تريد القيام به.

عملية الدرجة يوفر قليلا من المعلومات على الرغم من أن قد تساعدك على الخروج.فمن الممكن الاستعلام عن هذه الفئة

  • جميع المواضيع
  • النافذة الرئيسية التعامل مع
  • تحميل كافة الوحدات النمطية
  • التشخيص مختلف المعلومات حول الذاكرة (المقسم, الظاهري, مجموعة العمل, الخ ...)
  • العملية الأساسية المعلومات (id, name, القرص الموقع)

تحرير

المرجع المذكور أنها ترغب في الحصول على ذاكرة وحدة المعالجة المركزية المعلومات.هذه الخصائص هي متاحة بسهولة في عملية الدرجة (عاد قبل GetProcesses()).أدناه هو MSDN صفحة تعرض كل من يؤيد خصائص.هناك العديد من الذاكرة وحدة المعالجة المركزية تلك المتاحة التي تناسب احتياجاتك.

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

كود:

إضافة هذا السطر إلى الخاص بك باستخدام القائمة:

using System.Diagnostics;

الآن يمكنك الحصول على قائمة من العمليات مع عملية.GetProcesses (طريقة) ، كما هو موضح في هذا المثال:

Process[] processlist = Process.GetProcesses();

foreach (Process theprocess in processlist)
{
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}

نصائح أخرى

إيجاد جميع العمليات من السهل بدلا من ذلك في الواقع:

using System.Diagnostics;

Process[] processes = Process.GetProcesses();

foreach (Process process in processes)
{
    // Get whatever attribute for process.
}

JaredPar بالفعل أشار إلى Process الفصل لذلك أنا فقط إضافة إلى أنه يجب أن تكون على علم أن الطبقة يأخذ لقطة من عملية' المعلومات عندما يتم إنشاء مثيل.ليس عرض لايف.لتحديث عليك الاتصال Refresh() على سبيل المثال.

كما نضع في اعتبارنا أن هذه العملية قد أغلق بينما يتم التفتيش عليها ، حتى تكون مستعدة للقبض على الاستثناءات و التعامل معها وفقا لذلك.

وأخيرا إذا كنت الاتصال Process.GetProcesses() سوف تحصل أيضا الزائفة عمليات "الخمول" و "النظام".IIRC لديهم عملية محددة معرفات بحيث يمكنك بسهولة تصفية لهم.

ما هو نظام التشغيل الذي تستخدمه ؟ أنا أعتبر من C# الوسم أنه من ويندوز ؟

إذا تحقق WMI ، وخاصة Win32_Process الدرجة.وهنا MSDN المرجعية: http://msdn.microsoft.com/en-us/library/aa394372(مقابل.85).aspx

فضلا عن اثنين من سيناريوهات الاستخدام هنا (مثل الحصول على قائمة من العمليات): http://msdn.microsoft.com/en-us/library/aa394599(مقابل.85).aspx

حسنا يمكنك أن تفعل هذا في powershell

1.إيجاد جميع العمليات

get-Process 

2.إيجاد تشخيص سمات عنهم

get-Process | where-object { $_.Handles -gt 200 }

رمز أعلاه سوف يعود جميع العمليات مع أكثر من 200 مقابض ، يمكن تحديد التشخيص الصفات في هذه الطريقة بسهولة.

لمزيد من المعلومات عن كيفية التعامل مع العمليات باستخدام powershell ترى هذا

using System.Diagnostics;

class Program
{
   static void Main()
   {   
      Process[] processlist = Process.GetProcesses();`          
   }
}

هنا عملية arrray يحتوي كل عدد من العملية الحالية في ذلك.

هذا كيف يفضلون الوصول إلى العمليات:

static void Main(string[] args)
{
    Process.GetProcesses().ToList().ForEach(p =>
    {
        Console.WriteLine(
            p.ProcessName + " p.Threads.Count=" + p.Threads.Count + " Id=" + p.Id);
    });

    Console.ReadKey();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top