मेरे पास एक छोटा .NET प्रोग्राम है जो एक पूर्णस्क्रीन विंडो उत्पन्न करता है। मैं इस विंडो को सबसे पीछे वाली विंडो रखना चाहता हूं (अर्थात अन्य विंडो इसके ऊपर खुलनी चाहिए, और क्लिक करने पर यह सामने नहीं आनी चाहिए)। क्या विंडोज प्रेजेंटेशन फाउंडेशन के तहत ऐसा करने का कोई व्यावहारिक तरीका है?

4
jcrawfordor 19 फरवरी 2011, 10:03
 – 
Ken Wayne VanderLinde
19 फरवरी 2011, 10:09

1 उत्तर

सबसे बढ़िया उत्तर

जहाँ तक मुझे पता है, आपको यह अधिकार करने के लिए P/Invoke करना होगा। अपनी विंडो के हैंडल को निर्दिष्ट करते हुए SetWindowPos फ़ंक्शन को कॉल करें। और HWND_BOTTOM ध्वज।

यह आपकी विंडो को Z क्रम के निचले भाग में ले जाएगा, और इसे अन्य विंडो को अस्पष्ट करने से रोकेगा।

नमूना कोड:

Private Const SWP_NOSIZE As Integer = &H1
Private Const SWP_NOMOVE As Integer = &H2
Private Const SWP_NOACTIVATE As Integer = &H10

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr,
                                     X As Integer, Y As Integer,
                                     cx As Integer, cy As Integer,
                                     uFlags As Integer) As Boolean
End Function


Public Sub SetAsBottomMost(ByVal wnd As Window)
    ' Get the handle to the specified window
    Dim hWnd As IntPtr = New WindowInteropHelper(wnd).Handle

    ' Set the window position to HWND_BOTTOM
    SetWindowPos(hWnd, New IntPtr(1), 0, 0, 0, 0,
                 SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE)
End Sub
2
Cody Gray 19 फरवरी 2011, 10:22