"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إدراج جميع النوافذ المرتبطة بمعرف عملية معين في .NET؟

كيفية إدراج جميع النوافذ المرتبطة بمعرف عملية معين في .NET؟

نشرت في 2025-01-29
تصفح:857

How to List All Windows Associated with a Given Process ID in .NET?

العملية باستخدام إطار .NET. من خلال توفير معرف العملية (PID) ، تبحث هذه المهمة عن طريقة فعالة لتعداد جميع النوافذ المقابلة. توظف. يوضح مقتطف الكود التالي كيفية تنفيذ هذا الحل:

تفويض bool enumThreadDelegate (intptr hwnd ، intptr lparam) ؛ [Dllimport ("user32.dll")] enumThreadWindows extern extern extern intptr lparam) ؛ ثابت ienumerable enumerateprocesswindowhandles (int processID) { VAR HANDLES = قائمة جديدة () ؛ foreach (Throughread Thread in Process.GetProcessById (processID) .Threads) EnumThreadWindows (thread.id ، (hwnd ، lparam) = & gt ؛ {handles.add (hwnd) ؛ العودة صحيح. } ، intptr.zero) ؛ مقابض العودة }

مثال على الاستخدام

يوضح الكود المقدم كيفية تعداد جميع النوافذ المرتبطة بعملية مستكشف Windows:

خاص const uint wm_gettext = 0x000d ؛ [dllimport ("user32.dll" ، charset = charset.auto)] intptr extern extern exter StringBuilder LPARAM) ؛ [Stathread] باطل ثابت رئيسي (سلسلة [] args) { foreach (var handle في inumerateprocesswindowhandles ( Process.getProcessESByName ("Explorer"). أولاً (). معرف)) { رسالة stringBuilder = جديد StringBuilder (1000) ؛ sendMessage (Handle ، wm_gettext ، message.capacity ، message) ؛ console.writeline (message) ؛ } }

عن طريق استخدام هذا الحل ، يمكنك تعداد جميع النوافذ بشكل فعال إلى عملية معينة ، وتوفير رؤى قيمة في واجهة مستخدم التطبيق.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3