232 lines
5.8 KiB
Plaintext
232 lines
5.8 KiB
Plaintext
unit DNoticeImg;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.pngimage, Vcl.ExtCtrls,
|
|
PngImageList, superobject, Vcl.StdCtrls;
|
|
|
|
type
|
|
TDlgNoticeImg = class(TForm)
|
|
imgMain: TImage;
|
|
imgList: TPngImageCollection;
|
|
imgBtnOk: TImage;
|
|
imgBtnExit: TImage;
|
|
lbTop: TLabel;
|
|
lbBottom: TLabel;
|
|
lbMsg: TLabel;
|
|
lbBtn: TLabel;
|
|
tClose: TTimer;
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure imgMainMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
procedure imgBtnOkMouseEnter(Sender: TObject);
|
|
procedure imgBtnOkMouseLeave(Sender: TObject);
|
|
procedure imgBtnOkMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
procedure imgBtnExitMouseEnter(Sender: TObject);
|
|
procedure imgBtnExitMouseLeave(Sender: TObject);
|
|
procedure imgBtnExitClick(Sender: TObject);
|
|
procedure tCloseTimer(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure SetImgBtn(aImg: TImage; nImgIdx: Integer);
|
|
public
|
|
{ Public declarations }
|
|
Constructor Create(aOwner: TComponent; sJsonData: String);
|
|
procedure CreateParams(var Params: TCreateParams); override;
|
|
end;
|
|
|
|
var
|
|
DlgNoticeImg: TDlgNoticeImg;
|
|
|
|
implementation
|
|
|
|
uses
|
|
Tocsg.Safe, Tocsg.Strings, GlobalDefine, Condition;
|
|
|
|
resourcestring
|
|
RS_BlockCappApp = '캡쳐 APP이 차단되었습니다.';
|
|
RS_StartPI = '개인정보 검사가 시작되었습니다.';
|
|
RS_HEC_Info = '정보보호';
|
|
RS_HEC_CenterPhone = '보안지원센터';
|
|
RS_DetectCappApp = '캡쳐 APP이 감지 되었습니다.';
|
|
|
|
{$R *.dfm}
|
|
|
|
Constructor TDlgNoticeImg.Create(aOwner: TComponent; sJsonData: String);
|
|
var
|
|
hTarkBar: HWND;
|
|
r: TRect;
|
|
O: ISuperObject;
|
|
begin
|
|
Inherited Create(aOwner);
|
|
|
|
SetImgBtn(imgBtnExit, 7);
|
|
|
|
hTarkBar := FindWindow('Shell_TrayWnd', '');
|
|
if hTarkBar <> 0 then
|
|
begin
|
|
GetWindowRect(hTarkBar, r);
|
|
// Top가 0이면 위, 왼쪽 아님 오른쪽
|
|
if (r.Left <= 0) and (r.Right < Screen.PrimaryMonitor.Width) then
|
|
begin
|
|
// 왼쪽
|
|
Top := Screen.PrimaryMonitor.Height;
|
|
Left := Screen.PrimaryMonitor.Width;
|
|
end else
|
|
if (r.Left <= 0) and (r.Top = 0) and
|
|
(r.Bottom < Screen.PrimaryMonitor.Height) then
|
|
begin
|
|
// 위쪽
|
|
Top := Screen.PrimaryMonitor.Height;
|
|
Left := Screen.PrimaryMonitor.Width;
|
|
end else
|
|
if (r.Left <= 0) and (r.Top > 0) then
|
|
begin
|
|
// 아래쪽
|
|
Top := Screen.PrimaryMonitor.Height - (r.Bottom - r.Top);
|
|
Left := Screen.PrimaryMonitor.Width;// - Width;
|
|
end else begin
|
|
// 오른쪽
|
|
Top := Screen.PrimaryMonitor.Height;
|
|
Left := Screen.PrimaryMonitor.Width - (r.Right - r.Left);// - Width - (r.Right - r.Left);
|
|
end;
|
|
|
|
// nVCnt := Screen.PrimaryMonitor.Height div Height;
|
|
// nHPos := _nNotiCnt mod nVCnt;
|
|
// if nHPos = 0 then
|
|
// begin
|
|
// Left := Left - (_nNotiCnt div nVCnt) * Width;
|
|
// nHPos := nVCnt;
|
|
// end else
|
|
// Left := Left - ((_nNotiCnt div nVCnt) + 1) * Width;
|
|
// Top := Top - (nHPos * Height);
|
|
|
|
Top := Top - Height;
|
|
Left := Left - Width;
|
|
end;
|
|
|
|
case CUSTOMER_TYPE of
|
|
CUSTOMER_GEC :
|
|
begin
|
|
lbTop.Caption := RS_HEC_Info;
|
|
lbBottom.Caption := '';
|
|
|
|
tClose.Interval := 5000;
|
|
tClose.Enabled := true;
|
|
end;
|
|
CUSTOMER_HDENG :
|
|
begin
|
|
lbTop.Caption := RS_HEC_Info;
|
|
lbBottom.Caption := RS_HEC_CenterPhone + ' 02-2134-1145';
|
|
end;
|
|
else
|
|
begin
|
|
lbTop.Caption := 'BSOne';
|
|
lbBottom.Caption := '';
|
|
end;
|
|
end;
|
|
|
|
try
|
|
O := SO(sJsonData);
|
|
if O <> nil then
|
|
begin
|
|
case O.I['T'] of
|
|
TYPE_MSG_CTTSCH_START :
|
|
begin
|
|
lbMsg.Caption := RS_StartPI;
|
|
SetImgBtn(imgBtnOk, 1);
|
|
end;
|
|
TYPE_MSG_PREVENT_CAPAPP :
|
|
begin
|
|
if Pos('|PV', O.S['D']) > 0 then
|
|
lbMsg.Caption := RS_BlockCappApp
|
|
else
|
|
lbMsg.Caption := RS_DetectCappApp;
|
|
SetImgBtn(imgMain, 0);
|
|
SetImgBtn(imgBtnOk, 4);
|
|
imgBtnOk.Tag := 1;
|
|
end;
|
|
end;
|
|
end;
|
|
except
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.CreateParams(var Params: TCreateParams);
|
|
begin
|
|
inherited CreateParams(Params);
|
|
Params.ExStyle := WS_EX_APPWINDOW;
|
|
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
|
|
Params.WndParent := GetDesktopWindow;
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
Action := caFree;
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnExitClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnExitMouseEnter(Sender: TObject);
|
|
begin
|
|
SetImgBtn(imgBtnExit, 8);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnExitMouseLeave(Sender: TObject);
|
|
begin
|
|
SetImgBtn(imgBtnExit, 7);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnOkMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if imgBtnOk.Tag = 0 then
|
|
SetImgBtn(imgBtnOk, 3)
|
|
else
|
|
SetImgBtn(imgBtnOk, 6);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnOkMouseEnter(Sender: TObject);
|
|
begin
|
|
if imgBtnOk.Tag = 0 then
|
|
SetImgBtn(imgBtnOk, 2)
|
|
else
|
|
SetImgBtn(imgBtnOk, 5);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgBtnOkMouseLeave(Sender: TObject);
|
|
begin
|
|
if imgBtnOk.Tag = 0 then
|
|
SetImgBtn(imgBtnOk, 1)
|
|
else
|
|
SetImgBtn(imgBtnOk, 4);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.imgMainMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
ReleaseCapture;
|
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.SetImgBtn(aImg: TImage; nImgIdx: Integer);
|
|
begin
|
|
aImg.Picture.Assign(imgList.Items[nImgIdx].PngImage);
|
|
aImg.Repaint;
|
|
end;
|
|
|
|
procedure TDlgNoticeImg.tCloseTimer(Sender: TObject);
|
|
begin
|
|
tClose.Enabled := false;
|
|
Close;
|
|
end;
|
|
|
|
end.
|