Ponieważ mogę aktywować efekt szkła w aplikacjach konsoli. Używam Windows 7 i Delphi 2010.W jaki sposób można aktywować efekt szkła (Windows Vista/7) w aplikacji konsoli przy użyciu Delphi
Znalazłem aplikację this, więc powinno być możliwe.
Ponieważ mogę aktywować efekt szkła w aplikacjach konsoli. Używam Windows 7 i Delphi 2010.W jaki sposób można aktywować efekt szkła (Windows Vista/7) w aplikacji konsoli przy użyciu Delphi
Znalazłem aplikację this, więc powinno być możliwe.
Kilka tygodni temu opublikowałem this article na moim blogu.
Kluczem jest użycie funkcji GetConsoleWindow
i DwmEnableBlurBehindWindow
.
Funkcja GetConsoleWindow
pobiera uchwyt okna używany przez konsolę związaną z procesem wywołującym.
Funkcja DwmEnableBlurBehindWindow
umożliwia efekt rozmycia (szkło) na dostarczonym uchwycie okna.
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.
To tylko podstawowy przykład; musisz sprawdzić wersję systemu operacyjnego Windows, aby uniknąć problemów.
Ta dawka nie działa dobrze, jeśli "Kolor i wygląd okna" jest ustawiony na mróz ... biały tekst na białym tle –
Okno konsoli jest udostępnionym zasobem. To nie należy do twojego programu. Nie wprowadzaj globalnych zmian w oknie, które nie należy do ciebie. Jeśli Twoi klienci chcą, aby ich okna konsoli wyglądały fantazyjnie, mogą zainstalować program, z którym się łączysz. –