화면 끄 기
38234 단어 스크린
창 파일
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 220
ClientWidth = 447
Color = clBtnFace
TransparentColor = True
TransparentColorValue = clPurple
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
PopupMenu = PopupMenu1
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnMouseDown = FormMouseDown
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
AlignWithMargins = True
Left = 32
Top = 47
Width = 345
Height = 74
BevelOuter = bvNone
Caption = 'Panel1'
ParentBackground = False
ShowCaption = False
TabOrder = 0
OnMouseDown = Panel1MouseDown
OnMouseLeave = Panel1MouseLeave
OnMouseMove = Panel1MouseMove
DesignSize = (
345
74)
object Panel2: TPanel
Left = 6
Top = 6
Width = 334
Height = 63
Anchors = [akLeft, akTop, akRight, akBottom]
BevelOuter = bvNone
Color = clPurple
ParentBackground = False
TabOrder = 0
end
end
object TrayIcon1: TTrayIcon
PopupMenu = PopupMenu1
Visible = True
OnClick = Hide1Click
Left = 296
Top = 160
end
object PopupMenu1: TPopupMenu
Left = 344
Top = 160
object Hide1: TMenuItem
Caption = #38544#34255'(&H)'
ShortCut = 32881
OnClick = Hide1Click
end
object N2: TMenuItem
Caption = '-'
end
object Color1: TMenuItem
Caption = #39068#33394'(&C)'
OnClick = Color1Click
end
object Transparent1: TMenuItem
AutoCheck = True
Caption = #21322#36879#26126'(&T)'
end
object Reset1: TMenuItem
Caption = #37325#35774'(&R)'
OnClick = Reset1Click
end
object N1: TMenuItem
Caption = '-'
end
object Exit1: TMenuItem
Caption = #36864#20986'(&E)'
ShortCut = 16465
OnClick = Exit1Click
end
end
end
유닛 1 유닛
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, IniFiles, AppEvnts, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
TrayIcon1: TTrayIcon;
PopupMenu1: TPopupMenu;
Hide1: TMenuItem;
N2: TMenuItem;
Reset1: TMenuItem;
Color1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Transparent1: TMenuItem;
procedure Hide1Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Reset1Click(Sender: TObject);
procedure Color1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
procedure Panel1MouseLeave(Sender: TObject);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure SaveConfig(fileName: string);
procedure LoadConfig(fileName: string);
procedure HideShell_TrayWnd;
procedure ShowShell_TrayWnd;
procedure HotKeyDown(var Msg: TMessage);
message WM_HOTKEY;
public
{ Public declarations }
end;
var
Form1: TForm1;
HotKeyId: Integer;
implementation
uses CtrlDesign;
{$R *.dfm}
procedure TForm1.Color1Click(Sender: TObject);
begin
with TColorDialog.Create(nil) do
begin
if Execute then
begin
Form1.Color := Color;
Panel1.Color := Color;
end;
end;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.HotKeyDown(var Msg: TMessage);
begin
if (Msg.LparamLo = MOD_ALT) and (Msg.LParamHi = VK_F2) then
begin
Hide1.Click;
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
SaveConfig('Screen.ini');
ShowShell_TrayWnd;
UnRegisterHotKey(Handle, HotKeyId); // HotKey, 。
DeleteAtom(HotKeyId);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Panel1
//
LoadConfig('Screen.ini');
Panel1.Color := Form1.Color;
Panel1.BevelInner := BvNone;
// Form1
BorderStyle := BsNone;
FormStyle := fsStayOnTop;
WindowState := wsMaximized;
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle, HotKeyId, MOD_ALT, VK_F2); { alt+F2 }
HideShell_TrayWnd;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
if Transparent1.Checked then
begin
Form1.AlphaBlend := True;
Form1.AlphaBlendValue := 120;
end;
ReleaseCapture;
SendMessage(Panel1.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
Form1.AlphaBlend := False;
Form1.AlphaBlendValue := 255;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.Hide1Click(Sender: TObject);
begin
if Hide1.Caption = ' (&H)' then
begin
Hide;
Hide1.Caption := ' (&S)';
ShowShell_TrayWnd;
end
else
begin
Show;
Hide1.Caption := ' (&H)';
HideShell_TrayWnd;
end;
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CtrlCursorMouseDown(Panel1, Button, Shift, X, Y);
end;
procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
Panel1.Color := Form1.Color;
Panel1.BevelInner := BvNone;
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
CtrlCursorMouseMove(Panel1, Shift, X, Y);
Panel1.Color := clSilver;
Panel1.BevelInner := bvRaised;
end;
procedure TForm1.Reset1Click(Sender: TObject);
begin
Panel1.Width := 345;
Panel1.Height := 74;
Panel1.Left := ClientWidth div 2 - Panel1.Width div 2;
Panel1.Top := ClientHeight div 2 - Panel1.Height div 2;
Form1.Color := clBlack;
end;
procedure TForm1.SaveConfig(fileName: string);
var
f: string;
begin
f := ExtractFilePath(Application.ExeName) + fileName;
with TIniFile.Create(f) do
begin
WriteString('MainForm', 'Color', ColorToString(Form1.Color));
WriteInteger('MainForm', 'PanelLeft', Panel1.Left);
WriteInteger('MainForm', 'PanelTop', Panel1.Top);
WriteInteger('MainForm', 'PanelWidth', Panel1.Width);
WriteInteger('MainForm', 'PanelHeight', Panel1.Height);
end;
end;
procedure TForm1.LoadConfig(fileName: string);
var
s: string;
f: string;
begin
f := ExtractFilePath(Application.ExeName) + fileName;
with TIniFile.Create(f) do
begin
s := ReadString('MainForm', 'Color', 'clBlack');
Form1.Color := StringToColor(s);
// Panel1.COLOR := StringToColor(s);
Panel1.Left := ReadInteger('MainForm', 'PanelLeft', 0);
Panel1.Top := ReadInteger('MainForm', 'PanelTop', 0);
Panel1.Width := ReadInteger('MainForm', 'PanelWidth', Panel1.Width);
Panel1.Height := ReadInteger('MainForm', 'PanelHeight', Panel1.Height);
end;
end;
procedure TForm1.HideShell_TrayWnd;
var
h: HWND;
begin
h := FindWindow('Shell_TrayWnd', nil);
if IsWindowVisible(h) then
ShowWindow(h, SW_HIDE)
end;
procedure TForm1.ShowShell_TrayWnd;
var
h: HWND;
begin
h := FindWindow('Shell_TrayWnd', nil);
if not IsWindowVisible(h) then
ShowWindow(h, SW_SHOW);
end;
end.
기타 단원
unit CtrlDesign;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
procedure CtrlCursorMouseDown(Ctrl: TWinControl; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure CtrlCursorMouseMove(Ctrl: TWinControl;Shift: TShiftState;X, Y: Integer);
implementation
//CtrlMouseMove(Panel1, Shift, X, Y);
procedure CtrlCursorMouseMove(Ctrl: TWinControl; Shift: TShiftState;X, Y: Integer);
begin
with Ctrl do
begin
if (X >= 0) and (X <= 3) then
begin
if (Y >= 0) and (Y <= 3) then Cursor := crSizeNWSE;
if (Y > 3) and (Y < Height - 3) then Cursor := cRsizewe;
if (Y >= Height - 3) and (Y <= Height) then Cursor := crSizeNESW;
end
else if (X > 3) and (X < Width - 3) then
begin
if (Y >= 0) and (Y <= 3) then Cursor := crSizeNS;
if (Y > 3) and (Y < Height - 3) then Cursor := cRarrow;
if (Y >= Height - 3) and (Y <= Width) then Cursor := crSizeNS;
end
else if (X >= Width - 3) and (X <= Width) then
begin
if (Y >= 0) and (Y <= 3) then Cursor := crSizeNESW;
if (Y > 3) and (Y < Height - 3) then Cursor := cRsizewe;
if (Y >= Height - 3) and (Y <= Width) then Cursor := crSizeNWSE;
end;
end;
end;
// CtrlCursorMouseDown(Panel1,Button,Shift,X,Y);
procedure CtrlCursorMouseDown(Ctrl: TWinControl; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
WParam: Integer;
begin
with Ctrl do
begin
if (X >= 0) and (X <= 3) then
begin
if (Y >= 0) and (Y <= 3) then WParam:=$F004;
if (Y > 3) and (Y < Height - 3) then WParam:=$F001;
if (Y >= Height - 3) and (Y <= Height) then WParam:=$F007;
end
else if (X > 3) and (X < Width - 3) then
begin
if (Y >= 0) and (Y <= 3) then WParam:=$F003;
if (Y > 3) and (Y < Height - 3) then WParam:=$F012;
if (Y >= Height - 3) and (Y <= Width) then WParam:=$F006;
end
else if (X >= Width - 3) and (X <= Width) then
begin
if (Y >= 0) and (Y <= 3) then WParam:=$F005;
if (Y > 3) and (Y < Height - 3) then WParam:=$F002;
if (Y >= Height - 3) and (Y <= Width) then WParam:=$F008;
end;
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,WParam,0);
end;
end;
end.