7

Wie ich den Glaseffekt auf meinen Konsolenanwendungen aktivieren kann. Ich verwende Windows 7 und Delphi 2010.Wie kann ich einen Glaseffekt (Windows Vista/7) in einer Konsolenanwendung mit Delphi aktivieren

Ich fand this Anwendung so sollte es möglich sein.

+1

Das Konsolenfenster ist eine freigegebene Ressource. Es gehört nicht zu Ihrem Programm. Nehmen Sie keine globalen Änderungen an einem Fenster vor, das Ihnen nicht gehört. Wenn Ihre Kunden wollen, dass ihre Konsolenfenster schick aussehen, können sie das Programm installieren, mit dem Sie verbunden sind. –

Antwort

15

Vor ein paar Wochen veröffentlichte ich this article auf meinem Blog.

Der Schlüssel ist die Verwendung der GetConsoleWindow und DwmEnableBlurBehindWindow Funktionen. Die Funktion GetConsoleWindow ruft das Fensterhandle ab, das von der Konsole verwendet wird, die dem aufrufenden Prozess zugeordnet ist.

Die Funktion DwmEnableBlurBehindWindow aktiviert den Unschärfeeffekt (Glas) auf dem bereitgestellten Fenstergriff.

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. 

Dies ist nur ein einfaches Beispiel; Sie müssen die Windows-Betriebssystemversion überprüfen, um Probleme zu vermeiden.

Screenshot

+0

Diese Dosis funktioniert nicht gut, wenn das "Fenster Farbe und Aussehen" auf Frost gesetzt ist ... weißer Text auf weißem Hintergrund –