因爲我可以在控制檯應用程序上激活玻璃效果。我正在使用Windows 7和德爾福2010年。如何在使用Delphi的控制檯應用程序中激活玻璃效果(Windows Vista/7)
我發現this應用程序,所以它應該是可能的。
因爲我可以在控制檯應用程序上激活玻璃效果。我正在使用Windows 7和德爾福2010年。如何在使用Delphi的控制檯應用程序中激活玻璃效果(Windows Vista/7)
我發現this應用程序,所以它應該是可能的。
幾個星期前,我在我的博客上發佈了this article。
關鍵是使用GetConsoleWindow
和DwmEnableBlurBehindWindow
函數。
GetConsoleWindow
函數檢索與調用進程關聯的控制檯使用的窗口句柄。
DwmEnableBlurBehindWindow
函數使所提供的窗口句柄上的模糊效果(玻璃)。
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.
這只是一個基本的例子;您必須檢查Windows操作系統版本以避免問題。
如果將「窗口顏色和外觀」設置爲霜凍,這種方法效果不佳...白色背景上的白色文字 – 2011-02-16 03:22:50
控制檯窗口是共享資源。它不屬於你的程序。不要對不屬於您的窗口進行全局更改。如果您的客戶希望他們的控制檯窗口看起來很花哨,他們可以安裝您鏈接的程序。 – 2009-11-19 22:54:00