📄 freeotfefrmselectoverwritemethod.pas
字号:
unit FreeOTFEfrmSelectOverwriteMethod;
// Description:
// By Sarah Dean
// Email: sdean12@sdean12.org
// WWW: http://www.FreeOTFE.org/
//
// -----------------------------------------------------------------------------
//
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
OTFEFreeOTFE_U;
type
TfrmFreeOTFESelectOverwriteMethod = class(TForm)
pbOK: TButton;
pbCancel: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GroupBox1: TGroupBox;
rbDataEncrypted: TRadioButton;
rbDataPseudorandom: TRadioButton;
cbCypher: TComboBox;
pbCypherDetails: TButton;
procedure pbOKClick(Sender: TObject);
procedure pbCypherDetailsClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure ControlChanged(Sender: TObject);
private
cypherKernelModeDriverNames: TStringList;
cypherGUIDs: TStringList;
procedure EnableDisableControls();
public
OTFEFreeOTFEObj: TOTFEFreeOTFE;
OverwriteWithEncryptedData: boolean;
CypherDriver: string;
CypherGUID: TGUID;
end;
implementation
{$R *.DFM}
uses
ComObj, // Required for StringToGUID
SDUDialogs;
const
CRLF = #10 + #13;
procedure TfrmFreeOTFESelectOverwriteMethod.pbOKClick(Sender: TObject);
begin
OverwriteWithEncryptedData := rbDataEncrypted.Checked;
if OverwriteWithEncryptedData then
begin
CypherDriver:= cypherKernelModeDriverNames[cbCypher.ItemIndex];
CypherGUID:= StringToGUID(cypherGUIDs[cbCypher.ItemIndex]);
end;
ModalResult := mrOK;
end;
procedure TfrmFreeOTFESelectOverwriteMethod.pbCypherDetailsClick(
Sender: TObject);
begin
OTFEFreeOTFEObj.ShowCypherDetailsDlg(
cypherKernelModeDriverNames[cbCypher.ItemIndex],
StringToGUID(cypherGUIDs[cbCypher.ItemIndex])
);
end;
procedure TfrmFreeOTFESelectOverwriteMethod.FormShow(Sender: TObject);
var
tmpDisplayTitles: TStringList;
begin
tmpDisplayTitles:= TStringList.Create();
try
if (OTFEFreeOTFEObj.GetCypherList(tmpDisplayTitles, cypherKernelModeDriverNames, cypherGUIDs)) then
begin
cbCypher.Items.Clear();
cbCypher.Items.AddStrings(tmpDisplayTitles);
end
else
begin
SDUMessageDlg('Unable to obtain list of cyphers.'+CRLF+
CRLF+
'Please ensure that you have one or more FreeOTFE cypher '+CRLF+
'drivers installed and started.'+CRLF+
CRLF+
'If you have only just installed FreeOTFE, you may need to '+CRLF+
'restart your computer.',
mtError,
[mbOK],
0);
end;
finally
tmpDisplayTitles.Free();
end;
EnableDisableControls();
end;
procedure TfrmFreeOTFESelectOverwriteMethod.FormCreate(Sender: TObject);
begin
cypherKernelModeDriverNames:= TStringList.Create();
cypherGUIDs:= TStringList.Create();
end;
procedure TfrmFreeOTFESelectOverwriteMethod.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
cypherKernelModeDriverNames.Free();
cypherGUIDs.Free();
end;
procedure TfrmFreeOTFESelectOverwriteMethod.ControlChanged(
Sender: TObject);
begin
EnableDisableControls();
end;
procedure TfrmFreeOTFESelectOverwriteMethod.EnableDisableControls();
begin
cbCypher.Enabled := rbDataEncrypted.Checked;
pbCypherDetails.Enabled := (cbCypher.ItemIndex >= 0) AND cbCypher.Enabled;
// Either the pseudorandom radiobutton is checked, or a cypher has been
// selected (if the pseudorandom radiobutton *isn't* checked, it's implicit
// that the encrypted data radiobutton *is* checked)
pbOK.Enabled := (rbDataPseudorandom.Checked or (cbCypher.ItemIndex >= 0));
end;
END.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -