Birkaç hafta önce blogumda this article yayınladım.
Anahtar, GetConsoleWindow
ve DwmEnableBlurBehindWindow
işlevlerini kullanmaktadır.
GetConsoleWindow
işlevi, çağırma işlemiyle ilişkili konsol tarafından kullanılan pencere tanıtıcısını alır.
DwmEnableBlurBehindWindow
işlevi, sağlanan pencere tutamacındaki bulanıklık etkisini (cam) etkinleştirir.
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.
Bu basit bir örnektir; sorunları önlemek için Windows işletim sistemi sürümünü kontrol etmelisiniz.
Konsol penceresi, paylaşılan bir kaynaktır. Programınıza ait değildir. Size ait olmayan bir pencerede global değişiklikler yapmayın. Müşterilerinizin konsol pencerelerinin süslü görünmesini istiyorlarsa, bağlandığınız programı yükleyebilirler. –