Một vài tuần trước, tôi đã xuất bản this article trên blog của mình.
Điều quan trọng là sử dụng các chức năng GetConsoleWindow
và DwmEnableBlurBehindWindow
.
Chức năng GetConsoleWindow
truy xuất tay cầm cửa sổ được bàn điều khiển được kết hợp với quá trình gọi.
Chức năng DwmEnableBlurBehindWindow
cho phép hiệu ứng mờ (kính) trên tay cầm cửa sổ được cung cấp.
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.
Đây chỉ là một ví dụ cơ bản; bạn phải kiểm tra phiên bản hệ điều hành Windows để tránh các vấn đề.
Cửa sổ bảng điều khiển là tài nguyên được chia sẻ. Nó không thuộc về chương trình của bạn. Đừng thay đổi toàn bộ cửa sổ không thuộc về bạn. Nếu khách hàng của bạn muốn cửa sổ giao diện điều khiển của họ trông ưa thích, họ có thể cài đặt chương trình bạn liên kết. –