unit DPrintApproveRst; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TDlgPrintApproveRst = class(TForm) pnBottom: TPanel; btnOk: TButton; lbMsg: TLabel; mmReason: TMemo; procedure btnOkClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } Constructor Create(aOwner: TComponent; nType: Integer; sResp: String); procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시 procedure process_WM_SYSCOMMAND(var msg: TWMSysCommand); Message WM_SYSCOMMAND; end; var DlgPrintApproveRst: TDlgPrintApproveRst; implementation uses superobject, ManagerPrint, ManagerService; resourcestring RS_NotFoundPrintInfo = '출력 정보를 찾을 수 없습니다. (%s)'; RS_PrintReqReject = '출력 요청이 반려 되었습니다.'; RS_MsgError = '오류가 발생했습니다'; RS_UsbExcept = 'USB 매체 예외'; RS_UsbReqPass = 'USB 매체 예외가 승인 되었습니다.'; RS_UsbReqReject = 'USB 매체 예외 요청이 반려 되었습니다.'; RS_UrlExcept = '브라우저 접근 예외'; RS_UrlReqPass = '브라우저 접근 예외가 승인 되었습니다.'; RS_UrlReqReject = '브라우저 접근 예외 요청이 반려 되었습니다.'; RS_MtpExcept = 'MTP 매체 예외'; RS_MtpReqPass = 'MTP 매체 예외가 승인 되었습니다.'; RS_MtpReqReject = 'MTP 매체 예외 요청이 반려 되었습니다.'; RS_BtExcept = 'Bluetooth 매체 예외'; RS_BtReqPass = 'Bluetooth 매체 예외가 승인 되었습니다.'; RS_BtReqReject = 'Bluetooth 매체 예외 요청이 반려 되었습니다.'; RS_CdExcept = 'CD/DVD 매체 예외'; RS_CdReqPass = 'CD/DVD 매체 예외가 승인 되었습니다.'; RS_CdReqReject = 'CD/DVD 매체 예외 요청이 반려 되었습니다.'; {$R *.dfm} Constructor TDlgPrintApproveRst.Create(aOwner: TComponent; nType: Integer; sResp: String); var O: ISuperObject; pEnt: PPrtEnt; begin Inherited Create(aOwner); O := nil; try O := SO(sResp); except // error end; if O = nil then begin lbMsg.Caption := RS_MsgError; exit; end; mmReason.Text := O.S['reason']; case nType of 1 : // 출력 begin if O.S['result'] = 'true' then begin // O.S['watermark'] pEnt := gMgSvc.MgPrt.GetPrintInfo(O.S['taskId']); if pEnt = nil then begin lbMsg.Caption := Format(RS_NotFoundPrintInfo, [O.S['taskId']]); exit; end; pEnt.WInfo.bUseWM := O.S['watermark'] = 'true'; if pEnt.dtAprv = 0 then begin pEnt.dtAprv := Now; gMgSvc.MgPrt.Save; end; gMgSvc.DoPrint(pEnt); end else begin pEnt := gMgSvc.MgPrt.GetPrintInfo(O.S['taskId']); if pEnt <> nil then gMgSvc.MgPrt.DelPrintInfo(pEnt.sId, true); lbMsg.Caption := RS_PrintReqReject; end; end; 2 : // USB begin Caption := RS_UsbExcept; if O.S['result'] = 'true' then begin lbMsg.Caption := RS_UsbReqPass; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); gMgSvc.PrefModel.IgrUsbSerials := gMgSvc.PrefModel.IgrUsbSerials + ';' + O.S['serial']; gMgSvc.PrefModel.IgrUsbSerialList.Add(O.S['serial']); gMgSvc.SleepPolicy.IgrUsbSerials := gMgSvc.SleepPolicy.IgrUsbSerials + ';' + O.S['serial']; gMgSvc.SleepPolicy.IgrUsbSerialList.Add(O.S['serial']); if gMgSvc.VulPolicy.Loaded then begin gMgSvc.VulPolicy.IgrUsbSerials := gMgSvc.VulPolicy.IgrUsbSerials + ';' + O.S['serial']; gMgSvc.VulPolicy.IgrUsbSerialList.Add(O.S['serial']); end; if gMgSvc.OffPolicy.Loaded then begin gMgSvc.OffPolicy.IgrUsbSerials := gMgSvc.OffPolicy.IgrUsbSerials + ';' + O.S['serial']; gMgSvc.OffPolicy.IgrUsbSerialList.Add(O.S['serial']); end; if gMgSvc.ExpPolicy.Loaded then begin gMgSvc.ExpPolicy.IgrUsbSerials := gMgSvc.ExpPolicy.IgrUsbSerials + ';' + O.S['serial']; gMgSvc.ExpPolicy.IgrUsbSerialList.Add(O.S['serial']); end; end else begin lbMsg.Caption := RS_UsbReqReject; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); end; end; 3 : // 브라우저 접근 차단 begin Caption := RS_UrlExcept; if O.S['result'] = 'true' then begin lbMsg.Caption := RS_UrlReqPass; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['domain']); gMgSvc.PrefModel.UrlBlockExcpList := gMgSvc.PrefModel.UrlBlockExcpList + '|' + O.S['domain']; gMgSvc.SleepPolicy.UrlBlockExcpList := gMgSvc.SleepPolicy.UrlBlockExcpList + '|' + O.S['domain']; if gMgSvc.VulPolicy.Loaded then gMgSvc.VulPolicy.UrlBlockExcpList := gMgSvc.VulPolicy.UrlBlockExcpList + '|' + O.S['domain']; if gMgSvc.OffPolicy.Loaded then gMgSvc.OffPolicy.UrlBlockExcpList := gMgSvc.OffPolicy.UrlBlockExcpList + '|' + O.S['domain']; if gMgSvc.ExpPolicy.Loaded then gMgSvc.ExpPolicy.UrlBlockExcpList := gMgSvc.ExpPolicy.UrlBlockExcpList + '|' + O.S['domain']; end else begin lbMsg.Caption := RS_UrlReqReject; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['domain']); end; end; 4 : ; // DRM 복호화 5 : ; // 파일 반출 6 : // MTP begin Caption := RS_MtpExcept; if O.S['result'] = 'true' then begin lbMsg.Caption := RS_MtpReqPass; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); gMgSvc.PrefModel.MtpExcept := gMgSvc.PrefModel.MtpExcept + ';' + O.S['serial']; gMgSvc.SleepPolicy.MtpExcept := gMgSvc.SleepPolicy.MtpExcept + ';' + O.S['serial']; if gMgSvc.VulPolicy.Loaded then gMgSvc.VulPolicy.MtpExcept := gMgSvc.VulPolicy.MtpExcept + ';' + O.S['serial']; if gMgSvc.OffPolicy.Loaded then gMgSvc.OffPolicy.MtpExcept := gMgSvc.OffPolicy.MtpExcept + ';' + O.S['serial']; if gMgSvc.ExpPolicy.Loaded then gMgSvc.ExpPolicy.MtpExcept := gMgSvc.ExpPolicy.MtpExcept + ';' + O.S['serial']; end else begin lbMsg.Caption := RS_MtpReqReject; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); end; end; 7 : // 블루투스 begin Caption := RS_BtExcept; if O.S['result'] = 'true' then begin lbMsg.Caption := RS_BtReqPass; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); gMgSvc.PrefModel.BlueExcept := gMgSvc.PrefModel.BlueExcept + ';' + O.S['serial']; gMgSvc.SleepPolicy.BlueExcept := gMgSvc.SleepPolicy.BlueExcept + ';' + O.S['serial']; if gMgSvc.VulPolicy.Loaded then gMgSvc.VulPolicy.BlueExcept := gMgSvc.VulPolicy.BlueExcept + ';' + O.S['serial']; if gMgSvc.OffPolicy.Loaded then gMgSvc.OffPolicy.BlueExcept := gMgSvc.OffPolicy.BlueExcept + ';' + O.S['serial']; if gMgSvc.ExpPolicy.Loaded then gMgSvc.ExpPolicy.BlueExcept := gMgSvc.ExpPolicy.BlueExcept + ';' + O.S['serial']; end else begin lbMsg.Caption := RS_BtReqReject; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); end; end; 8 : // CD/DVD begin Caption := RS_CdExcept; if O.S['result'] = 'true' then begin lbMsg.Caption := RS_CdReqPass; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); gMgSvc.PrefModel.CdromExcept := gMgSvc.PrefModel.CdromExcept + ';' + O.S['serial']; gMgSvc.SleepPolicy.CdromExcept := gMgSvc.SleepPolicy.CdromExcept + ';' + O.S['serial']; if gMgSvc.VulPolicy.Loaded then gMgSvc.VulPolicy.CdromExcept := gMgSvc.VulPolicy.CdromExcept + ';' + O.S['serial']; if gMgSvc.OffPolicy.Loaded then gMgSvc.OffPolicy.CdromExcept := gMgSvc.OffPolicy.CdromExcept + ';' + O.S['serial']; if gMgSvc.ExpPolicy.Loaded then gMgSvc.ExpPolicy.CdromExcept := gMgSvc.ExpPolicy.CdromExcept + ';' + O.S['serial']; end else begin lbMsg.Caption := RS_CdReqReject; mmReason.Lines.Add(''); mmReason.Lines.Add(O.S['serial']); end; end; end; Application.ProcessMessages; end; procedure TDlgPrintApproveRst.CreateParams(var Params: TCreateParams); begin Inherited CreateParams(Params); Params.ExStyle := WS_EX_APPWINDOW; end; procedure TDlgPrintApproveRst.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end; procedure TDlgPrintApproveRst.process_WM_SYSCOMMAND(var msg: TWMSysCommand); begin if msg.Msg = SC_CLOSE then begin btnOk.Click; exit; end; Inherited; end; procedure TDlgPrintApproveRst.btnOkClick(Sender: TObject); begin Close; end; end.