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.
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. –