c# यूडब्ल्यूपी में कोरवंडो ऑब्जेक्ट से एचडब्ल्यूएनड बंद करना




uwp hwnd (2)

यह लघु एमएसडीएन प्रलेखन कहते हैं कि कोर विन्डो में आईसीओआर विंडवइनर है जो कोरवांडो को एचडब्ल्यूएनडी को संभालता है। लेकिन मुझे यह कैसे प्राप्त करने के बारे में संदर्भ नहीं मिल रहा है (सी #) कृपया मदद करें।

https://msdn.microsoft.com/en-us/library/dn302119(v=vs.85).aspx


कृपया ध्यान दें कि यूडब्ल्यूपी के लिए कोई समर्थित एपीआई नहीं हैं जो एचडब्ल्यूएनडी स्वीकार करते हैं । आप जो भी एपीआई फोन करते हैं, वह विंडोज स्टोर प्रमाणन को विफल कर देगा, और यहां तक ​​कि अगर आप विंडोज स्टोर से बचें (जैसे, साइड-लोड या एंटरप्राइज़ परिनियोजन के माध्यम से जाना) कोई गारंटी नहीं है कि भविष्य में ऐप काम करेगी।


यह COM इंटरफ़ेस केवल सी ++ कोड के लिए सीधे पहुंच योग्य है। सी # में आपको इसे स्वयं घोषित करना होगा और सी में इसे इंटरफ़ेस घोषणा से मेल करना होगा: \ प्रोग्राम फ़ाइलें (x86) \ विंडोज किट \ 10 \ शामिल करें \ 10.0.10586.0 \ winrt \ coreWindow.idl। इस कदर:

using System.Runtime.InteropServices;
...
    [ComImport, Guid("45D64A29-A63E-4CB6-B498-5781D298CB4F")] 
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface ICoreWindowInterop {
        IntPtr WindowHandle { get; }
        bool MessageHandled { set; }
    }

इंटरफ़ेस संदर्भ प्राप्त करने के लिए कास्टिंग की आवश्यकता है, कंपाइलर आपको सीधे कोरवंडो ऑब्जेक्ट से डालने नहीं देगा। डीएलआर को नौकरी मिलती है, जैसे कि यह सबसे आसानी से किया जाता है:

    dynamic corewin = Windows.UI.Core.CoreWindow.GetForCurrentThread();
    var interop = (ICoreWindowInterop)corewin;
    var handle = interop.WindowHandle;




hwnd