7

Vì tôi có thể kích hoạt hiệu ứng kính trên các ứng dụng giao diện điều khiển của mình. Tôi đang sử dụng Windows 7 và Delphi 2010.Cách kích hoạt hiệu ứng kính (windows Vista/7) trong ứng dụng bảng điều khiển bằng Delphi

Tôi đã tìm thấy this đơn đăng ký để có thể thực hiện được.

+1

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

Trả lời

15

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

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 đề.

Screenshot

+0

Liều này không hoạt động tốt nếu "cửa sổ Màu và Giao diện" được đặt thành sương giá ... văn bản màu trắng trên nền trắng –

Các vấn đề liên quan