actionscript 3 - विन्डो डिस्प्ले एफ़िनिटी सेट करने के लिए फ्लेक्स में Win32 API को कॉल करें



actionscript-3 winapi (1)

मैंने एडोब एयर के साथ फ्लेक्स डेस्कटॉप एप्लीकेशन बनाया है मुझे आवेदन को कैद होने से बचाने की आवश्यकता है। आवेदन के विंडो प्रदर्शन संबंध को बदलकर, आवेदन को कब्जा किए जाने से संरक्षित किया जा सकता है। फ्लेक्स में जीत API का उपयोग कैसे करें? क्या खिड़की पर कब्जा करने के लिए कोई अन्य तरीका है?


पहले आपको यह सुनिश्चित करना है कि मुख्य विंडो में WS_EX_LAYERED Windows शैली नहीं है यह शैली SetWindowDisplayAffinity को कम से कम मेरी मशीन (सात प्रो 64 बिट) पर कोड 8 ( ERROR_NOT_ENOUGH_MEMORY ) के साथ विफल करता है। आपकी -app.xml file , मान के लिए false मूल्य निर्धारित करें <transparent> नीचे <initialWindow>

दूसरा, आपको आवेदन प्रक्रिया में एक नियमित सी डीएलएल इंजेक्ट करने का चयन करना होगा, क्योंकि एपीआई त्रुटि 5 ( ERROR_ACCESS_DENIED ) के साथ असफल हो जाएगी यदि आप कॉलर प्रक्रिया में नहीं रहने वाले विंडो के आत्मीयता को बदलने का प्रयास करते हैं।

एक संभव इंजेक्शन विधि SetWindowsHookEx API का उपयोग कर रहा है। Google आपको उस बारे में कई हिट देगा कुछ विवरण पूछने के लिए स्वतंत्र महसूस करें। आपको स्पष्ट रूप से किसी अन्य प्रक्रिया के सहयोग की आवश्यकता है, यहां (और कुछ Win32 API का अभ्यास)।

एक और संभावित तरीका 'एडीओबीई® एआईआर ®' (पीडीएफ) के लिए एक 'ACTIONSCRIPT® एक्सटेंशन' कोडिंग है।

बाद में बेहतर लगता है:

  • किसी बाह्य प्रक्रिया से सहयोग की आवश्यकता नहीं है
  • एडोब एयर आपके लिए DLL लोडिंग करता है
  • सी / सी ++ कोड बहुत सरल है

मैंने पहली तकनीक का इस्तेमाल किया, क्योंकि मैं एआईआर और एक्शन स्क्रिप्ट के साथ तुलना में डीएलएल के बारे में कच्चे Win32 एपीआई में अधिक धाराप्रवाह हूं ...

मैंने सफलतापूर्वक एक बहुत ही सरल "हैलो वर्ल्ड" एअर डेस्कटॉप एप्लिकेशन के साथ पहली तकनीक का परीक्षण किया और प्रिंट स्क्रीन के बाद "ऑल ब्लैक" छवि को अच्छी तरह से प्राप्त किया।