سؤال

عند كتابة بعض البرامج النصية للاختبار في IronPython، أريد التحقق مما إذا كانت النافذة معروضة أم لا.لدي معرف عملية التطبيق الرئيسي، وأريد الحصول على قائمة بعناوين النوافذ المرتبطة بمعرف التعريف.

كنت أحاول تجنب استخدام مكالمات win32api، مثل FindWindowEx، لأنه (على حد علمي) لا يمكنك الوصول إلى win32api مباشرة من IronPython.هل هناك طريقة للقيام بذلك باستخدام فئات .net المضمنة؟توصي معظم الأشياء التي صادفتها باستخدام win32api، كما هو موضح أدناه.

صافي (C #):الحصول على نوافذ فرعية عندما يكون لديك فقط مقبض العملية أو PID؟

تحديث:لقد وجدت حلاً بديلاً لما كنت أحاول القيام به.الإجابة أدناه.

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

المحلول

توضح المقالة أدناه كيفية الوصول إلى win32api بشكل غير مباشر من IronPython.يستخدم أسلوب CSharpCodeProvider CompileAssemblyFromSource لتجميع تجميع في الذاكرة من سلسلة التعليمات البرمجية المصدر C# المتوفرة.يمكن لـ IronPython بعد ذلك استيراد التجميع.

تجميع C# ديناميكيًا من IronPython

نصائح أخرى

اعتبارًا من IronPython 2.6 com.ctypes الوحدة مدعومة.توفر هذه الوحدة أنواع بيانات متوافقة مع لغة C، وتسمح بوظائف الاتصال في ملفات DLL.مثال سريع:

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value

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

إذا لم تعجبك هذه الإجابة، فما عليك سوى ترك تعليق على سؤالك وسوف أقوم بحذف هذه الإجابة، ليبقى سؤالك في قائمة الأسئلة التي لم تتم الإجابة عليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top