347 lines
9.4 KiB
Plaintext
347 lines
9.4 KiB
Plaintext
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, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
exit;
|
||
end;
|
||
|
||
if not DirectoryExists(ExtractFilePath(edScanDecPath.Text)) then
|
||
begin
|
||
MessageBox(Handle, '<27><>ȣȭ <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
exit;
|
||
end;
|
||
|
||
bEnc := DS_IsEncrypted(edScanPath.Text);
|
||
if not bEnc then
|
||
begin
|
||
ShowMessage('<27>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
|
||
if MessageBox(Handle, '<27><>ȣȭ <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.'+#13+#10+'<27><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?',
|
||
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('<27><>ȣȭ <20><><EFBFBD><EFBFBD> (Len=%d) : %s', [nDecPathLen, WideString(sDecPath)]));
|
||
if CopyFile(PChar(WideString(sDecPath)), PChar(edScanDecPath.Text), false) then
|
||
begin
|
||
ShowMessage('<27><>ȣȭ <20><><EFBFBD><EFBFBD>');
|
||
end;
|
||
end;
|
||
finally
|
||
DS_Finalize(hFile, false)
|
||
end;
|
||
end else
|
||
ShowMessage(Format('<27><>ȣȭ <20><><EFBFBD><EFBFBD>, Error=%d', [GetLastError]));
|
||
end;
|
||
|
||
procedure TDlgScTestMain.btnScanLoginCheckClick(Sender: TObject);
|
||
begin
|
||
if DS_IsLogin then
|
||
ShowMessage('<27>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD>')
|
||
else
|
||
ShowMessage('<27>αƿ<D7BE> <20><><EFBFBD><EFBFBD>');
|
||
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<6E><74> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>'); // DS Client Agent<6E><74> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
1 : ShowMessage('DS Client Agent <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD>'); // DS Client Agent <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20>αƿ<D7BE> <20><><EFBFBD><EFBFBD>
|
||
2 : ShowMessage('DS Client Agent <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD>'); // DS Client Agent <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
exit;
|
||
end;
|
||
|
||
bEnc := DS_IsEncrypted(edScanPath.Text);
|
||
if not bEnc then
|
||
begin
|
||
ShowMessage('<27>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
|
||
if MessageBox(Handle, '<27><>ȣȭ <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.'+#13+#10+'<27><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?',
|
||
'<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>', 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('<27><>ȣȭ <20><><EFBFBD><EFBFBD> (Len=%d) : %s', [nDecPathLen, WideString(sDecPath)]));
|
||
mmResult.Lines.LoadFromFile(WideString(sDecPath));
|
||
end;
|
||
finally
|
||
DS_Finalize(hFile, false)
|
||
end;
|
||
end else
|
||
ShowMessage(Format('<27><>ȣȭ <20><><EFBFBD><EFBFBD>, Error=%d', [GetLastError]));
|
||
end;
|
||
|
||
procedure TDlgScTestMain.Button2Click(Sender: TObject);
|
||
begin
|
||
if DS_IsLoadDLL then
|
||
ShowMessage('<27>ε<EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.')
|
||
else
|
||
ShowMessage('<27>ε<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>.')
|
||
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, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
exit;
|
||
end;
|
||
|
||
nEncStat := DSCSIsEncryptedFile(edSrcPath.Text);
|
||
case nEncStat of
|
||
-1 : ShowMessage('C/S <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
0 : ShowMessage('<27>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
1 : ; // <20><>ȣȭ<C8A3><C8AD> <20><><EFBFBD><EFBFBD>
|
||
end;
|
||
if nEncStat <> 1 then
|
||
begin
|
||
if MessageBox(Handle, '<27><>ȣȭ <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.'+#13+#10+'<27><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?',
|
||
'Decrypt', MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
|
||
end;
|
||
|
||
if not DirectoryExists(ExtractFilePath(edDestPath.Text)) then
|
||
begin
|
||
MessageBox(Handle, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', 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('<27><><EFBFBD><EFBFBD>');
|
||
if chResultView.Checked then
|
||
mmResult.Lines.LoadFromFile(edDestPath.Text);
|
||
end else
|
||
MessageBox(Handle, '<27><>ȣȭ <20><><EFBFBD>ϰ<EFBFBD><CFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ȣȭ<C8A3><C8AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
end else
|
||
ShowMessage('<27><><EFBFBD><EFBFBD>');
|
||
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, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', PChar(Caption), MB_ICONWARNING or MB_OK);
|
||
exit;
|
||
end;
|
||
|
||
nEncStat := DSCSIsEncryptedFile(edSrcPath.Text);
|
||
case nEncStat of
|
||
-1 : ShowMessage('C/S <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
0 : ShowMessage('<27>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
1 : ; // <20><>ȣȭ<C8A3><C8AD> <20><><EFBFBD><EFBFBD>
|
||
end;
|
||
if nEncStat <> 1 then
|
||
begin
|
||
if MessageBox(Handle, '<27><>ȣȭ <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.'+#13+#10+'<27><><EFBFBD><EFBFBD> <20>Ͻðڽ<C3B0><DABD>ϱ<EFBFBD>?',
|
||
'ForceDecrypt', MB_ICONQUESTION or MB_YESNO) = IDNO then exit;
|
||
end;
|
||
|
||
if not DirectoryExists(ExtractFilePath(edDestPath.Text)) then
|
||
begin
|
||
MessageBox(Handle, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', 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('<27><><EFBFBD><EFBFBD>');
|
||
if chResultView.Checked then
|
||
mmResult.Lines.LoadFromFile(edDestPath.Text);
|
||
end else
|
||
ShowMessage('<27><><EFBFBD><EFBFBD>');
|
||
end;
|
||
|
||
procedure TDlgScTestMain.btnGetAclClick(Sender: TObject);
|
||
begin
|
||
case DSCSAppliedGetAcl(cbAcl.ItemIndex+1) of
|
||
-1 : ShowMessage('C/S <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
0 : ShowMessage('<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
1 : ShowMessage('<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>');
|
||
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, '<27><><EFBFBD><EFBFBD> <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.', 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.
|