상세 컨텐츠

본문 제목

델파이에서 에어로 끄고 켜기

프로그래밍/Delphi

by ryujt 2013. 1. 5. 22:53

본문

unit _fmMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TfmMain = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    FSaveDwmCompositionEnabled : boolean;
  public
  end;

var
  fmMain: TfmMain;

implementation

uses
  DwmApi;

{$R *.dfm}

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if FSaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
end;

procedure TfmMain.FormCreate(Sender: TObject);
begin
 FSaveDwmCompositionEnabled := DwmCompositionEnabled;
  if FSaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
end;

end.


24: uses 절에 DwmApi를 추가합니다.  델파이에 기본 제공됩니다.  (너무 낮은 버전에서는 제공 안됩니다)


36: 에어로 관련 API를 사용 할 수 있는 지 확인합니다.  윈도우 버전이 Vista 이하 인 경우 등에서는 사용이 불가능하기 때문에 해당 API가 제공되는 DLL을 로딩할 수 없습니다.


37-38: 사용 가능한 상태인 경우에는 에어로를 끕니다.


30-31: 프로그램이 종료 할 때, 이전에 저장된 플래그를 통해서 에어로가 사용 가능했었다면, 다시 되돌려 놓습니다.


관련글 더보기