BSOne.SFC/Tocsg.Module/SoftCampTest/DScTestMain.pas

347 lines
9.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.