سؤال

لدي تطبيق Java الذي سيتم تشغيله على نظام التشغيل Windows 7 (باستخدام Swing، App # 1) يعمل كملء الشاشة (ولكن ليس في الوضع الحصري). لدي تطبيق آخر (التطبيق رقم 2) الذي يعرض واجهة المستخدم الرسومية لتكوين جهاز خارجي عبر منفذ تسلسلي ليس لدي المصدر إليه ولا يمكنني تغييره على الإطلاق.

أريد تضمين التطبيق رقم 2 داخل التطبيق # 1 بحيث يبدو وكأنه جزء من تطبيق Java الأصل (إخفاء الملف -> الزر "إنهاء الزر" واختبئ الأزرار الصغيرة، والتعظيم، والإغلاق). < / ص>

إذا كان هذا النوع من التكامل غير ممكن داخل تطبيق Java، فستكون على ما يرام مع فتح العملية باستخدام Java وتم مراقبةه فقط للحفاظ على فتحه. سيحتاج ذلك إلى الحفاظ على تعيين النافذة على "دائما أعلى" لأن التطبيق رقم 1 هو ملء الشاشة وإخفاء أكبر قدر ممكن من MS Windows UI في خداع المستخدم في التفكير في أنه ليس تطبيقا خارجيا. هل هناك نوع من الأسلوب سواء استخدام JNI أو أي شيء آخر لإدارة نافذة عمليات أخرى (موقع الشاشة، شريط العنوان، تصغير، تعظيم، إغلاق الرؤية) وعلاجها) ودولة العملية من داخل تطبيق Java الخاص بي؟

سأكون سعيدا بتقديم المزيد من المعلومات إذا لزم الأمر.

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

المحلول

المخطط التالي هو اللغة المستقلة، لقد تمكنت من تضمين النافذة IE في تطبيق Ruby بهذه الطريقة:

  • أولا وقبل كل شيء، تغيير نمط نافذة التطبيق الخارجي (يمكنك استخدام JNA لاستدعاء Winapi):

    style= getwindowlongptr (app_hwnd، gwl_style)؛

    style |= ws_child؛

    style &= ~ ws_caption؛

    style &= ~ ws_popup؛

    setwindowlongptr (hwnd، gwl_style، style)؛

  • حدد علاقة الوالدين والطفل بين Windows:

    setparent (app_hwnd، java_hwnd)؛

  • الاستماع إلى نقل / تغيير حجم الأحداث من نافذة Java الخاصة بك، وتطبيق مواقع جديدة على نافذة تابعة.

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