unit DScTestMain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ProcessSoftCampDRM; type TDlgScTestMain = class(TForm) btnStatus: TButton; mmResult: TMemo; btnOpen: TButton; OpenDialog: TOpenDialog; GroupBox1: TGroupBox; edGradeId: TEdit; edAcl: TEdit; Label3: TLabel; Label4: TLabel; btnSetAcl: TButton; Label5: TLabel; edForceEncMode: TEdit; btnInstall: TButton; btnRelease: TButton; GroupBox2: TGroupBox; btnForceDecrypt: TButton; edSrcPath: TEdit; edDestPath: TEdit; Label1: TLabel; Label2: TLabel; btnDecrypt: TButton; chResultView: TCheckBox; btnGetGrade: TButton; GroupBox3: TGroupBox; Label6: TLabel; cbAcl: TComboBox; btnGetAcl: TButton; GroupBox4: TGroupBox; Label7: TLabel; edScanPath: TEdit; Button1: TButton; Label8: TLabel; edScanDecPath: TEdit; btnScanDecrypt: TButton; btnScanLoginCheck: TButton; Button2: TButton; procedure btnStatusClick(Sender: TObject); procedure btnForceDecryptClick(Sender: TObject); procedure btnDecryptClick(Sender: TObject); procedure btnOpenClick(Sender: TObject); procedure btnSetAclClick(Sender: TObject); procedure btnGetGradeClick(Sender: TObject); procedure btnInstallClick(Sender: TObject); procedure btnReleaseClick(Sender: TObject); procedure btnGetAclClick(Sender: TObject); procedure btnScanLoginCheckClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure btnScanDecryptClick(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var DlgScTestMain: TDlgScTestMain; implementation uses Tocsg.Path; {$R *.dfm} procedure TDlgScTestMain.btnScanDecryptClick(Sender: TObject); var nEncStat: integer; bEnc: Boolean; hFile: THandle; sDecPath: array [0..1023] of WideChar; nDecPathLen: Integer; begin mmResult.Clear; edScanPath.Text := Trim(edScanPath.Text); if not FileExists(edScanPath.Text) then begin MessageBox(Handle, '¿øº» °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; if not DirectoryExists(ExtractFilePath(edScanDecPath.Text)) then begin MessageBox(Handle, 'º¹È£È­ °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; bEnc := DS_IsEncrypted(edScanPath.Text); if not bEnc then begin ShowMessage('ÀÏ¹Ý ÆÄÀÏ'); if MessageBox(Handle, '¾Ïȣȭ µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.'+#13+#10+'°è¼Ó ÇϽðڽÀ´Ï±î?', PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; hFile := DS_DecryptFile(edScanPath.Text); if hFile <> 0 then begin try ZeroMemory(@sDecPath[0], SizeOf(sDecPath)); if DS_GetDecryptedFileName(hFile, @sDecPath[0], 1024) > 0 then begin // ShowMessage(Format('º¹È£È­ °æ·Î (Len=%d) : %s', [nDecPathLen, WideString(sDecPath)])); if CopyFile(PChar(WideString(sDecPath)), PChar(edScanDecPath.Text), false) then begin ShowMessage('º¹È£È­ ¼º°ø'); end; end; finally DS_Finalize(hFile, false) end; end else ShowMessage(Format('º¹È£È­ ½ÇÆÐ, Error=%d', [GetLastError])); end; procedure TDlgScTestMain.btnScanLoginCheckClick(Sender: TObject); begin if DS_IsLogin then ShowMessage('·Î±×ÀÎ »óÅÂ') else ShowMessage('·Î±×¾Æ¿ô »óÅÂ'); end; procedure TDlgScTestMain.btnSetAclClick(Sender: TObject); begin edGradeId.Text := Trim(edGradeId.Text); edAcl.Text := Trim(edAcl.Text); edForceEncMode.Text := Trim(edForceEncMode.Text); DSCSSetAcl(Handle, edGradeId.Text, edAcl.Text, StrToIntDef(edForceEncMode.Text, 0)); end; procedure TDlgScTestMain.btnStatusClick(Sender: TObject); begin case DSCheckDSAgent of 0 : ShowMessage('DS Client Agent°¡ ½ÇÇà µÇÁö ¾ÊÀº »óÅÂ'); // DS Client Agent°¡ ½ÇÇà µÇÁö ¾ÊÀº »óÅ 1 : ShowMessage('DS Client Agent ½ÇÇà »óÅÂÀÌ¸ç ·Î±×¾Æ¿ô »óÅÂ'); // DS Client Agent ½ÇÇà »óÅÂÀÌ¸ç ·Î±×¾Æ¿ô »óÅ 2 : ShowMessage('DS Client Agent ½ÇÇà »óÅÂÀÌ¸ç ·Î±×ÀÎ »óÅÂ'); // DS Client Agent ½ÇÇà »óÅÂÀÌ¸ç ·Î±×ÀÎ »óÅ end; end; procedure TDlgScTestMain.Button1Click(Sender: TObject); var nEncStat: integer; bEnc: Boolean; hFile: THandle; sDecPath: array [0..1023] of WideChar; nDecPathLen: Integer; begin mmResult.Clear; edScanPath.Text := Trim(edScanPath.Text); if not FileExists(edScanPath.Text) then begin MessageBox(Handle, '¿øº» °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; bEnc := DS_IsEncrypted(edScanPath.Text); if not bEnc then begin ShowMessage('ÀÏ¹Ý ÆÄÀÏ'); if MessageBox(Handle, '¾Ïȣȭ µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.'+#13+#10+'°è¼Ó ÇϽðڽÀ´Ï±î?', 'ÆÄÀÏ ¿­±â', MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; hFile := DS_DecryptFile(edScanPath.Text); if hFile <> 0 then begin try ZeroMemory(@sDecPath[0], SizeOf(sDecPath)); nDecPathLen := DS_GetDecryptedFileName(hFile, @sDecPath[0], 1024); if nDecPathLen > 0 then begin // ShowMessage(Format('º¹È£È­ °æ·Î (Len=%d) : %s', [nDecPathLen, WideString(sDecPath)])); mmResult.Lines.LoadFromFile(WideString(sDecPath)); end; finally DS_Finalize(hFile, false) end; end else ShowMessage(Format('º¹È£È­ ½ÇÆÐ, Error=%d', [GetLastError])); end; procedure TDlgScTestMain.Button2Click(Sender: TObject); begin if DS_IsLoadDLL then ShowMessage('·Îµå µÇ¾ú½À´Ï´Ù.') else ShowMessage('·Îµå µÇÁö ¾Ê¾Ò½À´Ï´Ù.') end; procedure TDlgScTestMain.btnDecryptClick(Sender: TObject); var nEncStat: integer; begin mmResult.Clear; edSrcPath.Text := Trim(edSrcPath.Text); edDestPath.Text := Trim(edDestPath.Text); if not FileExists(edSrcPath.Text) then begin MessageBox(Handle, '¿øº» °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; nEncStat := DSCSIsEncryptedFile(edSrcPath.Text); case nEncStat of -1 : ShowMessage('C/S ¿¬µ¿ ¸ðµâ ·Îµå ½ÇÆÐ'); 0 : ShowMessage('ÀÏ¹Ý ÆÄÀÏ'); 1 : ; // ¾ÏȣȭµÈ ÆÄÀÏ end; if nEncStat <> 1 then begin if MessageBox(Handle, '¾Ïȣȭ µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.'+#13+#10+'°è¼Ó ÇϽðڽÀ´Ï±î?', 'Decrypt', MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; if not DirectoryExists(ExtractFilePath(edDestPath.Text)) then begin MessageBox(Handle, '´ë»ó °æ·ÎÀÇ Æú´õ°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; // sPath := ExtractFilePath(edSrcPath.Text) + '[D] ' + ExtractFileName(edSrcPath.Text);// + ExtractFileExt(Edit1.Text); // ShowMessage(sPath); if DSCSDecryptFile(edSrcPath.Text, edDestPath.Text) = 1 then begin if FileExists(edDestPath.Text) then begin ShowMessage('¼º°ø'); if chResultView.Checked then mmResult.Lines.LoadFromFile(edDestPath.Text); end else MessageBox(Handle, 'º¹È£È­ ¸®ÅϰªÀº ¼º°øÀÌÁö¸¸, º¹È£È­µÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); end else ShowMessage('½ÇÆÐ'); end; procedure TDlgScTestMain.btnForceDecryptClick(Sender: TObject); var nEncStat: integer; begin mmResult.Clear; edSrcPath.Text := Trim(edSrcPath.Text); edDestPath.Text := Trim(edDestPath.Text); if not FileExists(edSrcPath.Text) then begin MessageBox(Handle, '¿øº» °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; nEncStat := DSCSIsEncryptedFile(edSrcPath.Text); case nEncStat of -1 : ShowMessage('C/S ¿¬µ¿ ¸ðµâ ·Îµå ½ÇÆÐ'); 0 : ShowMessage('ÀÏ¹Ý ÆÄÀÏ'); 1 : ; // ¾ÏȣȭµÈ ÆÄÀÏ end; if nEncStat <> 1 then begin if MessageBox(Handle, '¾Ïȣȭ µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.'+#13+#10+'°è¼Ó ÇϽðڽÀ´Ï±î?', 'ForceDecrypt', MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; if not DirectoryExists(ExtractFilePath(edDestPath.Text)) then begin MessageBox(Handle, '´ë»ó °æ·ÎÀÇ Æú´õ°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; // sPath := ExtractFilePath(edSrcPath.Text) + '[D] ' + ExtractFileName(edSrcPath.Text);// + ExtractFileExt(Edit1.Text); // ShowMessage(sPath); if DSCSForceDecryptFile(edSrcPath.Text, edDestPath.Text) = 1 then begin ShowMessage('¼º°ø'); if chResultView.Checked then mmResult.Lines.LoadFromFile(edDestPath.Text); end else ShowMessage('½ÇÆÐ'); end; procedure TDlgScTestMain.btnGetAclClick(Sender: TObject); begin case DSCSAppliedGetAcl(cbAcl.ItemIndex+1) of -1 : ShowMessage('C/S ¿¬µ¿ ¸ðµâ ·Îµå ½ÇÆÐ'); 0 : ShowMessage('±ÇÇÑ ¾øÀ½'); 1 : ShowMessage('±ÇÇÑ ÀÖÀ½'); end; end; procedure TDlgScTestMain.btnGetGradeClick(Sender: TObject); var sGradeId: AnsiString; begin edSrcPath.Text := Trim(edSrcPath.Text); if FileExists(edSrcPath.Text) then begin SetLength(sGradeId, 512); try if DSCSGetGradeID(edSrcPath.Text, PAnsiChar(sGradeId)) = 1 then ShowMessage(sGradeId); finally SetLength(sGradeId, 0); end; end else begin MessageBox(Handle, '¿øº» °æ·Î°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.', PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; end; procedure TDlgScTestMain.btnInstallClick(Sender: TObject); begin DSCSInstall; end; procedure TDlgScTestMain.btnReleaseClick(Sender: TObject); begin DSCSRelease; end; procedure TDlgScTestMain.btnOpenClick(Sender: TObject); begin if OpenDialog.Execute(Handle) then mmResult.Lines.LoadFromFile(OpenDialog.FileName); end; end.