7

का उपयोग कर कंसोल एप्लिकेशन में ग्लास प्रभाव (विंडोज़ विस्टा/7) को सक्रिय कैसे कर सकता है क्योंकि मैं अपने कंसोल अनुप्रयोगों पर ग्लास प्रभाव को सक्रिय कर सकता हूं। मैं विंडोज 7 और डेल्फी 2010 का उपयोग कर रहा हूं।डेल्फी

मुझे this एप्लिकेशन मिला, इसलिए यह संभव होना चाहिए।

+1

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

उत्तर

15

कुछ हफ्ते पहले मैंने अपने ब्लॉग पर this article प्रकाशित किया था।

कुंजी GetConsoleWindow और DwmEnableBlurBehindWindow फ़ंक्शंस का उपयोग करती है।

GetConsoleWindow फ़ंक्शन कॉलिंग प्रक्रिया से जुड़े कंसोल द्वारा उपयोग किए जाने वाले विंडो हैंडल को पुनर्प्राप्त करता है।

DwmEnableBlurBehindWindow फ़ंक्शन प्रदान किए गए विंडो हैंडल पर धुंध प्रभाव (ग्लास) सक्षम करता है।

program ConsoleGlassDelphi; 

{$APPTYPE CONSOLE} 

    uses 
    Windows, 
    SysUtils; 

type 
    DWM_BLURBEHIND = record 
    dwFlags     : DWORD; 
    fEnable     : BOOL; 
    hRgnBlur    : HRGN; 
    fTransitionOnMaximized : BOOL; 
    end; 

function DwmEnableBlurBehindWindow(hWnd : HWND; const pBlurBehind : DWM_BLURBEHIND) : HRESULT; stdcall; external 'dwmapi.dll' name 'DwmEnableBlurBehindWindow';//function to enable the glass effect 
function GetConsoleWindow: HWND; stdcall; external kernel32 name 'GetConsoleWindow'; //get the handle of the console window 

function DWM_EnableBlurBehind(hwnd : HWND; AEnable: Boolean; hRgnBlur : HRGN = 0; ATransitionOnMaximized: Boolean = False; AFlags: Cardinal = 1): HRESULT; 
var 
    pBlurBehind : DWM_BLURBEHIND; 
begin 
    pBlurBehind.dwFlags:=AFlags; 
    pBlurBehind.fEnable:=AEnable; 
    pBlurBehind.hRgnBlur:=hRgnBlur; 
    pBlurBehind.fTransitionOnMaximized:=ATransitionOnMaximized; 
    Result:=DwmEnableBlurBehindWindow(hwnd, pBlurBehind); 
end; 

begin 
    try 
    DWM_EnableBlurBehind(GetConsoleWindow(), True); 
    Writeln('See my glass effect'); 
    Writeln('Go Delphi Go'); 
    Readln; 
    except 
    on E:Exception do 
     Writeln(E.Classname, ': ', E.Message); 
    end; 
end. 

यह सिर्फ एक मूल उदाहरण है; मुद्दों से बचने के लिए आपको विंडोज ओएस संस्करण की जांच करनी होगी।

Screenshot

+0

यह खुराक अच्छी तरह से काम नहीं करती है अगर "खिड़की रंग और उपस्थिति" ठंढ पर सेट है ... एक सफेद पृष्ठभूमि पर सफेद पाठ –