/trunk/Quelltext/About.dfm |
---|
0,0 → 1,145 |
object AboutForm: TAboutForm |
Left = 0 |
Top = 0 |
BorderIcons = [biSystemMenu] |
BorderStyle = bsSingle |
Caption = '#' |
ClientHeight = 232 |
ClientWidth = 361 |
Color = clWindow |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [] |
OldCreateOrder = False |
Position = poMainFormCenter |
OnCreate = form_create |
PixelsPerInch = 96 |
TextHeight = 13 |
object spe_leftshape: TShape |
Left = 0 |
Top = 0 |
Width = 105 |
Height = 233 |
Brush.Color = clBtnFace |
Pen.Style = psClear |
end |
object img_schloss: TImage |
Left = 8 |
Top = 8 |
Width = 89 |
Height = 89 |
AutoSize = True |
Transparent = True |
end |
object lbl_name: TLabel |
Left = 112 |
Top = 8 |
Width = 9 |
Height = 13 |
Caption = '#' |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [fsBold] |
ParentFont = False |
Transparent = True |
end |
object lbl_version: TLabel |
Left = 112 |
Top = 24 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_leader: TLabel |
Left = 112 |
Top = 40 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_copyright: TLabel |
Left = 112 |
Top = 64 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_url: TLabel |
Left = 112 |
Top = 80 |
Width = 7 |
Height = 13 |
Cursor = crHandPoint |
Caption = '#' |
Transparent = True |
OnClick = lbl_urlClick |
end |
object gbx_lang: TGroupBox |
Left = 112 |
Top = 104 |
Width = 241 |
Height = 89 |
Caption = '#' |
TabOrder = 0 |
object lbl_lang_value: TLabel |
Left = 64 |
Top = 24 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object lbl_translator_value: TLabel |
Left = 64 |
Top = 40 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object lbl_revision_value: TLabel |
Left = 64 |
Top = 56 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object lbl_lang_name: TLabel |
Left = 16 |
Top = 24 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object lbl_translator_name: TLabel |
Left = 16 |
Top = 40 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object lbl_revision_name: TLabel |
Left = 16 |
Top = 56 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
end |
object btn_close: TButton |
Left = 240 |
Top = 200 |
Width = 115 |
Height = 25 |
Cancel = True |
Caption = '#' |
Default = True |
TabOrder = 1 |
OnClick = btn_closeClick |
end |
end |
/trunk/Quelltext/About.pas |
---|
0,0 → 1,159 |
unit About; |
interface |
uses |
Windows, Messages, SysUtils, Forms, StdCtrls, ExtCtrls, Inifiles, shellapi, |
DCConst, Controls, Classes; |
type |
TAboutForm = class(TForm) |
lbl_name: TLabel; |
img_schloss: TImage; |
lbl_version: TLabel; |
lbl_leader: TLabel; |
lbl_copyright: TLabel; |
spe_leftshape: TShape; |
gbx_lang: TGroupBox; |
lbl_lang_value: TLabel; |
lbl_translator_value: TLabel; |
lbl_revision_value: TLabel; |
btn_close: TButton; |
lbl_url: TLabel; |
lbl_lang_name: TLabel; |
lbl_translator_name: TLabel; |
lbl_revision_name: TLabel; |
procedure form_create(Sender: TObject); |
procedure btn_closeClick(Sender: TObject); |
procedure lbl_urlClick(Sender: TObject); |
private |
LangArray, LangArraySig: array of TLanguageEntry; |
function GetLangEntry(name: string): string; |
function GetLangSig(name: string): string; |
end; |
var |
AboutForm: TAboutForm; |
implementation |
{$R *.dfm} |
function TAboutForm.GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
function TAboutForm.GetLangSig(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArraySig) do |
begin |
if LangArraySig[i].name = name then |
begin |
result := LangArraySig[i].text; |
break; |
end; |
end; |
end; |
procedure TAboutForm.lbl_urlClick(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/', '', '', sw_normal); |
end; |
procedure TAboutForm.btn_closeClick(Sender: TObject); |
begin |
close; |
end; |
procedure TAboutForm.form_create(Sender: TObject); |
var |
ini: TIniFile; |
str: TStringList; |
i: integer; |
Y, M, D: Word; |
begin |
// Sprachdatei & Signatur auslesen |
ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(Name, str.strings[i], '?'); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
ini.ReadSection('Signature', str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArraySig, length(LangArraySig)+1); |
LangArraySig[length(LangArraySig)-1].name := str.strings[i]; |
LangArraySig[length(LangArraySig)-1].text := ini.ReadString('Signature', str.strings[i], '?'); |
LangArraySig[length(LangArraySig)-1].text := StringReplace(LangArraySig[length(LangArraySig)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
// Bilder |
icon.LoadFromResourceID(hInstance, 104); |
img_schloss.Picture.Bitmap.LoadFromResourceName(hInstance, 'SCHLOSS'); |
// Texte |
Caption := GetLangEntry('about'); |
lbl_translator_value.Caption := GetLangSig('Translator'); |
lbl_lang_value.Caption := GetLangSig('Language'); |
lbl_revision_value.Caption := GetLangSig('Revision'); |
gbx_lang.Caption := GetLangEntry('installedlang'); |
lbl_leader.Caption := Format(GetLangEntry('leader'), ['Daniel Marschall']); |
lbl_version.Caption := Format(GetLangEntry('version'), [DC4Ver]); |
lbl_name.Caption := '(De)Coder'; |
lbl_url.Caption := 'www.viathinksoft.de'; |
DecodeDate(Now(), Y, M, D); |
lbl_copyright.Caption := Format(GetLangEntry('copyright'), [2001, Y, 'ViaThinkSoft']); |
lbl_lang_name.Caption := GetLangEntry('lang'); |
lbl_translator_name.Caption := GetLangEntry('translator'); |
lbl_revision_name.Caption := GetLangEntry('revision'); |
btn_close.Caption := GetLangEntry('ok'); |
// Horizontal |
spe_leftshape.Width := img_schloss.Width + 16; |
lbl_name.Left := spe_leftshape.Left + spe_leftshape.Width + 8; |
lbl_url.left := lbl_name.left; |
lbl_version.left := lbl_url.left; |
lbl_leader.left := lbl_version.left; |
lbl_copyright.left := lbl_leader.left; |
gbx_lang.Left := lbl_copyright.left; |
gbx_lang.Width := max_4(lbl_name.width, lbl_version.width, lbl_leader.width, lbl_copyright.width); |
btn_close.Left := gbx_lang.left + gbx_lang.width - btn_close.width; |
lbl_lang_value.Left := lbl_lang_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
lbl_translator_value.left := lbl_translator_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
lbl_revision_value.left := lbl_revision_name.left + max_3(lbl_lang_name.Width, lbl_translator_name.Width, lbl_revision_name.Width) + 8; |
// Vertikal |
spe_leftshape.Height := btn_close.Top + btn_close.Height + 8; |
clientheight := spe_leftshape.top + spe_leftshape.Height; |
clientwidth := btn_close.Left + btn_close.Width + 8; |
end; |
end. |
/trunk/Quelltext/Activator.RES |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/Activator.bdsproj |
---|
0,0 → 1,175 |
<?xml version="1.0" encoding="utf-8"?> |
<BorlandProject> |
<PersonalityInfo> |
<Option> |
<Option Name="Personality">Delphi.Personality</Option> |
<Option Name="ProjectType"></Option> |
<Option Name="Version">1.0</Option> |
<Option Name="GUID">{14CD9141-D204-4E28-BFBF-98C371C80F2C}</Option> |
</Option> |
</PersonalityInfo> |
<Delphi.Personality> |
<Source> |
<Source Name="MainSource">Activator.dpr</Source> |
</Source> |
<FileVersion> |
<FileVersion Name="Version">7.0</FileVersion> |
</FileVersion> |
<Compiler> |
<Compiler Name="A">8</Compiler> |
<Compiler Name="B">0</Compiler> |
<Compiler Name="C">1</Compiler> |
<Compiler Name="D">1</Compiler> |
<Compiler Name="E">0</Compiler> |
<Compiler Name="F">0</Compiler> |
<Compiler Name="G">1</Compiler> |
<Compiler Name="H">1</Compiler> |
<Compiler Name="I">1</Compiler> |
<Compiler Name="J">0</Compiler> |
<Compiler Name="K">0</Compiler> |
<Compiler Name="L">1</Compiler> |
<Compiler Name="M">0</Compiler> |
<Compiler Name="N">1</Compiler> |
<Compiler Name="O">1</Compiler> |
<Compiler Name="P">1</Compiler> |
<Compiler Name="Q">0</Compiler> |
<Compiler Name="R">0</Compiler> |
<Compiler Name="S">0</Compiler> |
<Compiler Name="T">0</Compiler> |
<Compiler Name="U">0</Compiler> |
<Compiler Name="V">1</Compiler> |
<Compiler Name="W">0</Compiler> |
<Compiler Name="X">1</Compiler> |
<Compiler Name="Y">1</Compiler> |
<Compiler Name="Z">1</Compiler> |
<Compiler Name="ShowHints">True</Compiler> |
<Compiler Name="ShowWarnings">True</Compiler> |
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler> |
<Compiler Name="NamespacePrefix"></Compiler> |
<Compiler Name="GenerateDocumentation">False</Compiler> |
<Compiler Name="DefaultNamespace"></Compiler> |
<Compiler Name="SymbolDeprecated">True</Compiler> |
<Compiler Name="SymbolLibrary">True</Compiler> |
<Compiler Name="SymbolPlatform">True</Compiler> |
<Compiler Name="SymbolExperimental">True</Compiler> |
<Compiler Name="UnitLibrary">True</Compiler> |
<Compiler Name="UnitPlatform">True</Compiler> |
<Compiler Name="UnitDeprecated">True</Compiler> |
<Compiler Name="UnitExperimental">True</Compiler> |
<Compiler Name="HResultCompat">True</Compiler> |
<Compiler Name="HidingMember">True</Compiler> |
<Compiler Name="HiddenVirtual">True</Compiler> |
<Compiler Name="Garbage">True</Compiler> |
<Compiler Name="BoundsError">True</Compiler> |
<Compiler Name="ZeroNilCompat">True</Compiler> |
<Compiler Name="StringConstTruncated">True</Compiler> |
<Compiler Name="ForLoopVarVarPar">True</Compiler> |
<Compiler Name="TypedConstVarPar">True</Compiler> |
<Compiler Name="AsgToTypedConst">True</Compiler> |
<Compiler Name="CaseLabelRange">True</Compiler> |
<Compiler Name="ForVariable">True</Compiler> |
<Compiler Name="ConstructingAbstract">True</Compiler> |
<Compiler Name="ComparisonFalse">True</Compiler> |
<Compiler Name="ComparisonTrue">True</Compiler> |
<Compiler Name="ComparingSignedUnsigned">True</Compiler> |
<Compiler Name="CombiningSignedUnsigned">True</Compiler> |
<Compiler Name="UnsupportedConstruct">True</Compiler> |
<Compiler Name="FileOpen">True</Compiler> |
<Compiler Name="FileOpenUnitSrc">True</Compiler> |
<Compiler Name="BadGlobalSymbol">True</Compiler> |
<Compiler Name="DuplicateConstructorDestructor">True</Compiler> |
<Compiler Name="InvalidDirective">True</Compiler> |
<Compiler Name="PackageNoLink">True</Compiler> |
<Compiler Name="PackageThreadVar">True</Compiler> |
<Compiler Name="ImplicitImport">True</Compiler> |
<Compiler Name="HPPEMITIgnored">True</Compiler> |
<Compiler Name="NoRetVal">True</Compiler> |
<Compiler Name="UseBeforeDef">True</Compiler> |
<Compiler Name="ForLoopVarUndef">True</Compiler> |
<Compiler Name="UnitNameMismatch">True</Compiler> |
<Compiler Name="NoCFGFileFound">True</Compiler> |
<Compiler Name="ImplicitVariants">True</Compiler> |
<Compiler Name="UnicodeToLocale">True</Compiler> |
<Compiler Name="LocaleToUnicode">True</Compiler> |
<Compiler Name="ImagebaseMultiple">True</Compiler> |
<Compiler Name="SuspiciousTypecast">True</Compiler> |
<Compiler Name="PrivatePropAccessor">True</Compiler> |
<Compiler Name="UnsafeType">False</Compiler> |
<Compiler Name="UnsafeCode">False</Compiler> |
<Compiler Name="UnsafeCast">False</Compiler> |
<Compiler Name="OptionTruncated">True</Compiler> |
<Compiler Name="WideCharReduced">True</Compiler> |
<Compiler Name="DuplicatesIgnored">True</Compiler> |
<Compiler Name="UnitInitSeq">True</Compiler> |
<Compiler Name="LocalPInvoke">True</Compiler> |
<Compiler Name="MessageDirective">True</Compiler> |
<Compiler Name="CodePage"></Compiler> |
</Compiler> |
<Linker> |
<Linker Name="MapFile">0</Linker> |
<Linker Name="OutputObjs">0</Linker> |
<Linker Name="GenerateHpps">False</Linker> |
<Linker Name="ConsoleApp">1</Linker> |
<Linker Name="DebugInfo">False</Linker> |
<Linker Name="RemoteSymbols">False</Linker> |
<Linker Name="GenerateDRC">False</Linker> |
<Linker Name="MinStackSize">16384</Linker> |
<Linker Name="MaxStackSize">1048576</Linker> |
<Linker Name="ImageBase">4194304</Linker> |
<Linker Name="ExeDescription"></Linker> |
</Linker> |
<Directories> |
<Directories Name="OutputDir"></Directories> |
<Directories Name="UnitOutputDir"></Directories> |
<Directories Name="PackageDLLOutputDir"></Directories> |
<Directories Name="PackageDCPOutputDir"></Directories> |
<Directories Name="SearchPath"></Directories> |
<Directories Name="Packages"></Directories> |
<Directories Name="Conditionals"></Directories> |
<Directories Name="DebugSourceDirs"></Directories> |
<Directories Name="UsePackages">False</Directories> |
</Directories> |
<Parameters> |
<Parameters Name="RunParams"></Parameters> |
<Parameters Name="HostApplication"></Parameters> |
<Parameters Name="Launcher"></Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD"></Parameters> |
<Parameters Name="Debug Symbols Search Path"></Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<Language> |
<Language Name="ActiveLang"></Language> |
<Language Name="ProjectLang">$00000000</Language> |
<Language Name="RootDir"></Language> |
</Language> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
</Delphi.Personality> |
</BorlandProject> |
/trunk/Quelltext/Activator.cfg |
---|
0,0 → 1,38 |
-$A8 |
-$B- |
-$C+ |
-$D+ |
-$E- |
-$F- |
-$G+ |
-$H+ |
-$I+ |
-$J- |
-$K- |
-$L+ |
-$M- |
-$N+ |
-$O+ |
-$P+ |
-$Q- |
-$R- |
-$S- |
-$T- |
-$U- |
-$V+ |
-$W- |
-$X+ |
-$YD |
-$Z1 |
-cg |
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; |
-H+ |
-W+ |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Quelltext/Activator.dpr |
---|
0,0 → 1,188 |
// Activator.exe wird für Windows Vista benötigt und aktiviert Konfigurationseinstellungen |
// Diese Anwendung besitzt durch den Kompatibilitätsmodus volle Adminrechte |
program Activator; |
uses |
SysUtils, |
Windows, |
IniFiles, |
Classes, |
Registry; |
{$R Activator.res} |
type |
TLanguageEntry = record |
name: string; |
text: string; |
end; |
var |
LangArray: array of TLanguageEntry; |
ini: TIniFile; |
str: TStringList; |
i: integer; |
const |
Name: String = 'Activator'; |
DC4Ver: String = '4.1'; |
function GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
function DLLRegister(dll: string; doregister: boolean): boolean; |
type |
DllReg = function: HResult; stdcall; |
var |
hDll: THandle; |
dr: DllReg; |
begin |
result := false; |
hDll := LoadLibrary(PChar(dll)); |
if hDll <> 0 then |
begin |
if doregister then |
@dr := GetProcAddress(hDll, 'DllRegisterServer') |
else |
@dr := GetProcAddress(hDll, 'DllUnregisterServer'); |
if assigned(dr) then |
begin |
dr; |
result := true; |
end; |
end; |
end; |
function TypeRegistry(App, IconIndex, Extension, InternalName, Name: string): boolean; |
var |
reg: TRegistry; |
c1, c2, c3, c4, l1, l2, l3, l4: boolean; |
begin |
Reg := TRegistry.Create; |
try |
Reg.RootKey := HKEY_CLASSES_ROOT; |
l1 := false; |
if Reg.OpenKey('\'+Extension, true) then |
begin |
Reg.WriteString('', InternalName); |
l1 := reg.ReadString('') = InternalName; |
Reg.CloseKey(); |
end; |
c1 := reg.KeyExists('\'+Extension); |
l2 := false; |
if Reg.OpenKey('\'+InternalName, true) then |
begin |
Reg.WriteString('', Name); |
l2 := reg.ReadString('') = Name; |
Reg.CloseKey(); |
end; |
c2 := reg.KeyExists('\'+InternalName); |
l3 := false; |
if Reg.OpenKey('\'+InternalName+'\DefaultIcon', true) then |
begin |
Reg.WriteString('', App+','+IconIndex); |
l3 := reg.ReadString('') = App+','+IconIndex; |
Reg.CloseKey(); |
end; |
c3 := reg.KeyExists('\'+InternalName+'\DefaultIcon'); |
l4 := false; |
if Reg.OpenKey('\'+InternalName+'\shell\open\command', true) then |
begin |
Reg.WriteString('', '"'+App+'" "%1"'); |
l4 := reg.ReadString('') = '"'+App+'" "%1"'; |
Reg.CloseKey(); |
end; |
c4 := reg.KeyExists('\'+InternalName+'\shell\open\command'); |
finally |
Reg.Free; |
end; |
result := c1 and c2 and c3 and c4 and l1 and l2 and l3 and l4; |
end; |
function TypeUnregistry(Extension: string): boolean; |
var |
reg: TRegistry; |
temp: string; |
c1, c2: boolean; |
begin |
c1 := false; |
c2 := false; |
Reg := TRegistry.Create; |
try |
Reg.RootKey := HKEY_CLASSES_ROOT; |
if Reg.OpenKey('\'+Extension, false) then |
begin |
temp := Reg.ReadString(''); |
Reg.CloseKey(); |
if reg.KeyExists('\'+temp) then Reg.DeleteKey('\'+temp); |
c1 := not reg.KeyExists('\'+temp); |
if reg.KeyExists('\'+Extension) then Reg.DeleteKey('\'+Extension); |
c2 := not reg.KeyExists('\'+Extension); |
end; |
finally |
Reg.Free; |
end; |
result := c1 and c2; |
end; |
begin |
// Sprachdatei auslesen |
ini := TIniFile.Create(ExtractFilePath(paramstr(0))+'Language.ini'); |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(name, str.strings[i], ''); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
// Ausführung |
if paramstr(1) = '/dllreg' then |
begin |
if not DLLRegister(paramstr(2), true) then |
MessageBox(0, pchar(GetLangEntry('failed')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR); |
end; |
if paramstr(1) = '/dllunreg' then |
begin |
if not DLLRegister(paramstr(2), false) then |
MessageBox(0, pchar(GetLangEntry('failed')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR); |
end; |
if paramstr(1) = '/typereg' then |
begin |
if not TypeRegistry(paramstr(3), paramstr(4), paramstr(2), paramstr(5), paramstr(6)) then |
MessageBox(0, pchar(GetLangEntry('failed')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR); |
end; |
if paramstr(1) = '/typeunreg' then |
begin |
if not TypeUnregistry(paramstr(2)) then |
MessageBox(0, pchar(GetLangEntry('failed')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR); |
end; |
end. |
/trunk/Quelltext/Activator.dproj |
---|
0,0 → 1,69 |
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<PropertyGroup> |
<ProjectGuid>{14cd9141-d204-4e28-bfbf-98c371c80f2c}</ProjectGuid> |
<MainSource>Activator.dpr</MainSource> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler> |
<DCC_DependencyCheckOutputName>Activator.exe</DCC_DependencyCheckOutputName> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_DebugInformation>False</DCC_DebugInformation> |
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> |
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> |
<DCC_Define>RELEASE</DCC_Define> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_Define>DEBUG</DCC_Define> |
</PropertyGroup> |
<ProjectExtensions> |
<Borland.Personality>Delphi.Personality</Borland.Personality> |
<Borland.ProjectType /> |
<BorlandProject> |
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Source> |
<Source Name="MainSource">Activator.dpr</Source> |
</Source> |
</Delphi.Personality> </BorlandProject></BorlandProject> |
</ProjectExtensions> |
<ItemGroup /> |
<ItemGroup> |
<DelphiCompile Include="Activator.dpr"> |
<MainSource>MainSource</MainSource> |
</DelphiCompile> |
</ItemGroup> |
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" /> |
</Project> |
/trunk/Quelltext/Activator.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/Activator.rc |
---|
0,0 → 1,30 |
MAINICON ICON "Ressourcen\Activator\Icon.ico" |
1 VERSIONINFO |
FILEVERSION 4,1,0,0 |
PRODUCTVERSION 4,1,0,0 |
FILEOS 0x4 |
FILETYPE 0x1 |
{ |
BLOCK "StringFileInfo" |
{ |
BLOCK "00000000" |
{ |
VALUE "CompanyName", "ViaThinkSoft\0" |
VALUE "FileDescription", "(De)Coder 4.1 Activator\0" |
VALUE "FileVersion", "4.1.0.0\0" |
VALUE "InternalName", "DeCoder4\0" |
VALUE "LegalCopyright", "© Copyright 2001 - 2007 ViaThinkSoft\0" |
VALUE "OriginalFilename", "Activator.exe\0" |
VALUE "ProductName", "(De)Coder\0" |
VALUE "ProductVersion", "4.1.0.0\0" |
VALUE "Projektleiter", "Daniel Marschall - www.daniel-marschall.de\0" |
VALUE "Webseite", "www.viathinksoft.de\0" |
} |
} |
BLOCK "VarFileInfo" |
{ |
VALUE "Translation", 0x0000 0x0000 |
} |
} |
/trunk/Quelltext/Coder.RES |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/Coder.bdsproj |
---|
0,0 → 1,184 |
<?xml version="1.0" encoding="utf-8"?> |
<BorlandProject> |
<PersonalityInfo> |
<Option> |
<Option Name="Personality">Delphi.Personality</Option> |
<Option Name="ProjectType"></Option> |
<Option Name="Version">1.0</Option> |
<Option Name="GUID">{330DE6B7-A3D3-4BA5-8A58-A9C03F32CC41}</Option> |
</Option> |
</PersonalityInfo> |
<Delphi.Personality> |
<Source> |
<Source Name="MainSource">Coder.dpr</Source> |
</Source> |
<FileVersion> |
<FileVersion Name="Version">7.0</FileVersion> |
</FileVersion> |
<Compiler> |
<Compiler Name="A">8</Compiler> |
<Compiler Name="B">0</Compiler> |
<Compiler Name="C">1</Compiler> |
<Compiler Name="D">1</Compiler> |
<Compiler Name="E">0</Compiler> |
<Compiler Name="F">0</Compiler> |
<Compiler Name="G">1</Compiler> |
<Compiler Name="H">1</Compiler> |
<Compiler Name="I">1</Compiler> |
<Compiler Name="J">0</Compiler> |
<Compiler Name="K">0</Compiler> |
<Compiler Name="L">1</Compiler> |
<Compiler Name="M">0</Compiler> |
<Compiler Name="N">1</Compiler> |
<Compiler Name="O">1</Compiler> |
<Compiler Name="P">1</Compiler> |
<Compiler Name="Q">0</Compiler> |
<Compiler Name="R">0</Compiler> |
<Compiler Name="S">0</Compiler> |
<Compiler Name="T">0</Compiler> |
<Compiler Name="U">0</Compiler> |
<Compiler Name="V">1</Compiler> |
<Compiler Name="W">0</Compiler> |
<Compiler Name="X">1</Compiler> |
<Compiler Name="Y">1</Compiler> |
<Compiler Name="Z">1</Compiler> |
<Compiler Name="ShowHints">True</Compiler> |
<Compiler Name="ShowWarnings">True</Compiler> |
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler> |
<Compiler Name="NamespacePrefix"></Compiler> |
<Compiler Name="GenerateDocumentation">False</Compiler> |
<Compiler Name="DefaultNamespace"></Compiler> |
<Compiler Name="SymbolDeprecated">True</Compiler> |
<Compiler Name="SymbolLibrary">True</Compiler> |
<Compiler Name="SymbolPlatform">False</Compiler> |
<Compiler Name="SymbolExperimental">True</Compiler> |
<Compiler Name="UnitLibrary">True</Compiler> |
<Compiler Name="UnitPlatform">True</Compiler> |
<Compiler Name="UnitDeprecated">True</Compiler> |
<Compiler Name="UnitExperimental">True</Compiler> |
<Compiler Name="HResultCompat">True</Compiler> |
<Compiler Name="HidingMember">True</Compiler> |
<Compiler Name="HiddenVirtual">True</Compiler> |
<Compiler Name="Garbage">True</Compiler> |
<Compiler Name="BoundsError">False</Compiler> |
<Compiler Name="ZeroNilCompat">True</Compiler> |
<Compiler Name="StringConstTruncated">True</Compiler> |
<Compiler Name="ForLoopVarVarPar">True</Compiler> |
<Compiler Name="TypedConstVarPar">True</Compiler> |
<Compiler Name="AsgToTypedConst">True</Compiler> |
<Compiler Name="CaseLabelRange">True</Compiler> |
<Compiler Name="ForVariable">True</Compiler> |
<Compiler Name="ConstructingAbstract">True</Compiler> |
<Compiler Name="ComparisonFalse">True</Compiler> |
<Compiler Name="ComparisonTrue">True</Compiler> |
<Compiler Name="ComparingSignedUnsigned">True</Compiler> |
<Compiler Name="CombiningSignedUnsigned">True</Compiler> |
<Compiler Name="UnsupportedConstruct">True</Compiler> |
<Compiler Name="FileOpen">True</Compiler> |
<Compiler Name="FileOpenUnitSrc">True</Compiler> |
<Compiler Name="BadGlobalSymbol">True</Compiler> |
<Compiler Name="DuplicateConstructorDestructor">True</Compiler> |
<Compiler Name="InvalidDirective">True</Compiler> |
<Compiler Name="PackageNoLink">True</Compiler> |
<Compiler Name="PackageThreadVar">True</Compiler> |
<Compiler Name="ImplicitImport">True</Compiler> |
<Compiler Name="HPPEMITIgnored">True</Compiler> |
<Compiler Name="NoRetVal">True</Compiler> |
<Compiler Name="UseBeforeDef">True</Compiler> |
<Compiler Name="ForLoopVarUndef">True</Compiler> |
<Compiler Name="UnitNameMismatch">True</Compiler> |
<Compiler Name="NoCFGFileFound">True</Compiler> |
<Compiler Name="MessageDirective">True</Compiler> |
<Compiler Name="ImplicitVariants">True</Compiler> |
<Compiler Name="UnicodeToLocale">True</Compiler> |
<Compiler Name="LocaleToUnicode">True</Compiler> |
<Compiler Name="ImagebaseMultiple">True</Compiler> |
<Compiler Name="SuspiciousTypecast">True</Compiler> |
<Compiler Name="PrivatePropAccessor">True</Compiler> |
<Compiler Name="UnsafeType">False</Compiler> |
<Compiler Name="UnsafeCode">False</Compiler> |
<Compiler Name="UnsafeCast">False</Compiler> |
<Compiler Name="OptionTruncated">True</Compiler> |
<Compiler Name="WideCharReduced">True</Compiler> |
<Compiler Name="DuplicatesIgnored">True</Compiler> |
<Compiler Name="UnitInitSeq">True</Compiler> |
<Compiler Name="LocalPInvoke">True</Compiler> |
<Compiler Name="CodePage"></Compiler> |
</Compiler> |
<Linker> |
<Linker Name="MapFile">0</Linker> |
<Linker Name="OutputObjs">0</Linker> |
<Linker Name="ConsoleApp">1</Linker> |
<Linker Name="DebugInfo">False</Linker> |
<Linker Name="RemoteSymbols">False</Linker> |
<Linker Name="GenerateDRC">False</Linker> |
<Linker Name="MinStackSize">16384</Linker> |
<Linker Name="MaxStackSize">1048576</Linker> |
<Linker Name="ImageBase">4194304</Linker> |
<Linker Name="ExeDescription">(De)Coder 4.1</Linker> |
<Linker Name="GenerateHpps">False</Linker> |
</Linker> |
<Directories> |
<Directories Name="OutputDir"></Directories> |
<Directories Name="UnitOutputDir"></Directories> |
<Directories Name="PackageDLLOutputDir"></Directories> |
<Directories Name="PackageDCPOutputDir"></Directories> |
<Directories Name="SearchPath">..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</Directories> |
<Directories Name="Packages">vcl;rtl;vclx;VclSmp;vclshlctrls;elpackD6;MSI_D6_Rtl;DEC4D6;KZ</Directories> |
<Directories Name="Conditionals"></Directories> |
<Directories Name="DebugSourceDirs"></Directories> |
<Directories Name="UsePackages">False</Directories> |
</Directories> |
<Parameters> |
<Parameters Name="RunParams"></Parameters> |
<Parameters Name="HostApplication"></Parameters> |
<Parameters Name="Launcher"></Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD">C:\Dokumente und Einstellungen\Daniel Marschall.NEW\Desktop\(De)Coder 4.1</Parameters> |
<Parameters Name="Debug Symbols Search Path"></Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">4</VersionInfo> |
<VersionInfo Name="MinorVer">1</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName">ViaThinkSoft</VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription">(De)Coder 4.1</VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">4.1.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName">DeCoder41</VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright">© Copyright 2001 - 2007 ViaThinkSoft</VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks">Keine</VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename">Coder.exe</VersionInfoKeys> |
<VersionInfoKeys Name="ProductName">(De)Coder</VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">4.1.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Projektleiter">Daniel Marschall - www.daniel-marschall.de</VersionInfoKeys> |
<VersionInfoKeys Name="Webseite">www.viathinksoft.de</VersionInfoKeys> |
</VersionInfoKeys> |
<Language> |
<Language Name="ActiveLang"></Language> |
<Language Name="ProjectLang">$00000000</Language> |
<Language Name="RootDir"></Language> |
</Language> |
<Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIntraweb_80_100.bpl">Intraweb 8.0 Design Package for Borland Development Studio 2006</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclsmp100.bpl">Borland Sample Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyProtocols100.bpl">Indy 10 Protocols Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dcltee100.bpl">TeeChart-Komponenten</Excluded_Packages> |
</Excluded_Packages> |
</Delphi.Personality> |
</BorlandProject> |
/trunk/Quelltext/Coder.cfg |
---|
0,0 → 1,44 |
-$A8 |
-$B- |
-$C+ |
-$D+ |
-$E- |
-$F- |
-$G+ |
-$H+ |
-$I+ |
-$J- |
-$K- |
-$L+ |
-$M- |
-$N+ |
-$O+ |
-$P+ |
-$Q- |
-$R- |
-$S- |
-$T- |
-$U- |
-$V+ |
-$W- |
-$X+ |
-$YD |
-$Z1 |
-cg |
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; |
-H+ |
-W+ |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-U"..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES" |
-O"..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES" |
-I"..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES" |
-R"..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES" |
-w-SYMBOL_PLATFORM |
-w-BOUNDS_ERROR |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Quelltext/Coder.dpr |
---|
0,0 → 1,25 |
program Coder; |
uses |
Forms, |
Warten in 'Warten.pas' {WartenForm}, |
Main in 'Main.pas' {MainForm}, |
Config in 'Config.pas' {ConfigForm}, |
About in 'About.pas' {AboutForm}, |
Elemente in 'Elemente.pas' {ElementeForm}; |
{$R Coder.res} |
begin |
Application.Initialize; |
Application.Title := '(De)Coder 4.1'; |
Application.ShowMainForm := false; // wichtig, damit fenster bei befehlszeile nicht aufflackert |
Application.CreateForm(TMainForm, MainForm); |
Application.CreateForm(TWartenForm, WartenForm); |
Application.CreateForm(TConfigForm, ConfigForm); |
Application.CreateForm(TAboutForm, AboutForm); |
Application.CreateForm(TElementeForm, ElementeForm); |
MainForm.Start; |
Application.Run; |
//halt(mainform.errorlevel); |
end. |
/trunk/Quelltext/Coder.dproj |
---|
0,0 → 1,120 |
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<PropertyGroup> |
<ProjectGuid>{330de6b7-a3d3-4ba5-8a58-a9c03f32cc41}</ProjectGuid> |
<MainSource>Coder.dpr</MainSource> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler> |
<DCC_DependencyCheckOutputName>Coder.exe</DCC_DependencyCheckOutputName> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_DebugInformation>False</DCC_DebugInformation> |
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> |
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> |
<DCC_UnitSearchPath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_UnitSearchPath> |
<DCC_ResourcePath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_ResourcePath> |
<DCC_ObjPath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_ObjPath> |
<DCC_IncludePath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_IncludePath> |
<DCC_Define>RELEASE</DCC_Define> |
<DCC_SYMBOL_PLATFORM>False</DCC_SYMBOL_PLATFORM> |
<DCC_BOUNDS_ERROR>False</DCC_BOUNDS_ERROR> |
<DCC_Description>(De)Coder 4.1</DCC_Description> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_UnitSearchPath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_UnitSearchPath> |
<DCC_ResourcePath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_ResourcePath> |
<DCC_ObjPath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_ObjPath> |
<DCC_IncludePath>..\VCL_KAZIP;..\VCL_DRAGDROP;..\VCL_DEC;..\INCLUDES</DCC_IncludePath> |
<DCC_Define>DEBUG</DCC_Define> |
<DCC_SYMBOL_PLATFORM>False</DCC_SYMBOL_PLATFORM> |
<DCC_BOUNDS_ERROR>False</DCC_BOUNDS_ERROR> |
<DCC_Description>(De)Coder 4.1</DCC_Description> |
</PropertyGroup> |
<ProjectExtensions> |
<Borland.Personality>Delphi.Personality</Borland.Personality> |
<Borland.ProjectType /> |
<BorlandProject> |
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD">C:\Dokumente und Einstellungen\Daniel Marschall.NEW\Desktop\(De)Coder 4.1</Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">4</VersionInfo> |
<VersionInfo Name="MinorVer">1</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName">ViaThinkSoft</VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription">(De)Coder 4.1</VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">4.1.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName">DeCoder41</VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright">© Copyright 2001 - 2007 ViaThinkSoft</VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks">Keine</VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename">Coder.exe</VersionInfoKeys> |
<VersionInfoKeys Name="ProductName">(De)Coder</VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">4.1.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Projektleiter">Daniel Marschall - www.daniel-marschall.de</VersionInfoKeys> |
<VersionInfoKeys Name="Webseite">www.viathinksoft.de</VersionInfoKeys> |
</VersionInfoKeys> |
<Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIntraweb_80_100.bpl">Intraweb 8.0 Design Package for Borland Development Studio 2006</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclsmp100.bpl">Borland Sample Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyProtocols100.bpl">Indy 10 Protocols Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dcltee100.bpl">TeeChart-Komponenten</Excluded_Packages> |
</Excluded_Packages> |
<Source> |
<Source Name="MainSource">Coder.dpr</Source> |
</Source> |
</Delphi.Personality> </BorlandProject></BorlandProject> |
</ProjectExtensions> |
<ItemGroup /> |
<ItemGroup> |
<DelphiCompile Include="Coder.dpr"> |
<MainSource>MainSource</MainSource> |
</DelphiCompile> |
<DCCReference Include="About.pas"> |
<Form>AboutForm</Form> |
</DCCReference> |
<DCCReference Include="Config.pas"> |
<Form>ConfigForm</Form> |
</DCCReference> |
<DCCReference Include="Elemente.pas"> |
<Form>ElementeForm</Form> |
</DCCReference> |
<DCCReference Include="Main.pas"> |
<Form>MainForm</Form> |
</DCCReference> |
<DCCReference Include="Warten.pas"> |
<Form>WartenForm</Form> |
</DCCReference> |
</ItemGroup> |
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" /> |
</Project> |
/trunk/Quelltext/Coder.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/Coder.rc |
---|
0,0 → 1,50 |
MAINICON ICON "Ressourcen\Coder\Icon_1.ico" |
100 ICON "Ressourcen\Coder\Icon_2.ico" |
101 ICON "Ressourcen\Coder\Icon_3.ico" |
102 ICON "Ressourcen\Coder\Icon_4.ico" |
103 ICON "Ressourcen\Coder\Icon_5.ico" |
104 ICON "Ressourcen\Coder\Icon_6.ico" |
INFORMATION BITMAP "Ressourcen\Coder\Information.bmp" |
WARNING BITMAP "Ressourcen\Coder\Warning.bmp" |
ERROR BITMAP "Ressourcen\Coder\Error.bmp" |
SCHLOSS BITMAP "Ressourcen\Coder\Schloss.bmp" |
NOOPEN BITMAP "Ressourcen\Coder\Noopen.bmp" |
1 VERSIONINFO |
FILEVERSION 4,1,0,0 |
PRODUCTVERSION 4,1,0,0 |
FILEOS 0x4 |
FILETYPE 0x1 |
{ |
BLOCK "StringFileInfo" |
{ |
BLOCK "00000000" |
{ |
VALUE "CompanyName", "ViaThinkSoft\0" |
VALUE "FileDescription", "(De)Coder 4.1\0" |
VALUE "FileVersion", "4.1.0.0\0" |
VALUE "InternalName", "DeCoder4\0" |
VALUE "LegalCopyright", "© Copyright 2001 - 2007 ViaThinkSoft\0" |
VALUE "OriginalFilename", "Coder.exe\0" |
VALUE "ProductName", "(De)Coder\0" |
VALUE "ProductVersion", "4.1.0.0\0" |
VALUE "Projektleiter", "Daniel Marschall - www.daniel-marschall.de\0" |
VALUE "Webseite", "www.viathinksoft.de\0" |
} |
} |
BLOCK "VarFileInfo" |
{ |
VALUE "Translation", 0x0000 0x0000 |
} |
} |
/trunk/Quelltext/Config.dfm |
---|
0,0 → 1,146 |
object ConfigForm: TConfigForm |
Left = 247 |
Top = 168 |
BorderIcons = [biSystemMenu] |
BorderStyle = bsSingle |
Caption = '#' |
ClientHeight = 321 |
ClientWidth = 473 |
Color = clBtnFace |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [] |
OldCreateOrder = False |
Position = poMainFormCenter |
OnCreate = form_create |
OnHide = form_hide |
OnShow = form_show |
PixelsPerInch = 96 |
TextHeight = 13 |
object btn_close: TButton |
Left = 160 |
Top = 288 |
Width = 145 |
Height = 25 |
Cancel = True |
Caption = '#' |
Default = True |
TabOrder = 0 |
OnClick = btn_close_click |
end |
object grp_system: TGroupBox |
Left = 8 |
Top = 8 |
Width = 457 |
Height = 169 |
TabOrder = 1 |
object lbl_info2: TLabel |
Left = 40 |
Top = 128 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_info1: TLabel |
Left = 16 |
Top = 24 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object img_information: TImage |
Left = 16 |
Top = 128 |
Width = 16 |
Height = 16 |
Transparent = True |
end |
object sys_checkbox1: TCheckBox |
Left = 16 |
Top = 48 |
Width = 425 |
Height = 17 |
Caption = '#' |
TabOrder = 0 |
OnClick = sys_checkbox1_click |
end |
object sys_checkbox2: TCheckBox |
Left = 16 |
Top = 64 |
Width = 425 |
Height = 17 |
Caption = '#' |
TabOrder = 1 |
OnClick = sys_checkbox2_click |
end |
object sys_checkbox3: TCheckBox |
Left = 16 |
Top = 80 |
Width = 425 |
Height = 17 |
Caption = '#' |
TabOrder = 2 |
OnClick = sys_checkbox3_click |
end |
object sys_checkbox4: TCheckBox |
Left = 16 |
Top = 96 |
Width = 425 |
Height = 17 |
Caption = '#' |
TabOrder = 3 |
OnClick = sys_checkbox4_click |
end |
end |
object grp_keylogger: TGroupBox |
Left = 8 |
Top = 184 |
Width = 457 |
Height = 97 |
Caption = '#' |
TabOrder = 2 |
object lbl_key_info: TLabel |
Left = 16 |
Top = 24 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_bytes: TLabel |
Left = 80 |
Top = 72 |
Width = 7 |
Height = 13 |
Caption = '#' |
end |
object edt_garbarge: TEdit |
Left = 16 |
Top = 64 |
Width = 41 |
Height = 21 |
ReadOnly = True |
TabOrder = 0 |
Text = '0' |
end |
object upd_garbarge: TUpDown |
Left = 56 |
Top = 64 |
Width = 17 |
Height = 25 |
TabOrder = 1 |
OnClick = upd_garbargeClick |
end |
end |
object tmr_timer: TTimer |
Enabled = False |
Interval = 500 |
OnTimer = timer_timer |
Left = 424 |
Top = 24 |
end |
end |
/trunk/Quelltext/Config.pas |
---|
0,0 → 1,258 |
unit Config; |
interface |
uses |
Windows, Messages, SysUtils, Forms, shellapi, registry, inifiles, DCConst, |
ExtCtrls, StdCtrls, ComCtrls, Controls, Classes; |
type |
TConfigForm = class(TForm) |
btn_close: TButton; |
lbl_info1: TLabel; |
lbl_info2: TLabel; |
grp_system: TGroupBox; |
img_information: TImage; |
tmr_timer: TTimer; |
sys_checkbox1: TCheckBox; |
sys_checkbox2: TCheckBox; |
sys_checkbox3: TCheckBox; |
sys_checkbox4: TCheckBox; |
grp_keylogger: TGroupBox; |
lbl_key_info: TLabel; |
edt_garbarge: TEdit; |
upd_garbarge: TUpDown; |
lbl_bytes: TLabel; |
procedure btn_close_click(Sender: TObject); |
procedure form_create(Sender: TObject); |
procedure timer_timer(Sender: TObject); |
procedure sys_checkbox1_click(Sender: TObject); |
procedure sys_checkbox2_click(Sender: TObject); |
procedure sys_checkbox3_click(Sender: TObject); |
procedure sys_checkbox4_click(Sender: TObject); |
procedure form_show(Sender: TObject); |
procedure form_hide(Sender: TObject); |
procedure upd_garbargeClick(Sender: TObject; Button: TUDBtnType); |
private |
LangArray: array of TLanguageEntry; |
function GetLangEntry(name: string): string; |
end; |
var |
ConfigForm: TConfigForm; |
implementation |
uses Main; |
{$R *.dfm} |
function TConfigForm.GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
procedure TConfigForm.timer_timer(Sender: TObject); |
var |
Reg: TRegistry; |
begin |
sys_checkbox1.OnClick := nil; |
sys_checkbox2.OnClick := nil; |
sys_checkbox3.OnClick := nil; |
sys_checkbox4.OnClick := nil; |
Reg := TRegistry.Create; |
try |
Reg.RootKey := HKEY_CLASSES_ROOT; |
sys_checkbox1.checked := Reg.KeyExists('.dc4') and Reg.KeyExists('DeCoder4-File'); |
sys_checkbox2.checked := Reg.KeyExists('*\shellex\ContextMenuHandlers\(De)Coder') and Reg.KeyExists('*\shellex\ContextMenuHandlers\(De)Coder'); |
sys_checkbox3.checked := Reg.KeyExists('*\shellex\ContextMenuHandlers\(De)Coder-Erase') and Reg.KeyExists('*\shellex\ContextMenuHandlers\(De)Coder-Erase'); |
sys_checkbox4.checked := Reg.KeyExists('CLSID\{54069E5A-C471-4B68-835C-FC845E64040B}'); |
Reg.RootKey := HKEY_CURRENT_USER; |
if Reg.OpenKey('SOFTWARE\ViaThinkSoft\(De)Coder\', true) then |
begin |
if not reg.ValueExists('GarbargeCount') then |
reg.WriteInteger('GarbargeCount', StdGarbarge); |
upd_garbarge.Position := reg.ReadInteger('GarbargeCount'); |
edt_garbarge.Text := inttostr(upd_garbarge.Position); |
reg.CloseKey; |
end; |
finally |
Reg.free; |
end; |
sys_checkbox1.OnClick := sys_checkbox1_click; |
sys_checkbox2.OnClick := sys_checkbox2_click; |
sys_checkbox3.OnClick := sys_checkbox3_click; |
sys_checkbox4.OnClick := sys_checkbox4_click; |
end; |
procedure TConfigForm.upd_garbargeClick(Sender: TObject; Button: TUDBtnType); |
var |
reg: tregistry; |
begin |
edt_garbarge.Text := inttostr(upd_garbarge.Position); |
reg := tregistry.Create; |
try |
reg.RootKey := HKEY_CURRENT_USER; |
if reg.OpenKey('SOFTWARE\ViaThinkSoft\(De)Coder\', true) then |
begin |
reg.WriteInteger('GarbargeCount', upd_garbarge.Position); |
reg.CloseKey; |
end; |
finally |
reg.free; |
end; |
end; |
procedure TConfigForm.btn_close_click(Sender: TObject); |
begin |
close; |
end; |
procedure TConfigForm.sys_checkbox1_click(Sender: TObject); |
begin |
if fileexists(extractfilepath(application.ExeName)+activator) then |
begin |
if sys_checkbox1.Checked then |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/typereg .dc4 "'+application.exename+'" 1 DeCoder4-File "'+Format(GetLangEntry('dc4file'), [DC4Ver])+'"'), pchar(extractfilepath(application.exename)), sw_normal) |
else |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/typeunreg .dc4'), pchar(extractfilepath(application.exename)), sw_normal); |
end; |
end; |
procedure TConfigForm.sys_checkbox2_click(Sender: TObject); |
begin |
if fileexists(extractfilepath(application.ExeName)+activator) then |
begin |
if sys_checkbox2.Checked then |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllreg "'+extractfilepath(application.exename)+'ShlExt.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal) |
else |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllunreg "'+extractfilepath(application.exename)+'ShlExt.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal); |
end; |
end; |
procedure TConfigForm.sys_checkbox3_click(Sender: TObject); |
begin |
if fileexists(extractfilepath(application.ExeName)+activator) then |
begin |
if sys_checkbox3.Checked then |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllreg "'+extractfilepath(application.exename)+'ShlErase.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal) |
else |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllunreg "'+extractfilepath(application.exename)+'ShlErase.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal); |
end; |
end; |
procedure TConfigForm.sys_checkbox4_click(Sender: TObject); |
begin |
if fileexists(extractfilepath(application.ExeName)+activator) then |
begin |
if sys_checkbox4.Checked then |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllreg "'+extractfilepath(application.exename)+'SecureMoveExt.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal) |
else |
shellexecute(application.Handle, 'open', pchar(extractfilepath(application.ExeName)+activator), pchar('/dllunreg "'+extractfilepath(application.exename)+'SecureMoveExt.dll"'), pchar(extractfilepath(application.ExeName)), sw_normal); |
end; |
end; |
procedure TConfigForm.form_hide(Sender: TObject); |
begin |
tmr_timer.Enabled := false; |
end; |
procedure TConfigForm.form_show(Sender: TObject); |
begin |
tmr_timer.Enabled := true; |
timer_timer(self); |
end; |
procedure TConfigForm.form_create(Sender: TObject); |
var |
ini: TIniFile; |
str: TStringList; |
i, temp: integer; |
begin |
// Sprachdatei auslesen |
ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(name, str.strings[i], '?'); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
// Formular vorbereiten |
lbl_info1.Caption := GetLangEntry('confinfo1'); |
lbl_info2.Caption := GetLangEntry('restartinfo'); |
lbl_key_info.Caption := Format(GetLangEntry('keyinfo'), [StdGarbarge]); |
grp_system.Caption := GetLangEntry('operatingsystem'); |
grp_keylogger.Caption := GetLangEntry('keycapt'); |
btn_close.Caption := GetLangEntry('close'); |
lbl_bytes.Caption := GetLangEntry('bytes'); |
sys_checkbox1.Caption := GetLangEntry('confinfo2'); |
sys_checkbox2.Caption := GetLangEntry('confinfo3'); |
sys_checkbox3.Caption := GetLangEntry('confinfo4'); |
sys_checkbox4.Caption := GetLangEntry('confinfo5'); |
caption := GetLangEntry('caption'); |
icon.LoadFromResourceID(hInstance, 103); |
img_information.Picture.Bitmap.LoadFromResourceName(hInstance, 'Information'); |
// Bei verschiedenen Sprachen gibt es verschiedene Label-Größen! |
// Leider gibt es bei TCheckBox keine Zeilenumbrüche oder AutoSize |
// Vertikale Anpassung |
sys_checkbox1.Top := lbl_info1.Top + lbl_info1.Height + 16; |
sys_checkbox2.top := sys_checkbox1.top + sys_checkbox1.Height; |
sys_checkbox3.top := sys_checkbox2.top + sys_checkbox2.Height; |
sys_checkbox4.top := sys_checkbox3.top + sys_checkbox3.Height; |
img_information.top := sys_checkbox4.top + sys_checkbox4.height + 16; |
lbl_info2.top := img_information.top; |
grp_system.Height := lbl_info2.Top + lbl_info2.Height + 16; |
upd_garbarge.Top := lbl_key_info.Top + lbl_key_info.Height + 8; |
grp_keylogger.Height := upd_garbarge.Top + upd_garbarge.Height + 16; |
edt_garbarge.Top := upd_garbarge.Top; |
upd_garbarge.Height := edt_garbarge.Height; |
grp_keylogger.top := grp_system.Top + grp_system.Height + 8; |
btn_close.top := grp_keylogger.Top + grp_keylogger.Height + 8; |
clientheight := btn_close.Top + btn_close.Height + 8; |
lbl_bytes.top := upd_garbarge.top + upd_garbarge.Height div 2 - lbl_bytes.Height div 2; |
// Horizontale Anpassung |
temp := max_3(lbl_info1.width, lbl_info2.Width+img_information.width+(lbl_info2.left-img_information.left-img_information.width), lbl_key_info.Width); |
sys_checkbox1.Width := temp; |
sys_checkbox2.Width := temp; |
sys_checkbox3.Width := temp; |
sys_checkbox4.Width := temp; |
grp_system.Width := temp + 32; |
grp_keylogger.Width := grp_system.Width; |
upd_garbarge.Left := edt_garbarge.Left + edt_garbarge.Width + 1; |
clientwidth := grp_system.Left + grp_system.Width + 8; |
btn_close.Left := clientwidth div 2 - btn_close.width div 2; |
// Werte |
edt_garbarge.Text := inttostr(upd_garbarge.Position); |
timer_timer(self); |
end; |
end. |
/trunk/Quelltext/DCConst.pas |
---|
0,0 → 1,126 |
unit DCConst; |
interface |
uses |
Classes, SysUtils; |
type |
TLanguageEntry = record |
name: string; |
text: string; |
end; |
function max_2(A, B: integer): integer; |
function max_3(A, B, C: integer): integer; |
function max_4(A, B, C, D: integer): integer; |
function max_7(A, B, C, D, E, F, G: integer): integer; |
function paramstr_firstposition(str: string): integer; |
function paramzeile_firstposition(str: string): integer; |
function ZaehleLinien(str: string): integer; |
function GebeLinieaus(str: string; linie: integer): string; |
const |
// Global |
DC4Ver: String = '4.1 Public Beta 4b'; |
// ConfigForm |
activator = 'activator.exe'; |
StdGarbarge = 5; |
var |
ParamZeile: string; |
implementation |
function max_2(A, B: integer): integer; |
begin |
result := 0; |
if (A >= B) then result := A; |
if (B >= A) then result := B; |
end; |
function max_3(A, B, C: integer): integer; |
begin |
result := 0; |
if (A >= B) and (A >= C) then result := A; |
if (B >= A) and (B >= C) then result := B; |
if (C >= A) and (C >= B) then result := C; |
end; |
function max_4(A, B, C, D: integer): integer; |
begin |
result := 0; |
if (A >= B) and (A >= C) and (A >= D) then result := A; |
if (B >= A) and (B >= C) and (B >= D) then result := B; |
if (C >= A) and (C >= B) and (C >= D) then result := C; |
if (D >= A) and (D >= B) and (D >= C) then result := D; |
end; |
function max_7(A, B, C, D, E, F, G: integer): integer; |
begin |
result := 0; |
if (A >= B) and (A >= C) and (A >= D) and (A >= E) and (A >= F) and (A >= G) then result := A; |
if (B >= A) and (B >= C) and (B >= D) and (B >= E) and (B >= F) and (B >= G) then result := B; |
if (C >= A) and (C >= B) and (C >= D) and (C >= E) and (C >= F) and (C >= G) then result := C; |
if (D >= A) and (D >= B) and (D >= C) and (D >= E) and (D >= F) and (D >= G) then result := D; |
if (E >= A) and (E >= B) and (E >= C) and (E >= D) and (E >= F) and (E >= G) then result := E; |
if (F >= A) and (F >= B) and (F >= C) and (F >= D) and (F >= E) and (F >= G) then result := F; |
if (G >= A) and (G >= B) and (G >= C) and (G >= D) and (G >= E) and (G >= F) then result := G; |
end; |
function paramstr_firstposition(str: string): integer; |
var |
i: integer; |
begin |
result := -1; |
for i := 1 to paramcount() do |
begin |
if paramstr(i) = lowercase(str) then |
result := i; |
end; |
end; |
function paramzeile_firstposition(str: string): integer; |
var |
i: integer; |
begin |
result := -1; |
for i := 1 to ZaehleLinien(paramzeile) do |
begin |
if GebeLinieaus(paramzeile, i) = lowercase(str) then |
result := i; |
end; |
end; |
function ZaehleLinien(str: string): integer; |
var |
temp: tstringlist; |
begin |
temp := tstringlist.Create; |
try |
temp.text := str; |
result := temp.count; |
finally |
temp.free; |
end; |
end; |
function GebeLinieaus(str: string; linie: integer): string; |
var |
temp: tstringlist; |
begin |
temp := tstringlist.Create; |
try |
temp.text := str; |
if linie <= temp.Count then |
result := temp.Strings[linie-1] |
else |
result := ''; |
finally |
temp.free; |
end; |
end; |
end. |
/trunk/Quelltext/Elemente.dfm |
---|
0,0 → 1,90 |
object ElementeForm: TElementeForm |
Left = 0 |
Top = 0 |
BorderIcons = [biSystemMenu] |
Caption = '#' |
ClientHeight = 286 |
ClientWidth = 426 |
Color = clBtnFace |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [] |
OldCreateOrder = False |
Position = poMainFormCenter |
OnCreate = form_create |
OnDestroy = form_destroy |
OnResize = form_resize |
OnShow = form_show |
PixelsPerInch = 96 |
TextHeight = 13 |
object file_box: TListBox |
Left = 0 |
Top = 0 |
Width = 426 |
Height = 245 |
Align = alClient |
ItemHeight = 13 |
MultiSelect = True |
PopupMenu = popup |
Sorted = True |
TabOrder = 0 |
end |
object bottom_panel: TPanel |
Left = 0 |
Top = 245 |
Width = 426 |
Height = 41 |
Align = alBottom |
TabOrder = 1 |
object btn_close: TButton |
Left = 8 |
Top = 8 |
Width = 129 |
Height = 25 |
Cancel = True |
Caption = '#' |
TabOrder = 0 |
OnClick = btn_close_click |
end |
object btn_remove: TButton |
Left = 288 |
Top = 8 |
Width = 129 |
Height = 25 |
Caption = '#' |
TabOrder = 1 |
OnClick = btn_remove_click |
end |
end |
object popup: TPopupMenu |
Left = 8 |
Top = 8 |
object add_file: TMenuItem |
Caption = 'add_file' |
ImageIndex = 17 |
OnClick = add_file_click |
end |
object add_folder: TMenuItem |
Caption = 'add_folder' |
ImageIndex = 18 |
OnClick = add_folder_click |
end |
object seperator: TMenuItem |
Caption = '-' |
end |
object remove: TMenuItem |
Caption = 'remove' |
ImageIndex = 3 |
OnClick = btn_remove_click |
end |
end |
object tmr_refresh: TTimer |
Enabled = False |
Interval = 100 |
OnTimer = tmr_refreshTimer |
Left = 40 |
Top = 8 |
end |
end |
/trunk/Quelltext/Elemente.pas |
---|
0,0 → 1,217 |
unit Elemente; |
interface |
uses |
Windows, SysUtils, Forms, Controls, Classes, StdCtrls, ExtCtrls, DragDropFile, |
DragDrop, Menus, IniFiles, DCConst; |
type |
TElementeForm = class(TForm) |
file_box: TListBox; |
bottom_panel: TPanel; |
btn_close: TButton; |
btn_remove: TButton; |
popup: TPopupMenu; |
add_file: TMenuItem; |
add_folder: TMenuItem; |
seperator: TMenuItem; |
remove: TMenuItem; |
tmr_refresh: TTimer; |
procedure form_show(Sender: TObject); |
procedure btn_remove_click(Sender: TObject); |
procedure btn_close_click(Sender: TObject); |
procedure form_create(Sender: TObject); |
procedure dropfile_drop(Sender: TObject; ShiftState: TShiftState; |
Point: TPoint; var Effect: Integer); |
procedure form_destroy(Sender: TObject); |
procedure add_folder_click(Sender: TObject); |
procedure add_file_click(Sender: TObject); |
procedure form_resize(Sender: TObject); |
procedure tmr_refreshTimer(Sender: TObject); |
private |
LangArray: array of TLanguageEntry; |
function GetLangEntry(name: string): string; |
public |
DropFile: TDropFileTarget; |
end; |
var |
ElementeForm: TElementeForm; |
implementation |
uses Main; |
{$R *.dfm} |
function TElementeForm.GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
procedure TElementeForm.tmr_refreshTimer(Sender: TObject); |
begin |
tmr_refresh.Enabled := false; |
file_box.Repaint; |
end; |
procedure TElementeForm.btn_close_click(Sender: TObject); |
begin |
close; |
end; |
procedure TElementeForm.btn_remove_click(Sender: TObject); |
var |
i: integer; |
begin |
try |
mainform.KaZip.close; |
except |
end; |
mainform.KaZip.Open(mainform.fileopen); |
try |
for i := 0 to file_box.Items.Count - 1 do |
begin |
if file_box.Selected[i] then |
mainform.KaZip.Remove(file_box.Items.Strings[i]); |
end; |
// form_show(self); |
file_box.Clear; |
for i := 0 to mainform.KaZip.FileNames.Count - 1 do |
file_box.Items.Add(mainform.KaZip.FileNames.Strings[i]); |
mainform.edt_vle4.Text := mainform.BestimmeDateiGroesse(mainform.fileopen); |
finally |
mainform.KaZip.close; |
end; |
end; |
procedure TElementeForm.add_file_click(Sender: TObject); |
begin |
mainform.m_dateiensammlung_add_file.Click; |
form_show(self); |
end; |
procedure TElementeForm.form_create(Sender: TObject); |
var |
ini: TIniFile; |
str: TStringList; |
i: integer; |
begin |
// Sprachdatei auslesen |
ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(name, str.strings[i], '?'); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
// Form vorbereiten |
DropFile := TDropFileTarget.Create(self); |
DropFile.Dragtypes := [dtCopy]; |
DropFile.OnDrop := dropfile_drop; |
DropFile.Register(elementeform); |
popup.Images := mainform.imagelist; |
btn_close.caption := GetLangEntry('close'); |
btn_remove.caption := GetLangEntry('remove'); |
caption := GetLangEntry('caption'); |
add_file.Caption := GetLangEntry('add_file'); |
add_folder.Caption := GetLangEntry('add_folder'); |
remove.Caption := GetLangEntry('remove'); |
end; |
procedure TElementeForm.dropfile_drop(Sender: TObject; ShiftState: TShiftState; |
Point: TPoint; var Effect: Integer); |
var |
i: integer; |
begin |
effect := DROPEFFECT_NONE; // damit stürzt Windows 95 nicht ab |
mainform.steuerelementesperren(true); |
mainform.zeige_wartenform(true); |
try |
for i := 0 to DropFile.Files.Count - 1 do |
begin |
mainform.addtozip(DropFile.Files.Strings[i], mainform.fileopen); |
end; |
mainform.edt_vle4.Text := mainform.BestimmeDateiGroesse(mainform.fileopen); |
form_show(self); |
finally |
mainform.steuerelementesperren(false); |
mainform.zeige_wartenform(false); |
tmr_refresh.Enabled := true; |
end; |
end; |
procedure TElementeForm.form_resize(Sender: TObject); |
begin |
btn_remove.Left := bottom_panel.width - btn_remove.Width - 8; |
end; |
procedure TElementeForm.form_destroy(Sender: TObject); |
begin |
try |
dropfile.free; |
except |
end; |
end; |
procedure TElementeForm.form_show(Sender: TObject); |
var |
i: integer; |
begin |
try |
mainform.KaZip.close; |
except |
end; |
mainform.KaZip.Open(mainform.fileopen); |
try |
file_box.Clear; |
for i := 0 to mainform.KaZip.FileNames.Count - 1 do |
file_box.Items.Add(mainform.KaZip.FileNames.Strings[i]); |
finally |
mainform.KaZip.close; |
end; |
end; |
procedure TElementeForm.add_folder_click(Sender: TObject); |
begin |
mainform.m_dateiensammlung_add_folder.Click; |
form_show(self); |
end; |
end. |
/trunk/Quelltext/Help.html |
---|
0,0 → 1,816 |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
<link rel="stylesheet" href="style.css" type="text/css"> |
<title>(De)Coder 4.1 Hilfe</title> |
</head> |
<body> |
<font class="titel"><strong>(De)Coder 4.1 Handbuch</strong></font> |
<br><br><font size="+1"><b>Achtung!</b> Es handelt sich hierbei um eine Beta-Version. Bitte prüfen Sie regelmäßig auf Updates, um die finale Version zu erhalten.</font> |
<p><a name="i"><font class="ueberschrift">Inhalte</font></a></p> |
<ul> |
<li><a href="#1"><strong>Allgemeines zu (De)Coder 4.1</strong> |
</a><ol> |
<li>Neuerungen von (De)Coder 4</li> |
<li>Allgemeine Hinweise </li> |
<li>Sicherheitshinweise</li> |
<li>Instanzen</li> |
<li>Passwort vergessen, und nun?</li> |
</ol> |
</li> |
<li><a href="#2"><strong>Befehlszeilenanleitung</strong></a><ol> |
<li>CODER [Dateiname] [...] [/newinstance]</li> |
<li>CODER [Eingabe] [...] /c [Passwort] [Ausgabe]</li> |
<li>CODER [Eingabe] [...] /x [Passwort] [Ausgabe]</li> |
<li>CODER [Eingabe] /e [/notsilent]</li> |
<li>CODER /clean [silent] [/only=...]</li> |
<li>CODER /? </li> |
<li>Errorlevels </li> |
</ol> |
</li> |
<li><a href="#3"><strong>Temporäre Dateien</strong></a></li> |
<li><a href="#4"><strong>Versionsgeschichte</strong></a><ul> |
<li>Version 1.0</li> |
<li>Version 2.0</li> |
<li>Version 2.1</li> |
<li>Version 2.2</li> |
<li>Version 3.0</li> |
<li>Version 3.1</li> |
<li>Version 3.2</li> |
<li>Version 4.0</li> |
<li>Version 4.1</li> |
</ul> |
</li> |
<li><a href="#5"><strong>Funktionsweisen</strong></a> </li> |
<li><a href="#6"><strong>Lizenz</strong></a> </li> |
<li><a href="#7"><strong>Über dieses Programm</strong></a> </li> |
</ul> |
<p><a name="1"><font size="5"><font class="ueberschrift">Allgemeines |
zu (De)Coder 4.1</font></font></a></p> |
<p><b>Neuerungen von (De)Coder 4</b></p> |
<p>Vielen Dank, dass Sie sich für (De)Coder 4 entschieden |
haben!</p> |
<p>Das von Daniel Marschall entwickelte Programm (De)Coder ist |
nun nach sehr langer Pause in Version 4 erschienen. Es gibt |
etliche Neuerungen und nun eine optimale Datensicherheit durch |
den AES-Standard.</p> |
<p>Es gibt folgende Neuerungen:</p> |
<ul> |
<li><em>Multilinguale Unterstützung<br> |
</em>(De)Coder kann über leicht zu bearbeitende |
INI-Dateien in verschiedene Sprachen übersetzt werden, da |
das Hauptprogramm Sprachneutral entwickelt wurde. Die |
Sprachen Englisch, Französisch und Deutsch werden von |
ViaThinkSoft bereitgestellt. Die meisten Steuerelemente |
von (De)Coder akzeptieren mehrzeilige Einträge (### Sequenz |
in der Sprachdatei) und passen sich der Länge des Eintrages |
an.</li> |
</ul> |
<ul> |
<li><em>Prozessfortschrittserkennung und Abbruchreaktionen</em><br> |
(De)Coder zeigt Ihnen bei jeder Aktion (z.B. |
Verschlüsselung) den genauen Stand in Prozentangaben an. |
Somit kann bei großen Dateien eingeschätzt werden, wie |
lange der Prozess noch dauert. Desweiteren kann mitten |
bei einer Aktion das Programm abgebrochen werden. Trotz |
einer Abbruchreaktion wird (De)Coder versuchen, die |
temporären Dateien zu vernichten.</li> |
</ul> |
<ul> |
<li><em>Hoher Sicherheitsstandard</em><br> |
(De)Coder 4 verwendet erstmals moderne und weltweit |
verwendete Algorithmen. Es wird der |
symmetrische Block-Cipher-Algorithmus "<a |
href="http://de.wikipedia.org/wiki/Advanced_Encryption_Standard" target="_blank">Rijndael |
(AES)</a>" verwendet. Das Passwort des Ciphers wird |
durch das Benutzerpasswort und einen 128-Bit Seed, der |
Zufallswerte enthält, über den Hash-Algorithmus "<a |
href="http://de.wikipedia.org/wiki/Sicherer_Hash-Algorithmus" target="_blank">SHA |
512</a>" mit 512 Bit festgelegt. Somit ist jede |
Datei verschieden - auch wenn sie immer mit dem selben |
Kennwort verschlüsselt wird. Durch diese Methode kann |
das Benutzerpasswort unmöglich ermittelt werden. Als |
Cipher-Modus wird CTS verwendet. Dies ist ein doppelter <a |
href="http://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode" target="_blank">CBC</a>.</li> |
</ul> |
<ul> |
<li><em>Korrektheit des Benutzerkennworts wird ermittelt</em><br> |
Nachdem eine Datei entschlüsselt wurde, wird anhand |
eines Datei Hashs (wieder mit SHA 512) ermitelt, ob die |
Datei korrekt entschlüsselt wurde - ist dies nicht der |
Fall, ist oftmals das Benutzerkennwort falsch. </li> |
</ul> |
<ul> |
<li><em>Befehlszeilenunterstützung<br> |
</em>Sie können (De)Coder alle Befehle über die |
Windows-Konsole geben, die sie auch visuell ausführen |
können. Somit können Sie Ver- und Entschlüsselungen |
über eine Stapelverarbeitungsdatei ausführen oder |
(De)Coder in einem anderen Programm durch Aufruf mit |
Parametern verwenden. (De)Coder arbeitet im Hintergrund |
und kommt bei dem Befehlszeilenaufruf nicht zum |
Vorschein.</li> |
</ul> |
<ul> |
<li><em>Drag und Drop-Unterstützung<br> |
</em>Sie können Dateien und Ordner einfach in das |
(De)Coder fenster schieben, um Sie zu öffnen.</li> |
</ul> |
<ul> |
<li><em>Eigener Dateityp (*.dc4) - frei konfigurierbar<br> |
</em>(De)Coder 4 besitzt ein eigenes Dateiformat, dass |
die Erweiterung DC4 besitzt. Sowohl verschlüsselte |
Ordner als auch verschlüsselte Dateien werden zu den DC4 |
Dateien, die auf Benutzerwunsch auch (De)Coder 4 |
zugewiesen werden können.</li> |
</ul> |
<ul> |
<li><em>Kontextmenüeintrag für Dateien und Ordner - frei |
konfigurierbar<br> |
</em>Auf Benutzerwunsch können auch den Dateien und |
Ordnern ein Kontextmenüeintrag zugewiesen werden, sodass |
Sie (De)Coder noch schneller öffnen können.</li> |
</ul> |
<ul> |
<li><em>Installer / Uninstaller<br> |
</em>(De)Coder 4 verfügt über einen mehrsprachigen |
Installer sowie Uninstaler, um sich optimal in das System |
zu integrieren.</li> |
</ul> |
<ul> |
<li><em>Schutz vor Keyloggern<br> |
</em>Seit Version 4.1 sind die Passwortfelder vor softwarebasierenden |
Keyloggern geschützt, die Tastendrücke abfangen. Nach jeder |
Eingabe wird ein wenig Datenmüll, der von der Länge her variiert, |
gesendet, vom Eingabefeld jedoch ignoriert.</li> |
</ul> |
<ul> |
<li><em>Sicheres Löschen<br> |
</em>Seit Version 4.1 bietet (De)Coder die Möglickeit an, seperate |
Daten und Ordner vollständig sicher zu löschen.</li> |
</ul> |
<ul> |
<li><em>Sicheres Verschieben<br> |
</em>Seit Version 4.1 können Sie Dateien und Ordner sicher verschieben. Dies ist |
ein Kopierprozess mit anschließender sicheren Löschung.</li> |
</ul> |
<ul> |
<li><em>Direktes Öffnen<br> |
</em>Seit Version 4.1 können Sie verschlüsselte Dateien und Ordner direkt |
öffnen, ohne Sie an einen bestimmten Ort abzuspeichern.</li> |
</ul> |
<ul> |
<li><em>Höchste Sicherheit<br> |
</em>Seit Version 4.1 löscht (De)Coder alle temporären Dateien sowie ZIP-Überstände |
durch mehrmaliges Überschreiben, um Daten auf dem freien Speicherplatz |
der Festplatte zu schützen.</li> |
</ul> |
<ul> |
<li><em>Dateilisten<br> |
</em>(De)Coder unterstützt seit Version 4.1 das Anlegen und Verwalten von Dateilisten. Dadurch |
können Ordner und Dateien direkt in eine DC4-Datei geschoben werden, ohne dass diese vorher in einen |
Windows-Ordner verschoben werden müssen.</li> |
</ul> |
<p>Information: (De)Coder 4 ist nicht kompatibel mit seinen |
Vorgängern. Das bedeutet, dass Dateien, die mit älteren |
Versionen von (De)Coder verschlüsselt wurden, nicht mehr |
eingelesen werden können. Aufgrund der geringen Sicherheit der |
alten Versionen werden diese auch nicht mehr bei den offiziellen |
Downloadquellen zum Download angeboten. Der Entwicker <a |
href="mailto:info@daniel-marschall.de">Daniel Marschall</a> bietet |
noch Unterstützung für (De)Coder ab Version 3.0. Wenn Sie alte |
Dateien besitzen und die dazugehörige Software nicht mehr haben, können Sie |
(De)Coder 3.2 anfordern.</p> |
<p>Die Bedienung des Programms dürfte ziemlich Eindeutig sein, |
deswegen erläutere ich die Bedienung hier auch nicht weiter. |
Sollten Sie trotzdem fragen zum Programm haben, können Sie mir |
jederzeit per E-Mail fragen stellen.</p> |
<p><b>Allgemeine Hinweise</b></p> |
<p>Im Allgemeinen sollte jede Datei nach der Verschlüsselung |
nocheinmal zur Sicherheit entschlüsselt werden, um |
sicherzustellen, dass alles funktioniert hat. Achten Sie auch auf |
die korrekte Eingabe des Passworts - es wird zwischen Groß- und |
Kleinschreibung unterschieden. Deswegen sollte die Feststelltaste |
deaktiviert sein; das Programm warnt Sie jedoch, wenn dies nicht |
der Fall ist. </p> |
<p>Obwohl bei der Entwicklung sehr auf das Sparen von Ressourcen |
geachtet wurde, sollte mit Vorsicht vorgegangen werden, wenn |
größere Dateien mit (De)Coder ver- oder entschlüsselt werden. |
Es kann unter Umständen vorkommen, dass das System für längere |
Zeit auslastet oder dass die Vorgänge aufgrund von zu wenig |
Arbeitsspeicher bzw. zu kleiner Auslagerungsdatei fehlschlagen. |
Besonders hier ist es zu empfehlen, dass die |
Rückentschlüsselung getestet wird.</p> |
<p>(De)Coder 4 führt die Verschlüsselung bzw. |
Entschlüsselung sofort nach Klick auf den Haken aus und erstellt |
bei diesem Prozess eine temporäre Datei. Wenn es zu keinen |
Fehlern kommt (z.B. aufgrund der Eingabe eines falschen |
Passworts) wird der Benutzer aufgefordert, die Zielposition |
anzugeben. Erst danach wird die temporäre Datei zum Zielort |
verschoben und umbenannt. Bricht der Benutzer die |
Eingabeaufforderung ab oder schlägt die Ver- bzw. |
Entschlüsselung fehl, wird die temporäre Datei sofort wieder |
gelöscht.</p> |
<p>Sie sollten also bei jeder Ver- bzw. Entschlüsselung genau so |
viel Speicherplatz auf dem Medium, auf dem das temporäre |
Verzeichnis von Windows liegt, freihalten, wie Quelldatei groß |
ist (es wird jedoch etwas mehr empfohlen). Wenn Sie eine 100 MB |
große Datei verschlüsseln möchten, dann sollten auf dem |
Laufwerk noch 101 MB frei sein - auch wenn Sie die Datei |
anschließend auf ein anderes Laufwerk speichern möchten!</p> |
<p>(De)Coder 4.1 verwendet ein erweitertes Dateiformat, das von (De)Coder 4.0 |
nicht erkannt wird. Version 4.1 toleriert das Dateiformat von Version 4.0 jedoch.</p> |
<p><b>Sicherheitshinweise</b></p> |
<p>Obwohl (De)Coder 4 eine extrem hohe Sicherheit aufweist, |
bleiben die Quelldateien, die Sie verschlüsseln, auf der |
Festplatte, wenn Sie diese nicht sicher löschen. (De)Coder |
bietet die Möglichkeit an, Quelldateien sicher zu löschen. |
Dabei wird die Datei mehrmals überschrieben, bevor sie |
unwiederruflich gelöscht wird. Durch diese Option bleiben keine |
Reste der Quelldatei mehr auf dem Datenträger zurück. Beachten |
Sie jedoch, dass jede Datei, die Sie nicht sicher (durch |
Überschreiben) löschen, auf dem Datenträger |
zurückbleibt, bis sie mit neuen Daten überschrieben wird!</p> |
<p>(De)Coder bietet die Möglichkeit, Dateien und Ordner auch |
seperat zu vernichten. Dies hilft jedoch nicht, wenn Sie |
die sensiblen Daten verschoben oder kopiert haben, weil bei diesen |
Vorgängen die Quelldaten nur einfach gelöscht werden. Ebenfalls |
hilft es nicht, Daten über den Windows Papierkorb zu löschen. |
(De)Coder bietet keine Möglichkeit an, z.B. freien Speicherplatz |
auf der Festplatte zu reinigen oder ganze Laufwerke datentechnisch zu vernichten. Benutzen Sie für solche Zwecke |
eine speziell dafür vorgesehene Software wie z.B. <a href="http://www.heidi.ie/eraser/" target="_blank">Eraser</a>. |
(De)Coder ist seit Version 4.1 in der Lage, Dateien sicher zu verschieben.</p> |
<p>Sie sollten bei der Wahl des Passwortes darauf achten, dass es |
eine geeignete Länge (empfohlen werden mindestens 10 Zeichen) |
aufweist und aus Buchstaben und Zahlen besteht. Desweiteren |
sollte sowohl Groß- als auch Kleinschreibung angewandt werden. |
Es sollten keine Wörter, die in Wörterbüchern |
stehen, verwendet werden. Durch diese Maßnahmen verhindern |
Sie einen BruteForce-Angriff.</p> |
<p>(De)Coder ist in der Lage, Keylogger, die tastenanschläge softwaretechnisch |
abfangen, durch Datenmüll zu blocken. Dies gilt jedoch nicht für hardwaretechnische |
(z.B. eingebauten Chip in der Tastatur) oder spezielle Keylogger. Sie sollten Ihr System daher |
z.B. mit einem Virenschutzprogramm überprüfen lassen. Sie können die Stärke des Keyloggerschutzes in der |
Konfiguration ändern oder deaktivieren. Beachten Sie, dass der PC bei zu vielen |
Keyloggerschutzbytes stark ausgelastet werden kann, wodurch Tastenanschläge unter Umständen |
nicht registriert werden können. Achten Sie daher darauf, bei hoher Keyloggerschutzbyte-Anzahl |
oder bei einem langsamen oder ausgelasteten Computer langsam zu schreiben und achten |
Sie auf die Sternchen, die bei den Anschlägen erscheinen.</p> |
<p>(De)Coder verwendet zur Passwortüberprüfung eine Hash-Prüfsumme, |
die zusammengesetzt ist aus der Hash-Prüfsumme der Originaldatei sowie des |
Seed und der Originalpasswortes. Es ist unmöglich, Rückschlüsse |
auf das Originalpasswort oder die Originaldatei zu ziehen.</p> |
<p>Bitte beachten Sie, dass (De)Coder den originalen Dateinamen des Ordners |
bzw. der Datei speichert. Möchten Sie verhindern, dass die DC4-Datei Aufschluss |
über den Dateinamen gibt, sollten Sie die Datei oder den Ordner vorher umbenennen.</p> |
</p><b>Instanzen</b></p> |
<p>(De)Coder wird versuchen, immer nur eine Instanz (ein Programfenster) |
geöffnet zu halten. Dies gilt jedoch nur für die normale |
Ausführung mit der Befehlszeile CODER bzw CODER [Dateiname]. Ist (De)Coder |
beschäftigt, wird eine neue Instanz geöffnet.</p> |
<p>Weitere Informationen finden Sie unter den Diagrammen bei <a href="#5">Funktionsweisen</a>.</p> |
<p><strong>Passwort vergessen, was nun?</strong></p> |
<p>Dann haben Sie ein Problem... Es gibt keine Möglichkeit, die |
Daten ohne korrektes Passwort wieder zu entschlüsseln.</p> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="2"><font size="5"><font class="ueberschrift">Befehlszeilenanleitung</font></font></a></p> |
<p>Sie können (De)Coder auch über die Befehlszeile aufrufen. |
Sie können Stapelverarbeitungsdateien (*.bat) erstellen, um |
Prozesse abzuarbeiten. Bitte beachten Sie die korrekte Schreibweise und Reihenfolge der Parameter.</p> |
<p><b>CODER [Dateiname] [...] [/newinstance]</b></p> |
<p>Ist "Dateiname" eine Datei, dann wird (De)Coder |
gestartet und die Datei geöffnet. Es kann sich um eine |
unverschlüsselte Datei oder um eine verschlüsselte Datei bzw. |
einen verschlüsselten Ordner handeln. </p> |
<p>Ist "Dateiname" ein Ordner, dann wird (De)Coder |
gestartet und der Ordner geöffnet.</p> |
<p>Sind mehrere Dateien oder Ordner angegeben, wird werden sie |
zu einem Ordner zusammengepackt und mit (De)Coder geöffnet. |
Unter den Dateien können auch DC4-Dateien sein, die |
dann jedoch noch einmal verschlüsselt werden.</p> |
<p>Sind keine Dateien oder Ordner angegeben, wird (De)Coder normal |
gestartet.</p> |
<p>Ist in der Kommandozeile die Zeichenfolge "/newinstance" |
enthalten, wird eine neue Instanz geöffnet. Dieser Parameter |
wird Programmintern verwendet.</p> |
<p>Wildcards sind erlaubt, wenn 1 Eingabe gemacht wurde.</p> |
<p>Es entstehen keine ErrorLevels außer 0, 10, 11.</p> |
<p><b>CODER [Eingabe] [...] /c [Passwort] [Ausgabe]</b><br> |
<b>CODER [Eingabe] [...] /x [Passwort] [Ausgabe]</b></p> |
<p>Sicheres Löschen von Dateien</p> |
<ul> |
<li>Wird ein /c angegeben, so bleiben die Quelldaten |
erhalten.</li> |
<li>Bei der Angabe eines /x werden die Quelldaten (bei einem |
Ordner alle Elemente mit Unterordnern) sicher durch |
mehrmaliges Überschreiben <i>unwiederruflich</i> |
gelöscht (sofern kein Fehler aufgetreten ist). Es werden |
auch schreibgeschützte Dateien gelöscht.</li> |
</ul> |
<p>Automatische Erkennung von Verschlüsselung und |
Entschlüsselung</p> |
<ul> |
<li>Ist Eingabe eine verschlüsselte Datei, wird sie nach |
Ausgabe entschlüsselt</li> |
<li>Ist Eingabe ein verschlüsselter Ordner, wird er |
entschlüsselt mit seinem originalen Namen in Ausgabe |
erstellt</li> |
<li>Ist Eingabe eine nicht verschlüsselte Datei, wird sie |
nach Ausgabe verschlüsselt<br> |
die Eingaben Cipher, Hash und Mode werden dabei zwar |
ignoriert, trotzdem müssen es gültige Eingaben |
(Ganzzahlen im gültigen Bereich) sein</li> |
<li>Ist Eingabe ein Ordner, wird er gepackt und nach Ausgabe |
verschlüsselt</li> |
</ul> |
<p>Wenn bereits ein Element mit dem Namen vorhanden ist</p> |
<ul> |
<li>Ist bei der Ordnerentschlüsselung in Ausgabe bereits ein |
Verzeichnis mit dem originalen Namen vorhanden, wird ein |
alternativer Name gewählt. </li> |
<li>Ist Ausgabe bei einer Verschlüsselung bereits vorhanden, |
wird es überschrieben.</li> |
</ul> |
<p>Kontrolle der Dateinamenserweiterungen</p> |
<ul> |
<li>Hat Ausgabe bei einer Verschlüsselung nicht die |
Erweiterung ".dc4", wird diese Angabe |
hinzugefügt.</li> |
<li>Hat Ausgabe bei einer Entschlüsselung die Erweiterung |
".dc4", wird diese Angabe entfernt.</li> |
</ul> |
<p>Anmerkungen</p> |
<ul> |
<li>Wildcards sind erlaubt, wenn 1 Eingabe angegeben wurde</li> |
<li>Es können mehrere Eingabedateien- und Ordner angegeben |
werden. In diesem Fall wird eine Dateiliste angelegt. Verschlüsselte |
DC4-Dateien werden jedoch ebenfalls in das Archiv gepackt und nicht entschlüsselt.</li> |
<li>Existiert das Ausgabeverzeichnis nicht, so werden alle |
Unterverzeichnisse automatisch erstellt.</li> |
<li>Wenn Sie den Ordner in das selbe Verzeichnis |
entschlüsseln möchten, so geben Sie als Ausgabe einen |
Punkt (.) an - eine leere Eingabe für den Parameter |
"Ausgabe" würde einen Syntaxfehler |
hervorrufen. </li> |
</ul> |
<p>Beispiel für eine Stapelverwaltungsdatei (*.bat)</p> |
<p><code>@ ECHO OFF<br> |
CODER "Meine Textdatei.txt" /c "Mein |
Passwort" "Verschluesselt.dc4"<br> |
ECHO %ERRORLEVEL% <br> |
CODER "Verschluesselt.dc4" /c "Mein Passwort" |
"Rueckverschluesselung.txt"<br> |
ECHO %ERRORLEVEL% <br> |
ECHO. <br> |
ECHO Vergleiche Dateien... <br> |
ECHO. <br> |
FC "Meine Textdatei.txt" |
"Rueckverschluesselung.txt"<br> |
PAUSE</code></p> |
<p>Es können alle ErrorLevels außer 8 und 9 zurückgegeben werden.</p> |
<p><b>CODER [Eingabe] /e [/notsilent]</b></p> |
<p>Vernichtet die Datei oder den Ordner "Eingabe".</p> |
<p>Ist /notsilent gesetzt, werden Windows-Meldungen anstatt von ErrorLevels ausgegeben.</p> |
<p>Wildcards sind erlaubt.</p> |
<p>Es können folgende ErrorLevels entstehen: 0 (OK), 3 (Syntaxfehler), 8 (Fehler), 9 (Nicht gefunden), 11.</p> |
<p><b>CODER /clean [/silent] [/only=...]</b></p> |
<p>Fordert (De)Coder dazu auf, die temporären Dateien manuell zu |
entfernen. Dies wird normalerweiße automatisch durchgeführt. |
Der Parameter "/silent" unterdrückt zusätzlich |
jegliche Ausgabe. Der Parameter "only" wird in der Regel nur |
programmintern benutzt. Dabei werden nur die Dateien einer bestimmten |
Sitzungsnummer gelöscht.</p> |
<p>Ist Silent-Modus aktiviert, entstehen folgende ErrorLevels: 0 (OK), 3 (Syntaxfehler), 8 (Fehler), 11.</p> |
<p><b>CODER /?</b></p> |
<p>Öffnet die (De)Coder-Hilfe (diese hier). </p> |
<p>Es entstehen keine ErrorLevels außer 0, 3 und 11.</p> |
<p><strong>Errorlevels</strong> </p> |
<p>(De)Coder arbeitet bei der letzten Variante ausschließlich im |
Hintergrund und gibt keine Meldungen (z.B. Fehler) aus. Um Fehler |
zu Diagnostizieren, werden sogenannte Errorlevels vom Programm |
ausgegeben.</p> |
<p>Es existieren folgende Errorlevels:</p> |
<p><code>Errorlevel 0 = Kein Fehler<br> |
Errorlevel 1 = DC4 Datei beschädigt <br> |
Errorlevel 2 = Fehler bei Ver-/Entschlüsselung <br> |
Errorlevel 3 = Falsche Syntax<br> |
Errorlevel 4 = Ausgabeverzeichnis konnte nicht erstellt werden <br> |
Errorlevel 5 = Datei konnte nicht zur Zielposition verschoben |
werden <br> |
Errorlevel 6 = Quelldateien konnten nicht vollständig gelöscht |
werden. <br> |
Errorlevel 7 = Internes ZIP-Archiv fehlerhaft<br> |
ErrorLevel 8 = Datei oder Ordner konnte nicht oder nur teilweise entfernt werden. (*)<br> |
ErrorLevel 9 = Datei oder Ordner nicht gefunden. (*)<br> |
ErrorLevel 10 = Es existiert bereits eine Instanz. Ein neues Fenster wird geöffnet.<br> |
ErrorLevel 11 = Schwerer Programminterner Fehler (z.B. Language.ini fehlt).</code></p> |
<p>* Hinweis: Diese Errorlevels treten nicht bei Wildcards oder Dateisammlungen (mehrere Eingaben) auf.</p> |
<p>Die Errorlevels können in einer Stapelverwaltungsdatei |
(*.bat) folgendermaßen abgefragt werden:</p> |
<p><code>@ ECHO OFF<br> |
CODER "Mein Verzeichnis" /c "Mein Passwort" |
"Ausgabe.dc4"<br> |
<br> |
IF ERRORLEVEL 11 GOTO F11 <br> |
IF ERRORLEVEL 10 GOTO F10 <br> |
IF ERRORLEVEL 9 GOTO F9 <br> |
IF ERRORLEVEL 8 GOTO F8 <br> |
IF ERRORLEVEL 7 GOTO F7 <br> |
IF ERRORLEVEL 6 GOTO F6 <br> |
IF ERRORLEVEL 5 GOTO F5 <br> |
IF ERRORLEVEL 4 GOTO F4 <br> |
IF ERRORLEVEL 3 GOTO F3 <br> |
IF ERRORLEVEL 2 GOTO F2 <br> |
IF ERRORLEVEL 1 GOTO F1 <br> |
IF ERRORLEVEL 0 GOTO F0 <br> |
<br> |
:F0 <br> |
ECHO Alles OK, Errorlevel 0 <br> |
GOTO ENDE <br> |
<br> |
:F1 <br> |
ECHO DC4 Datei beschädigt, Errorlevel 1 <br> |
GOTO ENDE <br> |
<br> |
:F2 <br> |
ECHO Fehler bei Ver/Entschlüsselung, Errorlevel 2 <br> |
GOTO ENDE <br> |
<br> |
:F3 <br> |
ECHO Falsche Syntax oder Datei/Verzeichnis nicht gefunden, |
Errorlevel 3 <br> |
GOTO ENDE <br> |
<br> |
:F4 <br> |
ECHO Ausgabeverzeichnis konnte nicht erstellt werden, Errorlevel |
4 <br> |
GOTO ENDE <br> |
<br> |
:F5 <br> |
ECHO Datei konnte nicht zur Zielposition verschoben werden, |
Errorlevel 5 <br> |
GOTO ENDE <br> |
<br> |
:F6 <br> |
ECHO Quelldateien konnten nicht vollständig gelöscht werden. |
Errorlevel 6 <br> |
GOTO ENDE <br> |
<br> |
:F7 <br> |
ECHO Internes ZIP-Archiv fehlerhaft, Errorlevel 7 <br> |
GOTO ENDE <br> |
<br> |
:F8 <br> |
ECHO Datei oder Ordner konnte nicht oder nur teilweise entfernt werden, Errorlevel 8 <br> |
GOTO ENDE <br> |
<br> |
:F9 <br> |
ECHO Datei oder Ordner nicht gefunden, Errorlevel 9 <br> |
GOTO ENDE <br> |
<br> |
:F10 <br> |
ECHO Es existiert bereits eine zweite Instanz. Ein neues Fenster wurde geöffnet, ErrorLevel 10<br> |
GOTO ENDE <br> |
<br> |
:F11 <br> |
ECHO Schwerer Programminterner Fehler, ErrorLevel 11<br> |
GOTO ENDE <br> |
<br> |
:ENDE <br> |
PAUSE </code></p> |
<p>Soll keine Abfrage erfolgen, sonern nur eine einfache Ausgabe, |
kann auch die Variable %ERRORCODE% ausgegeben werden.</p> |
<p><code>@ ECHO OFF<br> |
CODER "Mein Verzeichnis" /c "Mein Passwort" |
"Ausgabe.dc4" <br> |
CODER "Ausgabe.dc4" /c "Falsches Passwort" |
"." <br> |
ECHO Das ErrorLevel ist: <br> |
ECHO %ERRORLEVEL% <br> |
PAUSE</code></p> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="3"><font size="5"><font class="ueberschrift">Temporäre Dateien</font></font></a></p> |
<p>(De)Coder ermittelt das temporäre Verzeichnis Ihres Systems |
bzw. des aktuell angemeldeten Benutzers. Bei Windows 9x ist dies |
gewöhnlicherweiße "C:\WINDOWS\TEMP", bei Windows XP |
"C:\Dokumente und Einstellungen\Benutzername\Lokale |
Einstellungen\Temp\".</p> |
<p><u>Das Programm erstellt folgende Dateien:</u></p> |
<ul> |
<li><b>DeCoder_[Sitzungskennung].zip:</b> Öffnet man einen Ordner zum |
Verschlüsseln, wird er gepackt. Anschließend wird |
die temporäre ZIP-Datei geöffnet. Sie wird außerdem erstellt, |
wenn man einen verschlüsselten Ordner entschlüsselt oder |
direkt öffnet. Es ist die Datei, die eigentlich in der DC4 enthalten ist.<br><br></li> |
<li><b>DeCoder_[Sitzungskennung].tmp:</b> Wenn eine Datei ver- oder |
entschlüsselt wird, wird sie erst als DeCoder.tmp |
gespeichert. Würde die Ver- oder Entschlüsselung fehlschlagen, |
dann würde die Zieldatei unnötig überschrieben werden. |
Die temporäre Datei wird anschließend zur Benutzerwahl |
umbenannt und verschoben.<br><br></li> |
<li><b>DeCoder_[Sitzungskennung].cmp:</b> Dateien und Ordner werden zusätzlich mit ZLib als CMP-Datei komprimiert, |
bevor sie verschlüsselt werden. Wenn entschlüsselt wird, dient die CMP-Datei |
als Dekompression der TMP-Datei, die anstelle dieser dann zur Zieldatei |
umbenannt/verschoben wird. Komprimierte ZIP-Dateien werden aber anschließend wieder zurück zu ZIP umbenannt |
(die gleichnamige Datei wird sicher gelöscht), damit sie entpackt werden kann.<br><br></li> |
<li><b>DeCoder_Sensitiv\[Sitzungskennung]\:</b> Hier werden Dateien oder Ordner |
gespeichert, die direkt geöffnet wurden. Der Ordner DeCoder_Sensitiv |
wird bei einer Reinigung komplett sicher gelöscht. Nach beendigung |
einer Sitzung wird nur der entsprechende Unterordner, der die aktuellen |
Sitzungsdaten enthät, gelöscht.</li> |
</ul> |
<p>Da diese Dateien sensible Daten enthalten löscht (De)Coder |
diese sofort nach Beendigung des Prozesses und überprüft bei |
Beendigung des Progamms nocheinmal, ob die Dateien auch gelöscht |
wurden und löscht diese gegebenenfalls. Vor dem Löschen dieser |
temporären Dateien werden diese nocheinmal komplett mit Daten |
überschrieben, sodass keine Rückstände auf der Festplatte |
bleiben. Zum Löschen der Daten wird nach Beendung von (De)Coder |
ein neue Instanz geöffnet, die sich sofort wieder von selbst |
beendet.</p> |
<p>Sollte (De)Coder nicht ordnungsgemäß beendet werden (z.B. |
durch einen Stromausfall oder eine sofortige Beendigung des |
Prozesses über den Taskmanager), bleiben die temporären Dateien erhalten und können |
selbst nach normalem Löschen (z.B. durch Windows) noch eingelesen |
werden. (De)Coder |
legt mehrere temporäre Dateien an, damit auch mehrere Fenster |
gleichzeitig geöffnet sein und arbeiten können. Nach jeder |
Beendung einer (De)Coder-Instanz wird versucht, alle temporären |
Daten der letzten (De)Coder-Instanz zu vernichten. Die restlichen |
ggf. vorhandenen Daten bleiben jedoch erhalten. Erst nach |
einem seperaten Löschauftrag (siehe Startmenü; es darf keine |
Instanz geöffnet sein) oder nach einem Systemneustart |
werden alle noch existierenden temporären gelöscht. Somit kommt es zu keinen |
Sicherheitslücken, wenn (De)Coder einmal durch einen |
Stromausfall oder Ähnliches ausfiel.</p> |
<p>Die Windows-Laufwerksbereinigung löscht nur temporäre Dateien, |
die älter als 1 Woche sind. In dieser Zeit wird (De)Coder mit |
den Reinigungsprozessen beim Systemstart ggf. bestehende Dateien |
gelöscht haben. Sie können jedoch trotzdem vor einer Laufwerksbereinigung |
die (De)Coder-Bereinigung über das Startmenü ausführen. Sie sollen |
keine Software verwenden, die temporäre Dateien automatisch entfernt, da |
diese Proramme ggf. temporäre (De)Coder-Dateien unsicher löscht.</p> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="4"><font size="5"><font class="ueberschrift">Versionsgeschichte</font></font></a></p> |
<p><strong>Version 1.0<br> |
</strong>Die Dateien werden über ein |
DOS-Programm verschlüsselt. Es werden nur die |
Buchstaben mit anderen ersetzt. </p> |
<p><strong>Version 2.0<br> |
</strong>Es verschlüsselt als Windowsprogramm. </p> |
<p><strong>Version 2.1<br> |
</strong>Es kann eine Zahl von 1 - 255 zum verschlüsseln |
ausgesucht werden. </p> |
<p><strong>Version 2.2<br> |
</strong>Es kann eine Zahl von 1 - 256 zum verschlüsseln |
ausgesucht werden. </p> |
<p><strong>Version 3.0<br> |
</strong>Nun kann auch ein Passwort eingegeben werden. </p> |
<p><strong>Version 3.1<br> |
</strong>Nun noch viel schneller beim |
verschlüsseln/entschlüsseln. </p> |
<p><strong>Version 3.2<br> |
</strong>Die Passworteingabe wird mit Sternchen |
(*) geschrieben. </p> |
<p><strong>Version 4.0 (Codename Gizeh)</strong><br> |
Die neue Version verschlüsselt mit den neusten |
Verschlüsselungsalgorithmen und ist im Vergleich zu seinen |
Vorgängern extrem sicher geworden. Der Sicherheitsstandard AES |
wird eingesetzt und mit einem 512 Bit Hash sowie einem 128 Bit |
Seed ergänzt.</p> |
<p><strong>Version 4.1 (Codename Newfoundland)</strong><br> |
Schlichteres Design, einige Fehler wurden behandelt und die Unterstützung |
für die französische Sprache hinzugefügt. Es gibt |
nun die seperate Möglichkeit, eine Datei oder einen Ordner |
zu vernichten sowie Objekte sicher zu verschieben. Schutz vor Keyloggern, neues |
Dateiformat, Direkt-Öffnen-Funktion, Wildcard-Unterstützung uvw.</p> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="5"><font size="5"><font class="ueberschrift">Funktionsweisen</font></font></a></p> |
<ul> |
<li><a href="funktionsweise_1.gif" target="_blank">Funktionsweise der Verschlüsselung von (De)Coder 4.1</a></li> |
<li><a href="funktionsweise_2.gif" target="_blank">Funktionsweise der Entschlüsselung von (De)Coder 4.1</a></li> |
<li><a href="funktionsweise_3.gif" target="_blank">Funktionsweise der Instanzenverwaltung von (De)Coder 4.1</a></li> |
<li><a href="http://www.viathinksoft.de/info/decoder/dc4-spec.txt" target="_blank">DC4-Dateienaufbau</a> (Internetlink, in Englisch)</li> |
</ul> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="6"><font size="5"><font class="ueberschrift">Lizenz</font></font></a></p> |
<code>LIZENZVEREINBARUNG FÜR (DE)CODER 4.1 VON DANIEL MARSCHALL<br> |
<br> |
(1) DEKLARATION DER SOFTWARE<br> |
<br> |
1.1 Die Software, die Sie installieren möchten, ist sowohl als "Freeware" als auch "OpenSource" deklariert, d.h. sie ist kostenlos und der Quelltext steht für jeden zur Verfügung.<br> |
<br> |
(2) WEITERGABEBEDINGUNGEN <br> |
<br> |
2.1 Sie sind berechtigt, die Software kostenlos zu kopieren und weiterzugeben sowie mithilfe des Quelltextes die Software für eigene Zwecke zu verändern.<br> |
<br> |
2.2 Nicht erlaubt ist es, eine veränderte Version dieser Software ohne Erlaubnis des Autors freizugeben oder zu veröffentlichen.<br> |
<br> |
2.3 Ebenfalls ist es nicht gestattet, die Software zu verkaufen. Für kommerzielle Nutzung sollte eine Erlaubnis des Autors eingeholt werden. Die Software darf nach Erlaubnis auf kommerziell vertriebene Datenträger z.B. von Zeitschriften oder anderen Produkten kopiert bzw. beigelegt werden.<br> |
<br> |
(3) HAFTUNGSAUSSCHLUSS<br> |
<br> |
3.1 Der Autor dieser Software haftet nicht für Schäden, die durch diese verursacht wurden. Des Weiteren haftet er nicht für Datenverluste, die durch ein versehentliches Vernichten von Dateien durch (De)Coder entstehen können. Vergisst der Benutzer das korrekte Passwort für eine von ihm verschlüsselte Datei, so ist diese nicht wiederherzustellen. In diesem Fall haftet der Autor ebenfalls für keine Datenverluste.<br> |
<br> |
3.2 Das Programm wurde gründlich getestet, aber trotzdem wird keine Haftung für Fehlfunktionen übernommen. Die Funktionsweise ist durch den offengelegten Quelltext frei ersichtlich und transparent. Das Produkt-Release wurde negativ auf Viren geprüft, trotzdem kann keine Garantie übernommen werden, dass das Setup-Package nach der Veröffentlichung bzw. nach dem Download z.B. durch einen Virus verändert oder infiziert wurde.<br> |
<br> |
3.3 Der Autor kann keine Haftung für Fehlfunktionen von Komponenten übernehmen, die von (De)Coder genutzt werden. Die verwendeten Komponenten liegen dem Quelltext bei.<br> |
<br> |
3.4 Der Autor ist nicht verpflichtet, die Kompatibilität zu alten Versionen beizubehalten oder veraltete Programmversionen für die Benutzer bereitzustellen.<br> |
<br> |
(4) ANMERKUNGEN<br> |
<br> |
4.1 Der Quelltext kann von <a href="http://www.viathinksoft.de/" target="_blank">www.viathinksoft.de</a> bezogen werden.<br> |
<br> |
4.2 Das Urheberrecht liegt bei Daniel Marschall. Alle Rechte sind vorbehalten.<br> |
<br> |
4.3 Durch die Installation der Software akzeptieren Sie die Vereinbarung und deren Bedingungen.<br> |
<br> |
4.4 Bitte beachten Sie die Bedingungen und Gesetze bezüglich Kryptografie in Ihrem Land.<br> |
<br> |
ENDE DER VEREINBARUNG</code> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
<p><a name="7"><font size="5"><font class="ueberschrift">Über dieses Programm</font></font></a></p> |
<p><strong>(De)Coder, Version 4.1</strong><br> |
Projektleiter: Daniel Marschall<br> |
Webseite: <a href="http://www.daniel-marschall.de/">www.daniel-marschall.de</a><br> |
E-Mail: <a href="mailto:info@daniel-marschall.de?subject=(De)Coder 4.1">info@daniel-marschall.de</a></p> |
<p>© Copyright 2001 - 2007 <a href="http://www.viathinksoft.de/" target="_blank">ViaThinkSoft</a>. |
Alle Rechte vorbehalten!</p> |
<p>Dieses Programm wurde mit <a href="http://www.borland.de/" target="_blank">Borland®</a> <a |
href="http://www.turboexplorer.de/" target="_blank">Turbo™ Delphi® für Win32® Explorer</a> |
erstellt und basiert auf dem <a |
href="http://dec.michael-puff.de/" target="_blank"><b>Delphi Encryption |
Compendium</b></a>, Version 5.1c von <a |
href="mailto:HaReddmann@t-online.de">Hagen Reddmann</a>.<br> |
Diese Software beinhaltet Verschlüsselungsalgorithmen (Cipher) |
sowie Prüfsummen-Algorithmen (Hash), die Urheberrechtlich |
geschützt sind.</p> |
<p>Die <a href="http://www.viathinksoft.de/keytransmitter/" target="_blank">sichere Schlüsselübertragung</a> sowie das Updatesystem von ViaThinkSoft sind zusätzliche |
Leistungen, die unabhängig von (De)Coder sind. Die Quelltext für diese Dienste sind derzeit |
nicht frei.</p> |
<p>Es wurden folgende VCLs bzw. Units verwendet:</p> |
<ul> |
<li>Ordner VCL_KAZIP<br> |
<a href="http://kadao.dir.bg/" target="_blank">KaZIP</a> 2.0 von <a href="mailto:kirila@abv.bg">Kiril Antonov</a> (abgeändert)<br> |
<a href="http://delphi.icm.edu.pl/authors/a0002263.htm" target="_blank">BZip</a> 1.03 von <a href="mailto:efmera@yahoo.com">Edison Mera Menéndez</a><br><br></li> |
<li>Ordner VCL_DRAGDROP:<br> |
<a href="http://www.angusj.com/delphi/" target="_blank">Drag and Drop Component Suite</a> 4.0 von <a href="mailto:angusj@myrealbox.com">Angus Johnson</a> und <a href="mailto:anders@melander.dk">Anders Melander</a><br><br></li> |
<li>Ordner VCL_DEC:<br> |
<a href="http://dec.michael-puff.de/" target="_blank">Delphi Encryption Compendium</a> 5.1c von <a href="mailto:HaReddmann@t-online.de">Hagen Reddmann</a><br><br></li> |
<!-- <li>Ordner VCL_XPMENU:<br> |
<a href="http://www.shagrouni.com/english/software/xpmenu.html" target="_blank">TXPMenu</a> 3.1 von <a href="mailto:khaled@shagrouni.com">Khaled Shagrouni</a><br><br></li> --> |
<li>Ordner INCLUDES:<br> |
<a href="http://assarbad.net/de/stuff/!import/nico.old/" target="_blank">OneInst.pas</a> von <a href="mailto:oliver@assarbad.net">Assarbad</a> (abgeändert)<br> |
<a href="http://www.delphipraxis.net/topic1153_base64+mime+endecoding.html" target="_blank">Base64.pas</a> von <a href="mailto:delphi3000@wischnewski.tv">Daniel Wischnewski</a><br><br></li> |
</ul> |
<p>Das Urheberrecht dieser Komponenten liegt bei den jeweiligen |
Autoren. Weitere Informationen entnehmen Sie bitte den Quelltexthinweisen, die dem Quelltext beiliegt.</p> |
<p>Systemmindestanforderungen:</p> |
<ul> |
<li><a href="http://www.microsoft.de/" target="_blank">Microsoft®</a> Windows™ 95 oder höher</li> |
<li>Kompatibel mit <a href="http://www.microsoft.de/" target="_blank">Microsoft®</a> Windows™ Vista™</li> |
<li>Borland® Delphi® 2005 Personal Edition oder höher für Quelltext</li> |
</ul> |
<p>Der Quelltext zu (De)Coder 4.1 ist bei ViaThinkSoft |
erhältlich (siehe <a |
href="http://www.viathinksoft.de/index.php?page=projektanzeige&seite=projekt-18" target="_blank">Projektseite</a>). |
</p> |
<p><a href="#i"><strong>Zurück zum Inhaltsverzeichnis</strong></a></p> |
</body> |
</html> |
/trunk/Quelltext/Language-Eng.ini |
---|
0,0 → 1,164 |
; (De)Coder Language File |
[Signature] |
Language=English |
Revision=April 1st, 2007 |
Translator=Daniel Marschall, Victor Negoescu |
Version=4.1 Public Beta 4b |
[MainForm] |
error=Error |
information=Information |
warning=Warning |
openhint=Open file... |
folderhint=Open folder... |
confighint=Open configuration... |
helphint=Help |
dechint=Decrypt file... |
enchint=Encrypt file... |
equal=Equal |
notequal=Unequal |
opened=Opened: |
location=Location: |
nofile=No file |
hasherror=Filechecksum isn't equal to the internal value. Probably the###file was manipulated or the password is incorrect. |
foldermessageopen=Please select the folder, which is to be packed into a ZIP file, in order to be encoded. |
foldermessagesave=Where should the encoded folder being moved to? |
helpnotfound=The help file could not be found. |
passwordsdifferent=The passwords are different! |
mkdirerror=Could not create target directory! |
status=State: |
encrypted=Encrypted with %s |
unencrypted=Unencrypted |
originalname=Original name: |
cryptmode=Mode: |
filetype=Filetype: |
filesize=Data size: |
password=Password: |
repassword=Validation: |
errorreading=The file could not be read. Probably it is damaged or in a not compatible file version. |
broken=Broken |
archivecorrupt=The ZIP file is damaged. |
moveerror=The output file could not be created. Probably a non-existing folder was supplied. |
equalhint=Are the two passwords identical? |
entropy=Security of the password, calculated by entropy |
securedelete=Delete the sourcefile securily after the process. |
capswarning=Warning: Caps Lock is activated! |
capslock=Caps Lock! |
encodedata=Encrypting data... |
decodedata=Decrypting data... |
zip_folder=Pack folder as ZIP file |
unzip_folder=Unzip tempoary ZIP file |
filter_all=All files |
filter_encrypted=Encrypted files |
deletefile=Safe deletion of source files... |
notdeleted=Source files could be deleted only partially or not at all. They are probably provided with a writing protection or are under use. |
cleaningerror=The tempoary files could be deleted only partially or not at all. They are probably provided with a writing protection or are under use. |
cleaningok=The tempoary files were deleted successfully. |
erase=Destroy irrevocablly! |
erasewarning=Warning! You are in the process deleting the up-to-date opened file and/or the up-to-date opened file irrevocablly. Since the data are several times overwritten, no re-establishment is more possible. This is useful, if you liked to delete sensitive data of your non removable disk.######Are you surely that you would like to continue? |
erasesuccessful=The file and/or the file was successfully destroyed. |
drive=Drive |
closefile=Close file |
delok=The files were successfully deleted. |
delerror=The files could be not deleted completely. |
fileorfoldernotfound=File and/or folder does not exist. |
nothingtoclean=There are no not deleted temporary files at the moment. |
exit=Exit |
actions=Actions |
help=Help |
file=File |
about=About... |
direct=Open file directly |
x-file=%s-File |
x-byte-seed=%d Byte Seed |
compressed=Compressed |
update_error=An error arosed. Probably you are not connected to the internet, or the ViaThinkSoft server is temporarly offline. |
update_no=There are no updates available. |
update_yes=A new version of this software is available. Do you want to download it? |
updates=Check for updates... |
compress=Compress data |
dateiensammlung=File collection |
wait_internet=Checking for newer version... |
dateisammlung_folder_add_message=Btte select you the folder, which is to be added to the file collection. |
dateiensammlung_neu=Create new |
dateiensammlung_add_file=Add file(s)... |
dateiensammlung_add_folder=Add folder... |
dateiensammlung_show=Show objects... |
web_email=Contact project leader |
web_keytransmitter=Secure key transmission (in German) |
web_ressources=Web-Resources |
web_dm=Daniel Marschall's web portal (in German) |
web_vts=ViaThinkSoft (in German) |
web_project=(De)Coder project page (in German) |
web_infopages= |
web_forum= |
[ConfigForm] |
information=Information |
caption=Configuration |
operatingsystem=Integration into the operating system |
confinfo1=Here you can affect the integration of (De)Coder into the operating system.###For this you need administrator rights. |
confinfo2=Encoded files and folders get the file extension DC4. |
confinfo3=Files and folders get the context menu entry "Open with (De)Coder". |
confinfo4=Files and folders get the context menu entry "Destroy with (De)Coder". |
confinfo5=Integrate secure-move into the Windows-Shell. |
restartinfo=Please note that Windows notices made changes possibly late. You should###restart your computer after the changes, so that they become effective. |
close=Close |
dc4file=(De)Coder %s File |
keycapt= |
keyinfo= |
bytes=Bytes |
[Activator] |
error=Error |
failed=An error aroused. Probably you have no administrator rights or the installation is broken. |
[ShlExt] |
openwith=Open object with (De)Coder |
multiplefiles=You selected several files and/or folders. For each element a new window of (De)Coder will be opened. Would you really like to continue the operation? |
multiplecaption=Open multiple files |
codermissing=Could not find (De)Coder. A reinstallation should solve this problem. |
error=Error |
context=Open with (De)Coder |
[ShlErase] |
sicherheitsfrage=Destroy object with (De)Coder |
sicherheitsfragecaption=Would you like to destroy these objects really irrevocablly? |
codermissing=Safety inquiry |
error=Could not find (De)Coder. A reinstallation should solve this problem. |
context=Error |
information=Destroy with (De)Coder |
delok=Information |
delerror=The files were deleted successfully. |
=The files could be not deleted completely. |
[SecureMove] |
title=&Secure Move |
description=Shifts the file, without leaving data remaining on the data medium. |
error_del=Error! The source object "%s" could be not completely destroyed after copying. |
error_copy=Error! The directory "%s" could not be copied to the destination "%s". Windows returned the error code "%d" |
wait=Please wait... |
[AboutForm] |
about=About... |
installedlang=Installed language |
leader=Project leader: %s |
version=Version %s |
copyright=© Copyright %d - %d %s. All rights reserved! |
lang=Autor: |
translator=Translator: |
revision=Revision: |
ok=OK |
[WartenForm] |
wait=Please wait... |
exit=Exit |
[ElementeForm] |
close=Close |
remove=Remove |
caption=Elements of the file-collection |
add_file=Add file(s)... |
add_folder=Add a folder... |
/trunk/Quelltext/Language-Fr.ini |
---|
0,0 → 1,164 |
; (De)Coder Language File |
[Signature] |
Language=Français |
Revision=1 avril 2007 |
Translator=Daniel Marschall, Andrea Zelenka |
Version=4.1 Public Beta 4b |
[MainForm] |
error=Erreur |
information=Avertissement |
warning=Informations |
openhint=Ouvrir le fichier... |
folderhint=Ouvrir le dossier... |
confighint=Ouvrir la configuration... |
helphint=L'aide |
dechint=Décoder le fichier... |
enchint=Coder le fichier... |
equal=Égal |
notequal=Différent |
opened=Ouvert: |
location=Localité: |
nofile=Aucun fichier |
hasherror=La somme de contrôle du fichier ne correspond pas à l'entrée interne. Le fichier a###probablement été manipulé ou le mot de passe n'est pas correct. |
foldermessageopen=Veuillez choisir le dossier qui doit être emballé dans un fichier ZIP pour être codé. |
foldermessagesave=Où le dossier décodé, doit-il être déplacé? |
helpnotfound=Le fichier d'aide n'a pas été trouvé. |
passwordsdifferent=Les deux mots de passe sont différents! |
mkdirerror=Le repertoire objectif ne pouvait pas être établi! |
status=Statut: |
encrypted=Codé avec %s |
unencrypted=Non codé |
originalname=Nom original: |
cryptmode=Mode: |
filetype=Type de fichier: |
filesize= |
password=Mot de passe: |
repassword=Confirmation: |
errorreading=Le fichier ne pouvait pas être entré par lecture directe. Elle est probablement endommagée ou dans une version de fichier non compatible. |
broken=Endommagé |
archivecorrupt=Le fichier ZIP, dans le quel se trouve contenu du dossier est endommagé. |
moveerror=Le fichier de sortie ne pouvait pas être fourni. Un fichier non existant a probablement été indiqué. |
equalhint=Annonce, si les deux mots de passe sont identiques |
entropy=Sécurité du mot de passe, calculé par une entropie |
securedelete=Supprimer sûrement des fichier(s) après codage/décodage |
capswarning=Avertissement: La touche de blocage est activée! |
capslock=La touche de blocage! |
encodedata=Coder les données... |
decodedata=Décoder les données... |
zip_folder=Emballer le dossier comme fichier ZIP |
unzip_folder=Déballer des fichiers ZIP tempoaires |
filter_all=Tous les fichiers |
filter_encrypted=Fichiers codés |
deletefile=Suppression garantie des fichiers de source... |
notdeleted=Les fichiers temporaires ne pouvaient qu'en partie ou pas du tout être supprimés. Ils sont probablement fournis avec une protection d'écriture ou sont en train d'être utilisés. |
cleaningerror=Les fichiers temporaires ne pouvaient qu'en partie ou pas du tout être supprimés. Ils sont probablement fournis avec une protection d'écriture ou sont en train d'être utilisés. |
cleaningok=Les fichiers temporaires ont été supprimés avec succès. |
erase=Détruire Irrévocablement ! |
erasewarning=Avertissement! Ils sont sur le point de supprimer irrévocablement le fichier ouvert actuellement et/ou le fichier ouvert actuellement. Puisque les données sont recouvertes plusieurs fois, aucun rétablissement n'est plus possible. Cela est utile, si vous vouliez supprimer des données sensibles de votre disque dur.######Êtes vous sûrement que vous voudriez continuer? |
erasesuccessful=Le fichier et/ou le fichier a été détruit avec succès. |
drive=Lecteur |
closefile=Fermer fichier |
delok=Les fichiers ont été supprimés avec succès. |
delerror=Les fichiers ne pouvaient pas être supprimés complètement. |
fileorfoldernotfound=Le fichier et/ou le fichier n'existe pas. |
nothingtoclean=Il n'y a pas actuellement de fichiers temporaires non supprimés. |
exit=Terminier |
actions=Actions |
help=Aide |
file=Fichier |
about= |
direct= |
x-file= |
x-byte-seed=%d Byte Seed |
compressed=Comprimé |
update_error= |
update_no= |
update_yes= |
updates=Examiner une mise à jour de logiciel... |
compress= |
dateiensammlung= |
wait_internet= |
dateisammlung_folder_add_message= |
dateiensammlung_neu= |
dateiensammlung_add_file= |
dateiensammlung_add_folder= |
dateiensammlung_show= |
web_email= |
web_keytransmitter= |
web_ressources= |
web_dm= |
web_vts= |
web_project= |
web_infopages= |
web_forum= |
[ConfigForm] |
information=Informations |
caption=Configuration |
operatingsystem=Fusion dans le système d'exploitation |
confinfo1=Ici, la fusion plus (De)Coder dans le système d'exploitation peut être###influencée. Pour cela des droits d'administration sont nécessaires. |
confinfo2=Des fichiers et dossiers codés ont l'élargissement de fichier DC4. |
confinfo3=Des fichiers et des dossiers ont l'entrée de menu de contexte###"Ouvrir avec plus (De)Coder". |
confinfo4=Des fichiers et des fichiers ont l'entrée de menu de contexte "Détruire avec plus (De)Coder". |
confinfo5=Des objets peuvent garantie être décalés sur celui coquille Windows. |
restartinfo=Veuillez considérer que Windows remarque les modifications peut-être trop tard.###Vous devriez remettre en marche l'ordinateur d'après les modifications, de sorte###que les modifications deviennent efficaces. |
close=Fermeture |
dc4file=Fichier de (De)Coder %s |
keycapt= |
keyinfo= |
bytes=Bytes |
[Activator] |
error=Erreur |
failed= |
[ShlExt] |
openwith=Ouvrir l'objet avec plus (De)Coder |
multiplefiles=Vous avez choisi plusieurs fichiers ou dossiers. Pour chaque élément, une nouvelle fenêtre de (De)Coder s'ouvrira. voulez-vous continuer le processus vraiment? |
multiplecaption=Ouvrir plusieurs fichiers |
codermissing=Ne pouvait pas trouver (De)Coder. Une nouvelle installation de l'application pourrait réparer le problème. |
error=Erreur |
context=Ouvrir avec plus (De)Coder |
[ShlErase] |
sicherheitsfrage=L'objet détruire avec (De)Coder |
sicherheitsfragecaption=Voudriez-vous détruire vraiment irrévocablement ces objets? |
codermissing=Interrogation de sécurité |
error=Ne pouvait pas plus (De)Coder trouver. Une nouvelle installation de l'application pourrait réparer le problème. |
context=Erreur |
information=Détruire avec (De)Coder |
delok=Avertissement |
delerror=Les fichiers ont été supprimés avec succès. |
=Les fichiers ne pouvaient pas être supprimés complètement. |
[SecureMove] |
title=Décaler &sûrement |
description=Décale le fichier, sans laisser des données sur le support de données autres. |
error_del= |
error_copy= |
wait=Attendre, s'il vous plaît... |
[AboutForm] |
about= |
installedlang=Langue installationne |
leader=Chef de projet: %s |
version=Version %s |
copyright=© Copyright %d - %d %s. Tous les droits réserver! |
lang=Auteur: |
translator=Traducteur: |
revision=Révision: |
ok=D'accord |
[WartenForm] |
wait=Attendre, s'il vous plaît... |
exit=Terminer |
[ElementeForm] |
close=Fermeture |
remove= |
caption=Elements de collection des fichiers |
add_file= |
add_folder= |
/trunk/Quelltext/Language.ini |
---|
0,0 → 1,163 |
; (De)Coder Language File |
[Signature] |
Language=Deutsch |
Revision=1. April 2007 |
Translator=Daniel Marschall |
Version=4.1 Public Beta 4b |
[MainForm] |
error=Fehler |
information=Information |
warning=Warnung |
openhint=Datei(en) öffnen... |
folderhint=Ordner öffnen... |
confighint=Konfiguration aufrufen... |
helphint=Hilfe aufrufen |
dechint=Datei entschlüsseln... |
enchint=Datei verschlüsseln... |
equal=Gleich |
notequal=Ungleich |
opened=Geöffnet: |
location=Ort: |
nofile=Keine Datei |
hasherror=Dateiprüfsumme stimmt nicht mit dem internen Eintrag überein.###Wahrscheinlich wurde die Datei manipuliert oder das Passwort ist inkorrekt. |
foldermessageopen=Bitte wählen Sie den Ordner aus, der in eine ZIP-Datei gepackt werden soll, um verschlüsselt zu werden. |
foldermessagesave=Wohin soll der Ordner, der entschlüsselt wird, verschoben werden? |
helpnotfound=Die Hilfedatei wurde nicht gefunden. |
passwordsdifferent=Die beiden Passwörter sind unterschiedlich! |
mkdirerror=Zielverzeichnis konnte nicht angelegt werden! |
status=Status: |
encrypted=Verschlüsselt mit %s |
unencrypted=Unverschlüsselt |
originalname=Originaler Name: |
cryptmode=Modus: |
filetype=Dateityp: |
filesize=Datenmenge: |
password=Passwort: |
repassword=Bestätigung: |
errorreading=Die Datei konnte nicht eingelesen werden. Wahrscheinlich###ist sie beschädigt oder in einer nicht kompatiblen Dateiversion. |
broken=Beschädigt |
archivecorrupt=Die ZIP-Datei, in der sich die Ordnerinhalte befinden, ist beschädigt. |
moveerror=Die Ausgabedatei konnte nicht erstellt werden. Wahrscheinlich wurde ein nicht existierender Ordner angegeben. |
equalhint=Anzeige, ob beide Passwörter gleich sind |
entropy=Sicherheit des Passwortes, errechnet durch Entropie |
securedelete=Quelldatei(en) nach der Ver-/Entschlüsselung sicher löschen (außer beim direkten Öffnen) |
capswarning=Warnung: Feststelltaste ist aktiviert! |
capslock=Feststelltaste! |
encodedata=Verschlüsseln der Daten... |
decodedata=Entschlüsseln der Daten... |
zip_folder=Ordner als ZIP-Datei packen |
unzip_folder=Temporäre ZIP-Datei entpacken |
filter_all=Alle Dateien |
filter_encrypted=Verschlüsselte Dateien |
deletefile=Sicheres Löschen der Quelldateien... |
notdeleted=Die Quelldateien konnten nur zum Teil oder gar nicht gelöscht werden. Sie sind wahrscheinlich mit einem Schreibschutz versehen oder sind gerade unter Benutzung. |
cleaningerror=Die temporären Dateien konnten nur zum Teil oder gar nicht gelöscht werden. Sie sind wahrscheinlich mit einem Schreibschutz versehen oder sind gerade unter Benutzung. |
cleaningok=Die temporären Dateien wurden erfolgreich gelöscht. |
erase=Unwiderruflich vernichten! |
erasewarning=Warnung! Sie sind im Begriff, die aktuell geöffnete Datei bzw. den aktuell geöffneten Ordner unwiderruflich zu löschen. Da die Daten mehrmals überschrieben werden, ist keine Wiederherstellung mehr möglich. Dies ist nützlich, wenn Sie sensible Daten von Ihrer Festplatte löschen möchten.######Sind Sie sicher, dass Sie fortfahren möchten? |
erasesuccessful=Die Datei bzw. der Ordner wurde erfolgreich vernichtet. |
drive=Laufwerk |
closefile=Datei schließen |
delok=Die Dateien wurden erfolgreich gelöscht. |
delerror=Die Dateien konnten nicht vollständig gelöscht werden. |
fileorfoldernotfound=Datei bzw. Ordner existiert nicht. |
nothingtoclean=Es gibt derzeit keine nicht gelöschten temporären Dateien. |
exit=Beenden |
actions=Aktionen |
help=Hilfe |
file=Datei |
about=Über... |
direct=Datei direkt öffnen |
x-file=%s-Datei |
x-byte-seed=%d Byte Seed |
compressed=Komprimiert |
update_error=Ein Fehler ist aufgetreten. Wahrscheinlich ist keine Internetverbindung aufgebaut, oder der der ViaThinkSoft-Server temporär offline. |
update_no=Es ist keine neue Programmversion vorhanden. |
update_yes=Eine neue Programmversion ist vorhanden. Möchten Sie diese jetzt herunterladen? |
updates=Softwareaktualisierung prüfen... |
compress=Daten komprimieren |
dateiensammlung=Dateiensammlung |
wait_internet=Rufe Internetinformationen ab... |
dateisammlung_folder_add_message=Btte wählen Sie den Ordner aus, der zu der Dateisammlung hinzugefügt werden soll. |
dateiensammlung_neu=Neue erstellen |
dateiensammlung_add_file=Datei(en) hinzufügen... |
dateiensammlung_add_folder=Ordner hinzufügen... |
dateiensammlung_show=Elemente anzeigen... |
web_email=Projektleiter kontaktieren |
web_keytransmitter=Sichere Schlüsselübermittlung |
web_ressources=Ressourcen im Web |
web_dm=Daniel Marschall's Webportal |
web_vts=ViaThinkSoft |
web_project=(De)Coder Projektseite |
web_infopages=(De)Coder InfoPages |
web_forum=(De)Coder Forum im DevBoard |
[ConfigForm] |
information=Information |
caption=Konfiguration |
operatingsystem=Einbindung in das Betriebssystem |
confinfo1=Hier kann die Einbindung von (De)Coder in das Betriebssystem beeinflusst werden.###Hierzu werden Administrationsrechte benötigt. |
confinfo2=Verschlüsselte Dateien und Ordner haben die Dateierweiterung DC4. |
confinfo3=Dateien und Ordner haben den Kontextmenüeintrag "Mit (De)Coder öffnen". |
confinfo4=Dateien und Ordner haben den Kontextmenüeintrag "Mit (De)Coder vernichten". |
confinfo5=Objekte können über die Windows-Shell sicher verschoben werden. |
restartinfo=Bitte beachten Sie, dass Windows die Änderungen möglicherweise verspätet bemerkt.###Sie sollten den Computer nach den Änderungen neu starten, sodass die Änderungen###wirksam werden. |
close=Schließen |
dc4file=(De)Coder %s Datei |
keycapt=Maximale Keyloggerschutzbytes |
keyinfo=Legt fest, wie viele Bytes Datenmüll maximal pro Tastendruck innerhalb eines Passwortfeldes###gesendet werden dürfen. Der Schutz ist deaktiviert, wenn der Wert 0 eingegeben wird.###Je höher der Wert ist, desto mehr wird der PC bei der Passworteingabe ausgelastet,###was zur Folge haben kann, dass Tastendrücke verloren gehen können. Standardwert: %d Bytes. |
bytes=Bytes |
[Activator] |
error=Fehler |
failed=Ein Fehler ist aufgetreten. Wahrscheinlich verfügen Sie nicht über###Administratorrechte an diesem System oder die Installation ist beschädigt. |
[ShlExt] |
openwith=Objekt mit (De)Coder öffnen |
multiplefiles=Sie haben mehrere Dateien oder Ordner ausgewählt. Für jedes Element wird sich ein neues Fenster von (De)Coder öffnen. Möchten Sie den Vorgang wirklich fortsetzen? |
multiplecaption=Öffnen mehrerer Dateien |
codermissing=Konnte (De)Coder nicht finden. Eine Neuinstallation der Anwendung könnte das Problem beheben. |
error=Fehler |
context=Mit (De)Coder öffnen |
[ShlErase] |
sicherheitsfrage=Möchten Sie diese Objekte wirklich unwiderruflich vernichten? |
sicherheitsfragecaption=Sicherheitsabfrage |
codermissing=Konnte (De)Coder nicht finden. Eine Neuinstallation der Anwendung könnte das Problem beheben. |
error=Fehler |
context=Mit (De)Coder vernichten |
information=Information |
delok=Die Dateien wurden erfolgreich gelöscht. |
delerror=Die Dateien konnten nicht vollständig gelöscht werden. |
[SecureMove] |
title=&Sicheres Verschieben |
description=Verschiebt die Datei, ohne Daten auf dem Datenträger übrig zu lassen. |
error_del=Fehler! Das Quellobjekt "%s" konnte nach dem Kopieren nicht vollständig vernichtet werden. |
error_copy=Fehler! Das Verzeichnis "%s" konnte nicht an den Zielort "%s" kopiert werden. Windows gab den Fehlercode "%d" zurück |
wait=Bitte warten... |
[AboutForm] |
about=Über... |
installedlang=Installierte Sprache |
leader=Projektleiter: %s |
version=Version %s |
copyright=© Copyright %d - %d %s. Alle Rechte vorbehalten! |
lang=Sprache: |
translator=Übersetzer: |
revision=Revision: |
ok=OK |
[WartenForm] |
wait=Bitte warten... |
exit=Beenden |
[ElementeForm] |
close=Schließen |
remove=Entfernen |
caption=Elemente der Dateisammlung |
add_file=Datei(en) hinzufügen... |
add_folder=Ordner hinzufügen... |
/trunk/Quelltext/Main.dfm |
---|
0,0 → 1,1489 |
object MainForm: TMainForm |
Left = 353 |
Top = 279 |
BorderIcons = [biSystemMenu, biMinimize] |
BorderStyle = bsSingle |
Caption = '#' |
ClientHeight = 298 |
ClientWidth = 492 |
Color = clBtnFace |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [] |
Menu = mainmenu |
OldCreateOrder = False |
Position = poDesktopCenter |
OnClose = form_close |
OnCloseQuery = form_closequery |
OnCreate = form_create |
OnShow = form_show |
PixelsPerInch = 96 |
TextHeight = 13 |
object img_type: TImage |
Left = 8 |
Top = 16 |
Width = 32 |
Height = 32 |
Transparent = True |
end |
object lbl_vle5: TLabel |
Left = 56 |
Top = 80 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_vle6: TLabel |
Left = 56 |
Top = 96 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_vle3: TLabel |
Left = 56 |
Top = 48 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_vle4: TLabel |
Left = 56 |
Top = 64 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_passwort: TLabel |
Left = 8 |
Top = 155 |
Width = 7 |
Height = 13 |
Caption = '#' |
Visible = False |
end |
object lbl_passwort2: TLabel |
Left = 8 |
Top = 179 |
Width = 7 |
Height = 13 |
Caption = '#' |
Visible = False |
end |
object img_warning: TImage |
Left = 8 |
Top = 265 |
Width = 16 |
Height = 16 |
Cursor = crHelp |
ParentShowHint = False |
ShowHint = True |
Transparent = True |
Visible = False |
end |
object lbl_capswarning: TLabel |
Left = 32 |
Top = 267 |
Width = 7 |
Height = 13 |
Cursor = crHelp |
Caption = '#' |
ParentShowHint = False |
ShowHint = True |
Transparent = True |
Visible = False |
end |
object lbl_entropy: TLabel |
Left = 344 |
Top = 155 |
Width = 9 |
Height = 13 |
Cursor = crHelp |
Caption = '#' |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [fsBold] |
ParentFont = False |
ParentShowHint = False |
ShowHint = True |
Transparent = True |
Visible = False |
end |
object lbl_equal: TLabel |
Left = 344 |
Top = 179 |
Width = 9 |
Height = 13 |
Cursor = crHelp |
Caption = '#' |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [fsBold] |
ParentFont = False |
ParentShowHint = False |
ShowHint = True |
Transparent = True |
Visible = False |
end |
object lbl_vle2: TLabel |
Left = 56 |
Top = 32 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_vle1: TLabel |
Left = 56 |
Top = 16 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object img_error: TImage |
Left = 16 |
Top = 145 |
Width = 16 |
Height = 16 |
ParentShowHint = False |
ShowHint = False |
Transparent = True |
Visible = False |
end |
object lbl_readerror: TLabel |
Left = 40 |
Top = 147 |
Width = 7 |
Height = 13 |
Caption = '#' |
ParentShowHint = False |
ShowHint = False |
Transparent = True |
Visible = False |
end |
object lbl_vle7: TLabel |
Left = 56 |
Top = 112 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object edt_passwort: TEdit |
Left = 88 |
Top = 152 |
Width = 249 |
Height = 21 |
PasswordChar = '*' |
TabOrder = 0 |
Visible = False |
OnChange = edt_passwort_change |
OnEnter = edt_passwort_enter |
OnKeyPress = edt_passwort_keypress |
end |
object edt_passwort2: TEdit |
Left = 88 |
Top = 176 |
Width = 249 |
Height = 21 |
PasswordChar = '*' |
TabOrder = 1 |
Visible = False |
OnChange = edt_password2_change |
OnEnter = edt_passwort_enter |
OnKeyPress = edt_passwort2_keypress |
end |
object chk_securedelete: TCheckBox |
Left = 8 |
Top = 224 |
Width = 473 |
Height = 17 |
Caption = '#' |
Enabled = False |
TabOrder = 3 |
Visible = False |
end |
object edt_vle1: TEdit |
Left = 144 |
Top = 16 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
Color = clBtnFace |
ReadOnly = True |
TabOrder = 9 |
Text = '-' |
end |
object edt_vle2: TEdit |
Left = 144 |
Top = 32 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 10 |
Text = '-' |
end |
object edt_vle3: TEdit |
Left = 144 |
Top = 48 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 11 |
Text = '-' |
end |
object edt_vle4: TEdit |
Left = 144 |
Top = 64 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 12 |
Text = '-' |
end |
object edt_vle5: TEdit |
Left = 144 |
Top = 80 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 13 |
Text = '-' |
end |
object edt_vle6: TEdit |
Left = 144 |
Top = 96 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 14 |
Text = '-' |
end |
object edt_vle7: TEdit |
Left = 144 |
Top = 112 |
Width = 337 |
Height = 21 |
TabStop = False |
BevelInner = bvNone |
BevelOuter = bvNone |
BorderStyle = bsNone |
ParentColor = True |
ReadOnly = True |
TabOrder = 15 |
Text = '-' |
end |
object b_encrypt: TBitBtn |
Left = 304 |
Top = 256 |
Width = 169 |
Height = 25 |
Caption = '#' |
TabOrder = 8 |
Visible = False |
OnClick = m_encrypt_execute |
Glyph.Data = { |
F6000000424DF600000000000000760000002800000010000000100000000100 |
04000000000080000000120B0000120B00001000000000000000000000000000 |
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 |
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000003 |
3333333300888880033333307787078770333308888707888803330777880887 |
7703330888800088880333077770007777033308888888888803333000000000 |
0033333308033308033333330803330803333333080333080333333377800087 |
7333333330888880333333333300000333333333333333333333} |
end |
object b_decrypt: TBitBtn |
Left = 304 |
Top = 256 |
Width = 169 |
Height = 25 |
Caption = '#' |
TabOrder = 7 |
Visible = False |
OnClick = m_decrypt_execute |
Glyph.Data = { |
F6000000424DF600000000000000760000002800000010000000100000000100 |
04000000000080000000120B0000120B00001000000000000000000000000000 |
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 |
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000003 |
3333333300888880033333307787078770333308888707888803330777880887 |
770333088880008888033307777000777703B3088888888888033B3000000000 |
003333BBBB3333080333BBBB707BB308033333BB0803330803333B3B08033308 |
0333B33B778000877333333B308888803333333B330000033333} |
end |
object b_direct: TBitBtn |
Left = 128 |
Top = 256 |
Width = 169 |
Height = 25 |
Caption = '#' |
TabOrder = 6 |
Visible = False |
OnClick = m_direct_execute |
Glyph.Data = { |
36040000424D3604000000000000360000002800000010000000100000000100 |
2000000000000004000000000000000000000000000000000000FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00FF000000 |
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF0000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF000000000000848400008484000000000000000000000000000000 |
0000C6C6C600000000000084840000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF000000000000848400008484000000000000000000000000000000 |
0000C6C6C600000000000084840000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF000000000000848400008484000000000000000000000000000000 |
000000000000000000000084840000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF000000000000848400008484000084840000848400008484000084 |
840000848400008484000084840000000000FF00FF00FF00FF00000000000000 |
0000FF00FF000000000000848400008484000000000000000000000000000000 |
000000000000008484000084840000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6 |
C600C6C6C600000000000084840000000000FF00FF0000000000FF00FF00FF00 |
FF00FF00FF00000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6 |
C600C6C6C600000000000084840000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6 |
C600C6C6C600000000000000000000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00000000000084840000000000C6C6C600C6C6C600C6C6C600C6C6 |
C600C6C6C60000000000C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 |
0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00FF0000000000FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000} |
end |
object b_open: TBitBtn |
Left = 129 |
Top = 256 |
Width = 169 |
Height = 25 |
Caption = '#' |
TabOrder = 4 |
OnClick = m_open_execute |
Glyph.Data = { |
F6000000424DF600000000000000760000002800000010000000100000000100 |
04000000000080000000130B0000130B00001000000000000000000000000000 |
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 |
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0033333333B333 |
333B3BB3777BB7777BB333B0000000000B333330FFFFFFFF07333330FFFFFFFF |
07333330F00F000F07333330FFFFFFFF0733BBB0F0000F0F0BB33BB0FFFFFFFF |
0BBB3330F00F000003333330FFFF0FF033333330F08F0F0B33333330FFFF003B |
B33333B000000333BB333BB3333BB3333BB3B333333B3333333B} |
end |
object b_folder: TBitBtn |
Left = 304 |
Top = 256 |
Width = 169 |
Height = 25 |
Caption = '#' |
TabOrder = 5 |
OnClick = m_folder_execute |
Glyph.Data = { |
36040000424D3604000000000000360000002800000010000000100000000100 |
2000000000000004000000000000000000000000000000000000FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000 |
0000008484000084840000848400008484000084840000848400008484000084 |
84000084840000000000FF00FF00FF00FF00FF00FF00FF00FF000000000000FF |
FF00000000000084840000848400008484000084840000848400008484000084 |
8400008484000084840000000000FF00FF00FF00FF00FF00FF0000000000FFFF |
FF0000FFFF000000000000848400008484000084840000848400008484000084 |
840000848400008484000084840000000000FF00FF00FF00FF000000000000FF |
FF00FFFFFF0000FFFF0000000000008484000084840000848400008484000084 |
84000084840000848400008484000084840000000000FF00FF0000000000FFFF |
FF0000FFFF00FFFFFF0000FFFF00000000000000000000000000000000000000 |
00000000000000000000000000000000000000000000000000000000000000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF |
FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF |
FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF |
FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000FF |
FF00FFFFFF0000FFFF0000000000000000000000000000000000000000000000 |
000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 |
00000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00000000000000000000000000FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00 |
FF00FF00FF00FF00FF0000000000FF00FF0000000000FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 |
00000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 |
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} |
end |
object chk_compress: TCheckBox |
Left = 8 |
Top = 208 |
Width = 473 |
Height = 17 |
Caption = '#' |
Checked = True |
State = cbChecked |
TabOrder = 2 |
Visible = False |
end |
object dlg_open: TOpenDialog |
Options = [ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing] |
Left = 392 |
Top = 176 |
end |
object dlg_save_dec: TSaveDialog |
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing] |
Left = 424 |
Top = 176 |
end |
object dlg_save_enc: TSaveDialog |
DefaultExt = '.dc4' |
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing] |
Left = 456 |
Top = 176 |
end |
object tmr_capslock: TTimer |
Enabled = False |
Interval = 10 |
OnTimer = tmr_capslock_timer |
Left = 424 |
Top = 144 |
end |
object imagelist: TImageList |
Left = 456 |
Top = 144 |
Bitmap = { |
494C010113001800040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 |
0000000000003600000028000000400000006000000001002000000000000060 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
00007F7F7F007F7F7F007F7F7F0000FFFF0000FFFF007F7F7F007F7F7F007F7F |
7F007F7F7F0000FFFF0000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000FFFF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F0000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 |
0000000000000000FF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F0000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF000000000000000000FFFFFF000000 |
00000000000000000000FFFFFF00000000000000000000000000000000000000 |
0000000000000000FF000000FF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F0000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000FF000000FF000000 |
FF000000FF000000FF000000FF000000FF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F0000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF0000000000BFBFBF00000000000000 |
0000FFFFFF0000000000FFFFFF0000000000000000000000FF000000FF000000 |
FF000000FF000000FF000000FF000000FF000000FF0000000000008484000084 |
8400000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000FFFF0000FFFF000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000000000FFFF0000FFFF00000000000000000000000000000000000000 |
00000000FF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000FF000000FF000000 |
FF000000FF000000FF000000FF000000FF000000000000848400008484000084 |
8400008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000000000FFFF0000FFFF0000FFFF000000000000000000000000000000 |
00000000FF000000FF0000000000FFFFFF000000000000000000FFFFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000FF000000FF00000000000084840000848400008484000084 |
8400008484000084840000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000FF000000FF000000FF000000 |
FF000000FF000000FF000000FF0000000000FFFFFF00FFFFFF00FFFFFF000000 |
0000FFFFFF00FFFFFF000000000000000000000000000000000000000000FFFF |
FF00000000000000FF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 |
0000000000000000000000000000000000000000FF000000FF000000FF000000 |
FF000000FF000000FF000000FF000000FF0000000000BFBFBF00FFFFFF000000 |
0000FFFFFF0000000000000000000000000000000000000000000000000000FF |
FF000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000000000FF |
FF00000000000000000000000000000000000000FF000000FF000000FF000000 |
FF000000FF000000FF000000FF0000000000FFFFFF00FFFFFF00FFFFFF000000 |
000000000000000000000000000000000000000000000000000000000000FFFF |
FF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000FF |
FF0000FFFF000000000000000000000000000000000000000000000000000000 |
00000000FF000000FF0000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000000000000000000000000000FF |
FF00FFFFFF0000FFFF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000FFFF0000FFFF0000000000000000000000000000000000000000000000 |
00000000FF000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
00000000000000FFFF0000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 |
00000000000000000000BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000007F7F7F0000FFFF007F7F |
7F00000000000000000000000000FFFFFF000000000000000000FFFFFF000000 |
000000000000FFFFFF0000000000000000000000000000000000000000000000 |
00007F7F7F007F7F7F00BFBFBF007F7F7F00000000007F7F7F00BFBFBF007F7F |
7F007F7F7F000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000FFFF000080800000FFFF000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000FFFF0000FFFF0000FF |
FF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF000000000000000000000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF007F7F7F00000000007F7F7F00BFBFBF00BFBF |
BF00BFBFBF00BFBFBF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000080800000FFFF00000000000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF007F7F7F007F7F7F007F7F7F00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF0000000000000000007F7F7F0000FFFF007F7F |
7F00000000000000000000000000FFFFFF000000000000000000000000000000 |
0000FFFFFF00FFFFFF0000000000000000000000000000000000000000007F7F |
7F007F7F7F007F7F7F00BFBFBF00BFBFBF0000000000BFBFBF00BFBFBF007F7F |
7F007F7F7F007F7F7F0000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000FFFF000080 |
800000FFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF000000000000000000000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF00000000000000000000000000BFBFBF00BFBF |
BF00BFBFBF00BFBFBF0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF000080800000FF |
FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF007F7F7F007F7F7F007F7F7F007F7F7F007F7F7F007F7F7F00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF000000000000000000FFFFFF000000 |
0000000000000000000000000000000000000000000000000000000000007F7F |
7F007F7F7F007F7F7F007F7F7F000000000000000000000000007F7F7F007F7F |
7F007F7F7F007F7F7F000000000000000000000000007F7F7F00000000000000 |
000000000000000000000000000000000000000000000080800000FFFF000000 |
00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000FF000000FF000000FF00000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 |
0000FFFFFF00FFFFFF00000000000000000000FFFF000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBF |
BF00BFBFBF00BFBFBF0000000000000000007F7F7F000000000000FFFF0000FF |
FF0000FFFF00000000000000000000FFFF000080800000FFFF00000000000000 |
00000000000000000000000000000000000000000000FFFFFF007F7F7F007F7F |
7F007F7F7F00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000FF00FF00000000FF0000000000000000000000000000000000000000 |
0000000000000000000000000000FFFFFF0000000000BFBFBF00FFFFFF000000 |
0000FFFFFF000000000000000000000000000000000000FFFF00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF0000FF |
FF0000FFFF0000FFFF0000FFFF000080800000FFFF0000000000000000000000 |
00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000FF0000FF00000000FF0000000000000000000000FF000000FF000000 |
FF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 |
000000000000000000000000000000000000000000000000000000FFFF0000FF |
FF0000FFFF0000FFFF000000000000000000000000000000000000000000BFBF |
BF00000000000000000000000000000000000000000000FFFF0000FFFF0000FF |
FF0000FFFF0000FFFF0000FFFF0000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000FF000000FF000000 |
FF00000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000FF |
FF007F7F7F00000000007F7F7F0000FFFF0000FFFF000000000000000000BFBF |
BF00000000000000000000000000000000000000000000FFFF0000FFFF000000 |
0000000000000080800000FFFF0000FFFF00000000007F7F7F00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000FF000000FF000000 |
FF00000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000FFFF0000FF |
FF0000000000BFBFBF000000000000000000000000000000000000000000BFBF |
BF00000000000000000000000000000000007F7F7F007F7F7F0000FFFF000000 |
0000000000000080800000FFFF0000FFFF0000FFFF0000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF000000000000FF |
FF0000000000BFBFBF000000000000000000000000000000000000000000BFBF |
BF0000000000000000000000000000000000000000000000000000FFFF0000FF |
FF00008080000080800000FFFF0000FFFF0000FFFF0000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000000000FF000000FF000000FF00 |
00000000000000000000000000000000000000FFFF00000000000000000000FF |
FF007F7F7F007F7F7F00BFBFBF00000000000000000000000000BFBFBF007F7F |
7F007F7F7F000000000000000000000000000000000000000000000000007F7F |
7F0000FFFF0000FFFF0000FFFF0000FFFF00000000007F7F7F00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000FF0000000000 |
00000000000000000000000000000000000000000000000000000000000000FF |
FF000000000000000000BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF000000 |
0000000000000000000000000000000000000000000000000000000000007F7F |
7F00000000000000000000000000000000007F7F7F0000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000000000000000000000000000FF |
FF00000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000007F7F7F00000000007F7F |
7F007F7F7F007F7F7F0000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000FF000000FF000000FF000000FF000000FF000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000BFBFBF007F7F7F00000000007F7F |
7F00000000000000000000000000000000000000000000000000000000007F7F |
7F00000000007F7F7F0000000000000000000000000000000000000000000000 |
00000000000000000000BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF000000 |
000000000000000000000000000000000000FF000000FF000000FF000000FF00 |
0000FF000000FF000000BFBFBF0000000000BFBFBF00FF000000FF000000FF00 |
0000FF000000FF000000FF000000000000000000000000000000000000000000 |
0000000000008000000080000000FF00000080000000FF000000000000000000 |
00000000000000000000000000000000000000000000000000007F7F7F007F7F |
7F00000000000000000000000000000000000000000000000000000000000000 |
00007F7F7F000000000000000000000000000000000000000000000000000000 |
00007F7F7F007F7F7F00BFBFBF007F7F7F00000000007F7F7F00BFBFBF007F7F |
7F007F7F7F000000000000000000000000000000000000000000BFBFBF00BFBF |
BF00BFBFBF00BFBFBF00000000007F7F7F0000000000BFBFBF00BFBFBF00BFBF |
BF00BFBFBF000000000000000000000000000000000000000000000000008000 |
0000FF000000800000008000000080000000FF00000080000000800000008000 |
000000000000000000000000000000000000BFBFBF00BFBFBF007F7F7F000000 |
0000000000007F7F7F0000000000000000000000000000000000000000007F7F |
7F0000000000000000007F7F7F007F7F7F00000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF007F7F7F00000000007F7F7F00BFBFBF00BFBF |
BF00BFBFBF00BFBFBF00000000000000000000000000FFFFFF00000000007F7F |
7F007F7F7F0000000000FFFFFF007F7F7F00FFFFFF00000000007F7F7F007F7F |
7F0000000000FFFFFF000000000000000000000000000000000080000000FF00 |
0000800000000080800000808000800000008000000080000000800000008000 |
0000800000000000000000000000000000007F7F7F0000000000000000000000 |
00007F7F7F000000000000000000000000000000000000000000000000000000 |
0000000000007F7F7F007F7F7F00000000000000000000000000000000007F7F |
7F007F7F7F007F7F7F00BFBFBF00BFBFBF0000000000BFBFBF00BFBFBF007F7F |
7F007F7F7F007F7F7F0000000000000000007F7F7F0000000000FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF007F7F7F00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00000000007F7F7F00000000000000000080000000FF0000008000 |
0000FF000000008080000080800080000000FF00000080000000FF0000008000 |
0000008080000080800000000000000000007F7F7F0000000000000000007F7F |
7F00000000007F7F7F0000000000000000000000000000000000000000000000 |
000000000000BFBFBF00000000007F7F7F00000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF00000000000000000000000000BFBFBF00BFBF |
BF00BFBFBF00BFBFBF0000000000000000007F7F7F0000000000FFFFFF00FFFF |
FF00FFFFFF0000FFFF000000FF000000FF00FFFFFF0000FFFF00FFFFFF00FFFF |
FF00FFFFFF00000000007F7F7F00000000000000000080000000FF000000FF00 |
0000FF0000000080800000808000008080008000000080000000800000008000 |
0000008080000080800000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000007F7F |
7F007F7F7F00BFBFBF0000000000BFBFBF000000000000000000000000007F7F |
7F007F7F7F007F7F7F007F7F7F000000000000000000000000007F7F7F007F7F |
7F007F7F7F007F7F7F0000000000000000000000000000000000FFFFFF00FFFF |
FF0000FFFF00FFFFFF000000FF000000FF0000FFFF00FFFFFF0000FFFF00FFFF |
FF00FFFFFF00000000000000000000000000FF000000FF000000FF000000FF00 |
0000FF000000008080000080800000808000FF000000FF000000FF0000008000 |
0000FF0000008000000080000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000BFBFBF00000000007F7F7F00000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBF |
BF00BFBFBF00BFBFBF000000000000000000000000007F7F7F000000000000FF |
FF00FFFFFF0000FFFF00FFFFFF007F7F7F00FFFFFF0000FFFF00FFFFFF0000FF |
FF00000000007F7F7F00000000000000000080000000FF000000FF0000000080 |
800000808000008080000080800000808000FF000000FF000000FF0000008000 |
00008000000080000000FF00000000000000000000007F7F7F00000000000000 |
00007F7F7F0000000000000000007F7F7F00000000007F7F7F00000000000000 |
0000000000007F7F7F00BFBFBF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000007F7F7F0000000000FFFF |
FF0000FFFF00FFFFFF000000FF00BFBFBF0000FFFF00FFFFFF0000FFFF00FFFF |
FF00000000007F7F7F000000000000000000FF00000080000000008080000080 |
800000808000008080000080800000808000FF00000000808000FF0000008000 |
0000FF000000FF000000FF000000000000007F7F7F0000000000000000000000 |
00007F7F7F000000000000000000000000007F7F7F0000000000000000007F7F |
7F0000000000000000007F7F7F00BFBFBF000000000000000000000000000000 |
000000000000BFBFBF000000000000000000000000000000000000000000BFBF |
BF00000000000000000000000000000000000000000000FFFF000000000000FF |
FF00FFFFFF0000FFFF000000FF000000FF000000000000FFFF00FFFFFF0000FF |
FF000000000000000000000000000000000080000000FF000000FF0000000080 |
800000808000008080000080800000808000008080000080800000808000FF00 |
000080000000FF000000800000000000000000000000000000007F7F7F007F7F |
7F007F7F7F007F7F7F007F7F7F0000000000000000007F7F7F00000000000000 |
00007F7F7F000000000000000000000000000000000000000000000000000000 |
000000000000BFBFBF000000000000000000000000000000000000000000BFBF |
BF000000000000000000000000000000000000000000FFFFFF0000FFFF000000 |
0000000000000000000000FFFF000000FF000000FF0000000000000000000000 |
000000FFFF00000000000000000000000000FF000000FF000000FF0000000080 |
800000808000FF000000FF00000080000000008080000080800000808000FF00 |
0000FF00000080000000FF00000000000000000000007F7F7F007F7F7F000000 |
000000000000000000007F7F7F007F7F7F000000000000000000000000007F7F |
7F00000000007F7F7F0000000000000000000000000000000000000000000000 |
000000000000BFBFBF000000000000000000000000000000000000000000BFBF |
BF00000000000000000000000000000000000000000000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF000000FF000000FF00FFFFFF0000FF |
FF00FFFFFF0000000000000000000000000000000000FF000000FF000000FF00 |
0000FF000000FF00000000808000008080000080800000808000008080000080 |
800080000000FF000000000000000000000000000000BFBFBF00000000007F7F |
7F007F7F7F007F7F7F00000000007F7F7F000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00007F7F7F007F7F7F00BFBFBF00000000000000000000000000BFBFBF007F7F |
7F007F7F7F0000000000000000000000000000000000FFFFFF0000FFFF00FFFF |
FF000000FF000000FF0000FFFF00FFFFFF000000FF000000FF0000FFFF00FFFF |
FF0000FFFF000000000000000000000000000000000080000000FF0000000080 |
8000008080000080800000808000008080000080800000808000008080000080 |
8000FF000000FF00000000000000000000007F7F7F00BFBFBF0000000000BFBF |
BF00000000007F7F7F00000000007F7F7F007F7F7F007F7F7F00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF000000 |
0000000000000000000000000000000000000000000000000000FFFFFF0000FF |
FF000000FF000000FF00FFFFFF0000FFFF000000FF000000FF00FFFFFF0000FF |
FF00000000000000000000000000000000000000000000000000008080000080 |
80000080800000808000FF000000FF00000000808000FF000000008080000080 |
8000FF00000000000000000000000000000000000000BFBFBF00000000007F7F |
7F00BFBFBF007F7F7F00000000007F7F7F000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000000000FFFF |
FF0000FFFF000000FF000000FF000000FF000000FF00FFFFFF0000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000080 |
800000808000FF000000FF00000080000000FF00000080000000FF000000FF00 |
000000000000000000000000000000000000000000007F7F7F00BFBFBF000000 |
000000000000000000007F7F7F007F7F7F000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000FF00000080000000FF000000FF000000FF000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF00000000000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
0000000000000000000000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000FF00000000000000FF000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
00007F7F7F007F7F7F007F7F7F0000FFFF0000FFFF007F7F7F007F7F7F007F7F |
7F007F7F7F0000FFFF0000FFFF00000000000000000000000000000000000000 |
000000000000FFFFFF007F7F7F000000FF007F7F7F00FFFFFF00000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
00000000000000FFFF0000FFFF00000000000000000000000000000000000000 |
000000000000FF000000FF00000000000000FFFFFF0000000000FF0000000000 |
000000000000000000000000000000000000000000000000000000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000FFFF00000000000000000000000000000000000000000000FF |
FF00FFFFFF0000FFFF000000FF000000FF000000FF0000FFFF00FFFFFF0000FF |
FF0000000000000000000000000000000000000000000000000000FFFF0000FF |
FF007F7F7F007F7F7F007F7F7F0000FFFF0000FFFF007F7F7F007F7F7F007F7F |
7F0000FFFF0000FFFF0000000000000000000000000000000000000000000000 |
0000FF0000000000000000000000FFFFFF0000000000FFFFFF0000000000FF00 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F000000000000000000000000000000000000FFFF00FFFF |
FF0000FFFF00FFFFFF007F7F7F000000FF007F7F7F00FFFFFF0000FFFF00FFFF |
FF0000FFFF000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000FFFF00000000000000000000000000000000000000000000000000FF00 |
00000000000000000000FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000 |
0000FF0000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F0000000000000000000000000000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF000000000000000000000000000000000000000000FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 |
00000000000000000000000000000000000000000000FF000000FF0000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF |
FF0000000000FF00000000000000000000000000000000000000000000000000 |
0000FFFFFF000000000000000000FFFFFF00000000000000000000000000FFFF |
FF00000000007F7F7F00000000000000000000000000FFFFFF0000FFFF00FFFF |
FF0000FFFF00FFFFFF0000FFFF000000FF0000FFFF00FFFFFF0000FFFF00FFFF |
FF0000FFFF00FFFFFF000000000000000000000000000000000000000000FFFF |
FF000000000000000000FFFFFF00000000000000000000000000FFFFFF000000 |
000000000000000000000000000000000000FF0000000000000000000000FFFF |
FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 |
0000FFFFFF0000000000FF000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00000000007F7F7F000000000000000000FFFFFF0000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF000000FF007F7F7F0000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF000000000000FFFF0000FFFF0000000000FFFF |
FF00FFFFFF00FFFFFF00BFBFBF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 |
000000FFFF0000FFFF0000FFFF00000000000000000000000000FFFFFF00FFFF |
FF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF0000000000FFFFFF0000000000FF00000000FFFF0000FFFF0000FFFF000000 |
0000FFFFFF0000000000000000000000000000000000FFFFFF0000000000FFFF |
FF000000000000FFFF0000FFFF000000000000FFFF00FFFFFF0000FFFF00FFFF |
FF0000FFFF00FFFFFF0000FFFF000000FF000000FF00FFFFFF0000FFFF00FFFF |
FF0000FFFF00FFFFFF0000FFFF00000000000000000000FFFF0000000000FFFF |
FF0000000000BFBFBF007F7F7F00000000000000000000000000000000000000 |
000000000000000000000000000000FFFF0000000000FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF0000000000FFFFFF00000000000000000000FFFF0000FFFF000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF000000000000FFFF0000FFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF000000FF000000FF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF0000000000000000000000000000000000BFBF |
BF00BFBFBF00BFBFBF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF000000000000000000000000000000000000000000FFFFFF00FFFF |
FF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 |
0000FFFFFF000000000000000000FFFFFF000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF00FFFFFF0000FFFF00FFFF |
FF007F7F7F007F7F7F0000FFFF00FFFFFF007F7F7F000000FF000000FF00FFFF |
FF0000FFFF00FFFFFF0000FFFF0000000000000000000000000000000000BFBF |
BF00000000007F7F7F00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFBF |
BF0000000000000000000000000000000000000000000000000000000000FFFF |
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFF |
FF00000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 |
000000000000000000000000000000000000FFFFFF0000FFFF00FFFFFF0000FF |
FF000000FF000000FF00FFFFFF0000FFFF007F7F7F000000FF000000FF0000FF |
FF00FFFFFF0000FFFF00FFFFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000FFFF000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF0000000000BFBFBF00FFFFFF0000000000FFFFFF000000000000FF |
FF000000000000000000000000000000000000000000FFFFFF0000FFFF00FFFF |
FF000000FF000000FF007F7F7F00FFFFFF007F7F7F000000FF000000FF00FFFF |
FF0000FFFF00FFFFFF000000000000000000000000000000000000FFFF0000FF |
FF0000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
000000FFFF0000FFFF0000000000000000000000000000000000000000000000 |
000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000FF |
FF0000FFFF000000000000000000000000000000000000FFFF00FFFFFF0000FF |
FF00FFFFFF000000FF000000FF000000FF000000FF000000FF00FFFFFF0000FF |
FF00FFFFFF0000FFFF0000000000000000000000000000FFFF0000FFFF000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
00000000000000FFFF0000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000000000000000000000FFFF000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000FFFF0000FFFF000000000000000000000000000000000000FFFF00FFFF |
FF0000FFFF00FFFFFF000000FF000000FF000000FF00FFFFFF0000FFFF00FFFF |
FF0000FFFF000000000000000000000000000000000000FFFF00000000000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
0000000000000000000000FFFF00000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000FFFF0000FFFF000000 |
000000000000000000000000000000FFFF0000FFFF0000000000000000000000 |
00000000000000FFFF0000FFFF000000000000000000000000000000000000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF |
FF000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000000000FFFF0000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
000000000000000000000000000000FFFF000000000000000000000000000000 |
000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000 |
0000000000000000000000000000000000008484840084848400848484008484 |
8400848484008484840084848400848484008484840084848400FFFFFF00C6C6 |
C60084848400C6C6C600FFFFFF00C6C6C6000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000008484840084848400848484008484 |
840084848400848484008484840084848400848484008484840084848400FFFF |
FF0084848400FFFFFF0084848400848484000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000008400000084000000840000008400 |
00000000000000000000848484008484840084848400FFFFFF00FFFFFF00FFFF |
FF00840000008400000084000000840000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
0000FF00000084000000000000000000000084848400FFFFFF00FFFFFF00FFFF |
FF00840000000000000000000000000000000000000000000000008484000084 |
8400008484000084840000848400008484000084840000848400008484000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000008484000084840000000000000000000000000000000000C6C6C6000000 |
0000008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
000084000000FF0000008400000000000000FFFFFF00FFFFFF00FFFFFF00FFFF |
FF00840000000000000000000000000000000000000000FFFF00000000000084 |
8400008484000084840000848400008484000084840000848400008484000084 |
8400000000000000000000000000000000000000000000000000000000000000 |
0000008484000084840000000000000000000000000000000000C6C6C6000000 |
0000008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
0000FF00000084000000FF00000000000000FFFFFF00FFFFFF00FFFFFF00FFFF |
FF008400000000000000000000000000000000000000FFFFFF0000FFFF000000 |
0000008484000084840000848400008484000084840000848400008484000084 |
8400008484000000000000000000000000000000000000000000000000000000 |
0000008484000084840000000000000000000000000000000000000000000000 |
0000008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF |
0000840000000000000000000000000000000000000000FFFF00FFFFFF0000FF |
FF00000000000084840000848400008484000084840000848400008484000084 |
8400008484000084840000000000000000000000000000000000000000000000 |
0000008484000084840000848400008484000084840000848400008484000084 |
8400008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF |
FF008400000000000000000000000000000000000000FFFFFF0000FFFF00FFFF |
FF0000FFFF000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000008484000084840000000000000000000000000000000000000000000084 |
8400008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
000084000000FF0000008400000000000000FFFFFF00FFFF0000FFFFFF00FFFF |
0000840000000000000000000000000000000000000000FFFF00FFFFFF0000FF |
FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 |
0000008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
0000FF00000084000000FF00000000000000FFFF0000FFFFFF00FFFF0000FFFF |
FF008400000000000000000000000000000000000000FFFFFF0000FFFF00FFFF |
FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 |
0000008484000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000008400 |
0000840000008400000084000000840000008400000084000000840000008400 |
0000840000000000000000000000000000000000000000FFFF00FFFFFF0000FF |
FF00000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000084840000000000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C6000000 |
0000C6C6C6000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000840000008400000084000000840000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
000000000000000000000000000000000000424D3E000000000000003E000000 |
2800000040000000600000000100010000000000000300000000000000000000 |
000000000000000000000000FFFFFF0000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
0000000000000000000000000000000000000000000000000000000000000000 |
00000000000000000000000000000000FF7EFFFFFFFF00009001FC00F7FF0000 |
C003FC00F3FF0000E003FC00F1FF0000E003FC0000FF0000E003EC00000F0000 |
E003E400000700000001E000000300008000000000010000E0070001C0000000 |
E00F0003C00F0000E00F0007C00F0000E027000FC00F0000C073E3FFE3FF0000 |
9E79E7FFFFFF00007EFEEFFFFFFF0000FFF8FFFFFC01FC1FFFF8FFFF8C01F007 |
FFE000000401E003FFE000000401C001FF8100000401C001FF0300008C01C001 |
FF070000FC01C001840F0000FC014001001F00000403A003003F00000407C3C7 |
007F0000040F0047003FFFFF07FFC1C7003FFFFF0603A1C7803FFFFFFF076007 |
C03FFFFFFF8FE80FE07FFFFFFFDFEC1F81FEFC1FF83FFFFF01E2F0070001F83F |
07E0E0030001E00F03E0C0010001C00703F0C0010001800323C0C00100018003 |
3FC0C00180030001E3C0C001800300012230E003800300010020F1C780070001 |
0020F1C7800700010062F1C780078003001EF00780078003001FF80FC00FC007 |
001FFC1FE01FE00F007FFFFFF03FF83FFF7EFFFFFF7EFFFFBE7DFE3F9001F83F |
9E79F81FC003E00FC003F40FE003C007C007E007E0038003C00F8003E0038003 |
C00F4001E003000100010000000100018000000080000001C0038001E0070001 |
C007C003E00F0001E007E00FE00F8003CE73F07FE02780039E79F8FFC073C007 |
BE7DFFFF9E79E00F7EFEFFFF7EFEF83F0000FFFFFF7EFFFF0000FFFFBFFFFFFF |
0000001FF003EFFDE007000FE003C7FFE0070007E003C3FBE0070003E003E3F7 |
E0070001E003F1E7E00700002003F8CFE007001FE002FC1FE007001FE003FE3F |
E007001FE003FC1FFFFF8FF1E003F8CFF81FFFF9E003E1E7F81FFF75FFFFC3F3 |
F81FFF8FBF7DC7FDFFFFFFFF7F7EFFFF00000000000000000000000000000000 |
000000000000} |
end |
object tmr_refresh: TTimer |
Enabled = False |
Interval = 100 |
OnTimer = tmr_refresh_timer |
Left = 392 |
Top = 144 |
end |
object mainmenu: TMainMenu |
Images = imagelist |
Left = 24 |
Top = 168 |
object mm_file: TMenuItem |
Caption = 'mm_file' |
object m_open: TMenuItem |
Caption = 'm_open' |
ImageIndex = 6 |
ShortCut = 16463 |
OnClick = m_open_execute |
end |
object m_folder: TMenuItem |
Caption = 'm_folder' |
ImageIndex = 1 |
ShortCut = 16454 |
OnClick = m_folder_execute |
end |
object seperator1: TMenuItem |
Caption = '-' |
end |
object m_config: TMenuItem |
Caption = 'm_config' |
ImageIndex = 8 |
OnClick = m_config_execute |
end |
object seperator2: TMenuItem |
Caption = '-' |
end |
object m_close: TMenuItem |
Caption = 'm_close' |
Enabled = False |
ImageIndex = 4 |
OnClick = m_close_execute |
end |
object m_exit: TMenuItem |
Caption = 'm_exit' |
ImageIndex = 0 |
ShortCut = 27 |
OnClick = m_exit_execute |
end |
end |
object mm_dateiensammlung: TMenuItem |
Caption = 'mm_dateiensammlung' |
object m_dateiensammlung_neu: TMenuItem |
Caption = 'm_dateiensammlung_neu' |
ImageIndex = 16 |
ShortCut = 116 |
OnClick = m_dateiensammlung_neu_click |
end |
object seperator3: TMenuItem |
Caption = '-' |
end |
object m_dateiensammlung_add_file: TMenuItem |
Caption = 'm_dateiensammlung_add_file' |
Enabled = False |
ImageIndex = 17 |
ShortCut = 117 |
OnClick = m_dateiensammlung_add_file_click |
end |
object m_dateiensammlung_add_folder: TMenuItem |
Caption = 'm_dateiensammlung_add_folder' |
Enabled = False |
ImageIndex = 18 |
ShortCut = 118 |
OnClick = m_dateiensammlung_add_folder_click |
end |
object seperator4: TMenuItem |
Caption = '-' |
end |
object m_dateiensammlung_show: TMenuItem |
Caption = 'm_dateiensammlung_show' |
Enabled = False |
ImageIndex = 5 |
ShortCut = 119 |
OnClick = m_dateiensammlung_show_click |
end |
end |
object mm_actions: TMenuItem |
Caption = 'mm_actions' |
Visible = False |
object m_encrypt: TMenuItem |
Caption = 'm_encrypt' |
ImageIndex = 9 |
ShortCut = 16453 |
OnClick = m_encrypt_execute |
end |
object m_decrypt: TMenuItem |
Caption = 'm_decrypt' |
ImageIndex = 15 |
ShortCut = 16452 |
OnClick = m_decrypt_execute |
end |
object m_direct: TMenuItem |
Caption = 'm_direct' |
ImageIndex = 2 |
ShortCut = 16450 |
OnClick = m_direct_execute |
end |
object seperator5: TMenuItem |
Caption = '-' |
end |
object m_delete: TMenuItem |
Caption = 'm_delete' |
ImageIndex = 3 |
ShortCut = 16430 |
OnClick = m_delete_execute |
end |
end |
object mm_help: TMenuItem |
Caption = 'mm_help' |
object m_help: TMenuItem |
Caption = 'm_help' |
ImageIndex = 10 |
ShortCut = 112 |
OnClick = m_help_execute |
end |
object m_web: TMenuItem |
Caption = 'm_web' |
ImageIndex = 11 |
object m_web_dm: TMenuItem |
Caption = 'm_web_dm' |
ImageIndex = 14 |
OnClick = m_web_dm_click |
end |
object m_web_vts: TMenuItem |
Caption = 'm_web_vts' |
ImageIndex = 14 |
OnClick = m_web_vts_click |
end |
object m_web_project: TMenuItem |
Caption = 'm_web_project' |
ImageIndex = 14 |
OnClick = m_web_project_click |
end |
object m_web_infopages: TMenuItem |
Caption = 'm_web_infopages' |
ImageIndex = 14 |
OnClick = m_web_infopages_click |
end |
object m_web_forum: TMenuItem |
Caption = 'm_web_forum' |
ImageIndex = 14 |
OnClick = m_web_forum_click |
end |
object seperator6: TMenuItem |
Caption = '-' |
end |
object m_web_update: TMenuItem |
Caption = 'm_web_update' |
ImageIndex = 11 |
OnClick = m_web_update_execute |
end |
object m_web_email: TMenuItem |
Caption = 'm_web_email' |
ImageIndex = 13 |
OnClick = m_web_email_click |
end |
object m_web_keytransmitter: TMenuItem |
Caption = 'm_web_keytransmitter' |
ImageIndex = 12 |
ShortCut = 123 |
OnClick = m_web_keytransmitter_click |
end |
end |
object m_info: TMenuItem |
Caption = 'm_info' |
ImageIndex = 7 |
OnClick = m_info_execute |
end |
end |
end |
object dlg_open_element: TOpenDialog |
Options = [ofReadOnly, ofHideReadOnly, ofAllowMultiSelect, ofPathMustExist, ofFileMustExist, ofEnableSizing] |
Left = 360 |
Top = 176 |
end |
object tmp_progressdurchlauf: TTimer |
Tag = 100 |
Enabled = False |
Interval = 10 |
OnTimer = tmp_progressdurchlauf_timer |
Left = 360 |
Top = 144 |
end |
end |
/trunk/Quelltext/Main.pas |
---|
0,0 → 1,3883 |
unit Main; |
interface |
uses |
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, DECUtil, |
DECHash, DECCipher, registry, KAZip, shlobj, StdCtrls, math, |
shellapi, Buttons, ComCtrls, ExtCtrls, inifiles, DragDropFile, DragDrop, |
ImgList, base64, ZLib, wininet, OneInst, DCConst, Dialogs, |
Menus{, XPMenu}; |
type |
TCase = (tcUnknown, tcEncrypted, tcDecrypted); |
TProgress = class(TInterfacedObject, IDECProgress) |
procedure Process(const Min, Max, Pos: Int64); stdcall; |
constructor Create; |
destructor Destroy; override; |
end; |
TMainForm = class(TForm) |
dlg_open: TOpenDialog; |
dlg_save_dec: TSaveDialog; |
dlg_save_enc: TSaveDialog; |
tmr_capslock: TTimer; |
img_type: TImage; |
lbl_vle1: TLabel; |
edt_vle1: TEdit; |
edt_vle2: TEdit; |
lbl_vle2: TLabel; |
lbl_vle3: TLabel; |
edt_vle3: TEdit; |
lbl_vle4: TLabel; |
edt_vle4: TEdit; |
lbl_vle5: TLabel; |
edt_vle5: TEdit; |
lbl_vle6: TLabel; |
edt_vle6: TEdit; |
lbl_vle7: TLabel; |
edt_vle7: TEdit; |
lbl_passwort: TLabel; |
edt_passwort: TEdit; |
lbl_passwort2: TLabel; |
edt_passwort2: TEdit; |
img_warning: TImage; |
lbl_capswarning: TLabel; |
chk_securedelete: TCheckBox; |
lbl_entropy: TLabel; |
lbl_equal: TLabel; |
imagelist: TImageList; |
img_error: TImage; |
lbl_readerror: TLabel; |
b_encrypt: TBitBtn; |
b_decrypt: TBitBtn; |
b_direct: TBitBtn; |
b_open: TBitBtn; |
b_folder: TBitBtn; |
chk_compress: TCheckBox; |
tmr_refresh: TTimer; |
mainmenu: TMainMenu; |
mm_file: TMenuItem; |
m_open: TMenuItem; |
m_folder: TMenuItem; |
seperator1: TMenuItem; |
m_config: TMenuItem; |
seperator2: TMenuItem; |
m_close: TMenuItem; |
m_exit: TMenuItem; |
mm_actions: TMenuItem; |
mm_help: TMenuItem; |
m_help: TMenuItem; |
m_web_update: TMenuItem; |
m_info: TMenuItem; |
m_encrypt: TMenuItem; |
m_decrypt: TMenuItem; |
m_direct: TMenuItem; |
seperator5: TMenuItem; |
m_delete: TMenuItem; |
m_web: TMenuItem; |
seperator6: TMenuItem; |
m_web_dm: TMenuItem; |
m_web_vts: TMenuItem; |
m_web_project: TMenuItem; |
m_web_keytransmitter: TMenuItem; |
m_web_email: TMenuItem; |
mm_dateiensammlung: TMenuItem; |
m_dateiensammlung_add_file: TMenuItem; |
m_dateiensammlung_show: TMenuItem; |
m_dateiensammlung_neu: TMenuItem; |
dlg_open_element: TOpenDialog; |
seperator3: TMenuItem; |
seperator4: TMenuItem; |
m_dateiensammlung_add_folder: TMenuItem; |
tmp_progressdurchlauf: TTimer; |
m_web_forum: TMenuItem; |
m_web_infopages: TMenuItem; |
procedure form_closequery(Sender: TObject; var CanClose: Boolean); |
procedure kazip_actions_compress(Sender: TObject; Current, Total: Integer); |
procedure kazip_actions_decompress(Sender: TObject; Current, Total: Integer); |
procedure kazip_add(Sender: TObject; ItemName: string); |
procedure kazip_onchange(Sender: TObject; ChangeType: Integer); |
procedure kazip_overwrite(Sender:TObject; Var FileName : String; Var Action : TOverwriteAction); |
procedure tmr_capslock_timer(Sender: TObject); |
procedure form_create(Sender: TObject); |
procedure edt_dec_password_keypress(Sender: TObject; var Key: Char); |
procedure form_close(Sender: TObject; var Action: TCloseAction); |
procedure dropfile_drop(Sender: TObject; ShiftState: TShiftState; |
Point: TPoint; var Effect: Integer); |
procedure edt_password2_change(Sender: TObject); |
procedure edt_enc_password_keypress(Sender: TObject; var Key: Char); |
procedure edt_passwort_change(Sender: TObject); |
procedure edt_passwort2_keypress(Sender: TObject; var Key: Char); |
procedure m_open_execute(Sender: TObject); |
procedure m_folder_execute(Sender: TObject); |
procedure m_config_execute(Sender: TObject); |
procedure m_exit_execute(Sender: TObject); |
procedure m_close_execute(Sender: TObject); |
procedure m_delete_execute(Sender: TObject); |
procedure m_direct_execute(Sender: TObject); |
procedure m_encrypt_execute(Sender: TObject); |
procedure m_decrypt_execute(Sender: TObject); |
procedure mm_actions_execute(Sender: TObject); |
procedure mm_file_execute(Sender: TObject); |
procedure mm_help_execute(Sender: TObject); |
procedure m_help_execute(Sender: TObject); |
procedure m_info_execute(Sender: TObject); |
procedure edt_passwort_keypress(Sender: TObject; var Key: Char); |
procedure edt_passwort_enter(Sender: TObject); |
procedure m_web_update_execute(Sender: TObject); |
procedure form_show(Sender: TObject); |
procedure tmr_refresh_timer(Sender: TObject); |
procedure m_web_dm_click(Sender: TObject); |
procedure m_web_vts_click(Sender: TObject); |
procedure m_web_project_click(Sender: TObject); |
procedure m_web_keytransmitter_click(Sender: TObject); |
procedure m_web_email_click(Sender: TObject); |
procedure m_dateiensammlung_neu_click(Sender: TObject); |
procedure m_dateiensammlung_show_click(Sender: TObject); |
procedure m_dateiensammlung_add_file_click(Sender: TObject); |
procedure m_dateiensammlung_add_folder_click(Sender: TObject); |
procedure tmp_progressdurchlauf_timer(Sender: TObject); |
procedure m_web_forum_click(Sender: TObject); |
procedure m_web_infopages_click(Sender: TObject); |
private |
steuerelementegesperrt: boolean; |
LangArray: Array of TLanguageEntry; |
lg_StartFolder: String; |
temp_unique_number: string; |
DateienCounter, DateienImOrdner: integer; |
// Freigegebene Streams, die bei der spontanen Programmbeendigung |
// unter Abfang der Exceptions freigegeben werden |
BestimmeDateiGroesseSource: TStream; |
tempstream: TStream; |
CompressInputStream, CompressOutputStream: TFileStream; |
CompressionStream: ZLib.TCompressionStream; |
DeCompressionStream: ZLib.TDeCompressionStream; |
ZippingStream: TStream; |
// Ende |
procedure progress_position(pos: integer); |
procedure progress_text(text, item: string); |
procedure Compress(InputFileName, OutputFileName: string); |
procedure Decompress(InputFileName, OutputFileName: string); |
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; |
public |
// VCL-Ersatz start |
DropFile: TDropFileTarget; |
KaZip: TKaZip; |
//xpmenu: TXPMenu; |
// VCL-Ersatz ende |
fileopen: string; // geöffnete datei |
ersatzname: string; // wenn ein ordner verschlüsselt wird, ordnernamen statt zip-dateinamen angeben |
ausgabegesetzt: string; // befehlszeile, wenn gesetzt |
errorlevel: integer; // fehlerlevel für befehlszeilenanwendung |
flag: byte; // ordner oder datei verschlüsselt? |
mode: TCase; // status der geöffneten datei? |
fMenuBrush: TBrush; |
procedure steuerelementesperren(sperren: boolean); |
procedure zeige_wartenform(dothis: boolean); |
function GetLangEntry(name: string): string; |
procedure OpenFile(fil: string; alternativer_name: string = ''; dateiensammlung: boolean = false); |
procedure OpenFolder(fol: string); |
procedure SchliesseDatei(); |
function Unzip(ZipFile, Verzeichnis: string): boolean; |
procedure zipfolder(verzeichnis, zipname: string); |
procedure addtozip(fileorfolder, zipfile: string); |
procedure CreateZipFile(zipfile: string); |
procedure freestreams(); |
procedure DefaultHandler(var Message); override; |
procedure ProcessCommandline(lpData: Pointer); |
procedure Start; |
function BestimmeDateiGroesse(filename: string): string; |
end; |
var |
MainForm: TMainForm; |
implementation |
uses Config, About, Warten, Elemente; |
{$R *.dfm} |
{$R WindowsXP.res} |
const |
// Konstanten |
Terminus: String = 'DCTERMINUS'; |
FileNameTerminus: Char = '?'; |
DateiTag: Byte = $00; |
OrdnerTag: Byte = $01; |
DateiCompressTag: Byte = $02; |
OrdnerCompressTag: Byte = $03; |
TempPre = 'DeCoder_'; |
TempDirect = 'DeCoder_Sensitiv'; |
TempExtTmp = '.tmp'; |
TempExtCmp = '.cmp'; |
TempExtZip = '.zip'; |
ExtDC4 = '.dc4'; |
updateid = 'decoder'; |
// Standardeinstellungen |
StZIPType: TZipCompressionType = ctNone; |
ZLibCompressFile: Boolean = True; |
ZLibCompressFolder: Boolean = True; |
// (De)Coder 4.1 Standardeinstellungen |
VTag: Byte = $02; |
IDBase: LongInt = $84671842; |
SeedSize: Byte = 32; |
StMode: TCipherMode = cmCTSx; |
StCipher: String = 'TCipher_Rijndael'; |
StHash: String = 'THash_SHA512'; |
// (De)Coder 4.0 Kompatibilitätseinstellungen |
DC40VTag: Byte = $01; |
DC40IDBase: LongInt = $59178954; |
DC40SeedSize: Byte = 16; |
DC40StMode: TCipherMode = cmCTSx; |
DC40StCipher: String = 'TCipher_Rijndael'; |
DC40StHash: String = 'THash_SHA512'; |
// Konstanten von DEC |
cyprefix: String = 'TCipher_'; |
haprefix: String = 'THash_'; |
CipherModeStr: array[0..8] of string = ('CTSx', 'CBCx', 'CFB8', 'CFBx', 'OFB8', 'OFBx', 'CFS8', 'CFSx', 'ECBx'); |
{ Eine zweite Instanz hat uns ihre Kommandozeilenparameter geschickt } |
// von OneInst |
procedure TMainForm.WMCopyData(var Msg: TWMCopyData); |
var |
i: integer; |
temp: string; |
tpara: string; |
begin |
if (Msg.CopyDataStruct.dwData = SecondInstMsgId) and (SecondInstMsgId <> 0) then |
begin |
if (steuerelementegesperrt or wartenform.Visible or |
(not mainform.Visible)) and (paramstr_firstposition('/c') <> -1) and |
(paramstr_firstposition('/x') <> -1) and (paramstr_firstposition('/e') <> -1) and |
(paramstr_firstposition('/?') <> -1) and (paramstr_firstposition('/clean') <> -1) then |
begin |
temp := ParamBlobToStr(Msg.CopyDataStruct.lpData); |
tpara := ''; |
for i := 0 to ZaehleLinien(temp)-1 do |
tpara := tpara + '"'+GebeLinieaus(temp, i+1) + '" '; |
shellexecute(application.Handle, 'open', pchar(application.exename), pchar(tpara+'/newinstance'), pchar(extractfiledir(application.exename)), sw_normal); |
end |
else |
ProcessCommandline(Msg.CopyDataStruct.lpData); |
end |
else |
{ Tcha wohl doch nicht ID - stimmte nicht } |
inherited; |
end; |
{----------------------------------------------------------------------------} |
{ Wir überschreiben den DefaultHandler, der alle Nachrichten zuerst bekommt, } |
{ damit wir auf die Nachricht mit der ID SecondInstMsgId reagieren können. } |
{ (Dies ist notwendig, da wir jetzt noch nicht wissen welchen Wert } |
{ die ID haben wird, weswegen wir keine statische Message-Prozedure, } |
{ so wie bei WM_COPYDATA, schreiben können.) } |
{----------------------------------------------------------------------------} |
// von OneInst |
procedure TMainForm.DefaultHandler(var Message); |
begin |
if TMessage(Message).Msg = SecondInstMsgId then |
{ Eine zweite Instanz hat uns nach dem Handle gefragt } |
{ Es wird in die Message-Queue des Threads gepostet. } |
PostThreadMessage(TMessage(Message).WParam, SecondInstMsgId, Handle, 0) |
else |
{ Ansonsten rufen wir die geerbte Methode auf } |
inherited; |
end; |
procedure Schlafen(nDelay: Cardinal); |
var |
nStart: Cardinal; |
begin |
nStart := GetTickCount; |
while GetTickCount-nStart < nDelay do |
begin |
Application.ProcessMessages; |
Sleep(0); |
end; |
end; |
procedure TMainForm.Compress(InputFileName, OutputFileName: string); |
begin |
try |
CompressInputStream:=TFileStream.Create(InputFileName, fmOpenRead); |
try |
CompressOutputStream:=TFileStream.Create(OutputFileName, fmCreate); |
try |
CompressionStream:=TCompressionStream.Create(clMax, CompressOutputStream); |
try |
CompressionStream.CopyFrom(CompressInputStream, CompressInputStream.Size); |
finally |
CompressionStream.Free; |
end; |
finally |
CompressOutputStream.Free; |
end; |
finally |
CompressInputStream.Free; |
end; |
except |
// z.B. bei Programmabbruch |
end; |
end; |
procedure TMainForm.m_web_dm_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.daniel-marschall.de/', '', '', sw_normal); |
end; |
procedure TMainForm.m_web_project_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/index.php?page=projektanzeige&seite=projekt-18', '', '', sw_normal); |
end; |
procedure TMainForm.Decompress(InputFileName, OutputFileName: string); |
var |
Buf: array[0..4095] of Byte; |
Count: Integer; |
begin |
try |
CompressInputStream:=TFileStream.Create(InputFileName, fmOpenRead); |
try |
CompressOutputStream:=TFileStream.Create(OutputFileName, fmCreate); |
try |
DecompressionStream := TDecompressionStream.Create(CompressInputStream); |
try |
while true do |
begin |
Count := DecompressionStream.Read(Buf[0], SizeOf(Buf)); |
if Count = 0 then |
break |
else |
CompressOutputStream.Write(Buf[0], Count); |
end; |
finally |
DecompressionStream.Free; |
end; |
finally |
CompressOutputStream.Free; |
end; |
finally |
CompressInputStream.Free; |
end; |
except |
// z.B. bei Programmabbruch |
end; |
end; |
function TMainForm.GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
function IsCapsLockOn: boolean; |
begin |
Result := 0 <> |
(GetKeyState(VK_CAPITAL) and $01); |
end; |
procedure TMainForm.progress_position(pos: integer); |
begin |
wartenform.pbr_progress.Position := pos; |
if ((wartenform.pbr_progress.Position <> wartenform.pbr_progress.Min) and (GebeLinieaus(ParamZeile, 2) <> '/silent')) and (not wartenform.visible) then |
begin |
wartenform.Visible := true; |
// tmr_openwartenform.Enabled := true; |
end; |
application.ProcessMessages; |
end; |
procedure TMainForm.zeige_wartenform(dothis: boolean); |
begin |
if dothis then |
begin |
if (GebeLinieaus(ParamZeile, 2) <> '/silent') and (not wartenform.visible) then |
begin |
progress_text('', ''); |
wartenform.Visible := true; |
// tmr_openwartenform.Enabled := true; |
end; |
end |
else |
begin |
progress_text('', ''); |
wartenform.Visible := false; |
// wartenform.tmr_closetimer.enabled := true; |
end; |
end; |
procedure TMainForm.progress_text(text, item: string); |
begin |
wartenform.lbl_info1.caption := text; |
wartenform.lbl_info2.caption := item; |
application.processmessages; |
end; |
function FormatiereZahlToStr(inp: extended): string; |
begin |
result := FloatToStrF(inp, ffNumber, 14, 2); |
end; |
function lang_getdirectoryname(): string; |
var |
myreg: tregistry; |
begin |
result := ''; |
myreg := TRegistry.Create; |
try |
myreg.RootKey := HKEY_CLASSES_ROOT; |
if myreg.OpenKey('Directory', false) then |
begin |
result := myreg.ReadString(''); |
end; |
finally |
myreg.free; |
end; |
end; |
function kazip_numfiles(ka: tkazip): integer; |
var |
i, a: Integer; |
begin |
a := 0; |
for i := 0 to ka.FileNames.count - 1 do |
begin |
if copy(ka.FileNames.Strings[i], length(ka.FileNames.Strings[i]), 1) <> '\' then |
inc(a); |
end; |
result := a; |
end; |
{ function kazip_numfolders(ka: tkazip): integer; |
var |
i, a: Integer; |
begin |
a := 0; |
for i := 0 to ka.FileNames.count - 1 do |
begin |
if copy(ka.FileNames.Strings[i], length(ka.FileNames.Strings[i]), 1) = '\' then |
inc(a); |
end; |
result := a; |
end; } |
function IntelligenteDateigroesse(ibytes: int64): string; |
begin |
if ibytes > power(1024, 5) then |
result := FormatiereZahlToStr(ibytes / power(1024, 4))+' EB' |
else if ibytes > power(1024, 4) then |
result := FormatiereZahlToStr(ibytes / power(1024, 4))+' TB' |
else if ibytes > power(1024, 3) then |
result := FormatiereZahlToStr(ibytes / power(1024, 3))+' GB' |
else if ibytes > power(1024, 2) then |
result := FormatiereZahlToStr(ibytes / power(1024, 2))+' MB' |
else if ibytes > power(1024, 1) then |
result := FormatiereZahlToStr(ibytes / power(1024, 1))+' KB' |
else |
begin |
if ibytes = 1 then |
result := FormatiereZahlToStr(ibytes)+' Byte' |
else |
result := FormatiereZahlToStr(ibytes)+' Bytes'; |
end; |
end; |
procedure dc_deletefile(Filename: string); |
const |
buf = 1024; |
var |
S: TStream; |
size: int64; |
abbruch: boolean; |
lAttributes: integer; |
begin |
if fileexists(filename) then |
begin |
try |
lAttributes := FileGetAttr(Filename); |
if lAttributes and SysUtils.faReadOnly <> 0 then |
begin |
lAttributes := lAttributes - SysUtils.faReadOnly; |
FileSetAttr(Filename, lAttributes); |
end; |
S := TFileStream.Create(Filename, fmOpenWrite or fmShareExclusive); |
try |
size := S.Size; |
mainform.progress_position(wartenform.pbr_progress.min); |
mainform.progress_text(mainform.GetLangEntry('deletefile'), filename); |
abbruch := false; |
while not abbruch do |
begin |
size := size - buf; |
if size > 0 then |
begin |
ProtectStream(S, buf); |
mainform.progress_position(floor((s.size-size) / s.Size * wartenform.pbr_progress.max)); |
end |
else |
begin |
if size < 0 then |
ProtectStream(S, s.size-s.Position); // wenn nicht size = 0 |
mainform.progress_position(wartenform.pbr_progress.min); |
abbruch := true; |
end; |
end; |
finally |
S.Free; |
end; |
deletefile(pchar(filename)); |
except |
end; |
end; |
end; |
procedure dc_deletedir(const Directory: String); |
var |
SR: TSearchRec; |
zus: string; |
begin |
if copy(Directory, length(Directory), 1) <> '\' then |
zus := '\' |
else |
zus := ''; |
if FindFirst(Directory + zus + '*.*', faAnyFile - faDirectory, SR) = 0 then |
try |
repeat |
try |
dc_deletefile(Directory + zus + SR.Name) |
except |
// z.B. durch Benutzung oder durch Schreibschutz verursacht |
end; |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
if FindFirst(Directory + zus + '*.*', faAnyFile, SR) = 0 then |
try |
repeat |
if ((SR.attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then |
dc_deletedir(Directory + zus + SR.Name + '\'); |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
removedirectory(pchar(Directory)); |
end; |
// http://www.swissdelphicenter.ch/torry/showcode.php?id=144 |
function GetTempDir: string; |
var |
Buffer: array[0..MAX_PATH] of Char; |
begin |
GetTempPath(SizeOf(Buffer) - 1, Buffer); |
Result := StrPas(Buffer); |
end; |
// http://www.delphipraxis.net/post50248.html |
function PassphraseQuality(const Password: String): Extended; |
// returns computed Quality in range 0.0 to 1.0 |
// source extracted from Delphi Encryption Compendium, DEC |
function Entropy(P: PByteArray; L: Integer): Extended; |
var |
Freq: Extended; |
I: Integer; |
Accu: array[Byte] of LongWord; |
begin |
Result := 0.0; |
if L <= 0 then Exit; |
FillChar(Accu, SizeOf(Accu), 0); |
for I := 0 to L-1 do Inc(Accu[P[I]]); |
for I := 0 to 255 do |
if Accu[I] <> 0 then |
begin |
Freq := Accu[I] / L; |
Result := Result - Freq * (Ln(Freq) / Ln(2)); |
end; |
end; |
function Differency: Extended; |
var |
S: String; |
L,I: Integer; |
begin |
Result := 0.0; |
L := Length(Password); |
if L <= 1 then Exit; |
SetLength(S, L-1); |
for I := 2 to L do |
Byte(S[I-1]) := Byte(Password[I-1]) - Byte(Password[I]); |
Result := Entropy(Pointer(S), Length(S)); |
end; |
function KeyDiff: Extended; |
const |
Table = '^1234567890ß´qwertzuiopü+asdfghjklöä#<yxcvbnm,.-°!"§$%&/()=?`QWERTZUIOPÜ*ASDFGHJKLÖÄ''>YXCVBNM;:_'; |
var |
S: String; |
L,I,J: Integer; |
begin |
Result := 0.0; |
L := Length(Password); |
if L <= 1 then Exit; |
S := Password; |
UniqueString(S); |
for I := 1 to L do |
begin |
J := Pos(S[I], Table); |
if J > 0 then S[I] := Char(J); |
end; |
for I := 2 to L do |
Byte(S[I-1]) := Byte(S[I-1]) - Byte(S[I]); |
Result := Entropy(Pointer(S), L-1); |
end; |
const |
GoodLength = 10.0; // good length of Passphrases |
var |
L: Extended; |
begin |
Result := Entropy(Pointer(Password), Length(Password)); |
if Result <> 0 then |
begin |
Result := Result * (Ln(Length(Password)) / Ln(GoodLength)); |
L := KeyDiff + Differency; |
if L <> 0 then L := L / 64; |
Result := Result * L; |
if Result < 0 then Result := -Result; |
if Result > 1 then Result := 1; |
end; |
end; |
/////////////////////////////////////////////////////////////////// |
// Call back function used to set the initial browse directory. |
/////////////////////////////////////////////////////////////////// |
function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT; |
lParam, lpData: LPARAM): Integer stdcall; |
begin |
if uMsg = BFFM_INITIALIZED then |
SendMessage(Wnd,BFFM_SETSELECTION,1,Integer(@mainform.lg_StartFolder[1])); |
result := 0; |
end; |
/////////////////////////////////////////////////////////////////// |
// This function allows the user to browse for a folder |
// |
// Arguments:- |
// browseTitle : The title to display on the browse dialog. |
// NewFolder : Allow to create a new folder |
// initialFolder : Optional argument. Use to specify the folder |
// initially selected when the dialog opens. |
// |
// Returns: The empty string if no folder was selected (i.e. if the |
// user clicked cancel), otherwise the full folder path. |
/////////////////////////////////////////////////////////////////// |
function BrowseForFolder(const browseTitle: String; const NewFolder: boolean = false; |
const initialFolder: String =''): String; |
var |
browse_info: TBrowseInfo; |
folder: array[0..MAX_PATH] of char; |
find_context: PItemIDList; |
const |
BIF_NEWDIALOGSTYLE=$40; |
begin |
FillChar(browse_info,SizeOf(browse_info),#0); |
mainform.lg_StartFolder := initialFolder; |
browse_info.pszDisplayName := @folder[0]; |
browse_info.lpszTitle := PChar(browseTitle); |
if NewFolder then |
browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE |
else |
browse_info.ulFlags := BIF_RETURNONLYFSDIRS; |
browse_info.hwndOwner := Application.Handle; |
if initialFolder <> '' then |
browse_info.lpfn := BrowseForFolderCallBack; |
find_context := SHBrowseForFolder(browse_info); |
if Assigned(find_context) then |
begin |
if SHGetPathFromIDList(find_context,folder) then |
result := folder |
else |
result := ''; |
GlobalFreePtr(find_context); |
end |
else |
result := ''; |
end; |
// Entnommen von FileCtrl |
procedure CutFirstDirectory(var S: TFileName); |
var |
Root: Boolean; |
P: Integer; |
begin |
if S = '\' then |
S := '' |
else |
begin |
if S[1] = '\' then |
begin |
Root := True; |
Delete(S, 1, 1); |
end |
else |
Root := False; |
if S[1] = '.' then |
Delete(S, 1, 4); |
P := AnsiPos('\',S); |
if P <> 0 then |
begin |
Delete(S, 1, P); |
S := '...\' + S; |
end |
else |
S := ''; |
if Root then |
S := '\' + S; |
end; |
end; |
// Entnommen von http://www.delphipraxis.net/post429178.html |
function IsFileName(FileName: String): Boolean; |
const ForbiddenChars = ['"', '<', '>', '|', '*', '/', '\', '?']; // verbotene Zeichen |
const ForbiddenNames: Array[0..22] of String[6] = ('AUX', 'NUL', 'PRN' ,'CON', 'CLOCK$', // verbotene Namen |
'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', |
'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9'); |
var i: Integer; |
var p: PChar; |
var FileNameU: String; |
begin |
Result := False; |
if FileName <> '' then // Name darf nicht leer sein |
begin |
i := Length(FileName); |
if FileName[i] <> '.' then // letze Zeichen darf kein Punkt sein |
begin |
p := Pointer(FileName); |
repeat if p^ in ForbiddenChars then |
Exit; |
inc(p); |
until p^ = #0; |
if (i < 7) and (i > 2) then |
begin |
FileNameU := UpperCase(FileName); |
for i := 0 to High(ForbiddenNames) do |
begin |
if CompareStr(ForbiddenNames[i], FileNameU) = 0 then |
Exit; |
end; |
end; |
Result := True; |
end; |
end; |
end; |
// Original von Codebeispiel von Hagen Reddmann |
procedure EncodeFile(const AFileName, AOutput: String; const APassword: Binary); |
procedure Write(const Value; Size: Integer); |
begin |
mainform.tempstream.WriteBuffer(Value, Size); |
end; |
procedure WriteByte(Value: Byte); |
begin |
Write(Value, SizeOf(Value)); |
end; |
procedure WriteLong(Value: LongWord); |
begin |
Value := SwapLong(Value); |
Write(Value, SizeOf(Value)); |
end; |
procedure WriteBinary(const Value: Binary); |
begin |
WriteByte(Length(Value)); |
Write(Value[1], Length(Value)); |
end; |
procedure WriteRaw(const Value: Binary); |
begin |
Write(Value[1], Length(Value)); |
end; |
var |
Source: TStream; |
Seed: Binary; |
P: IDECProgress; |
ACipher: TDECCipherClass; |
AHash: TDECHashClass; |
ACFileName: String; |
begin |
mainform.progress_position(wartenform.pbr_progress.min); |
mainform.progress_text(mainform.GetLangEntry('encodedata'), afilename); |
ACipher := CipherByName(StCipher); |
AHash := HashByName(StHash); |
ACipher := ValidCipher(ACipher); |
AHash := ValidHash(AHash); |
Seed := RandomBinary(SeedSize); |
ACFileName := GetTempDir+TempPre+mainform.temp_unique_number+TempExtCmp; |
// Ordner (-> ZIP-Dateien) werden nicht nocheinmal komprimiert ... oder doch? |
// if (ZLibCompressFile and (mainform.ersatzname = '')) or (ZLibCompressFolder and (mainform.ersatzname <> '')) then |
if mainform.chk_compress.checked then |
mainform.Compress(AFileName, ACFileName) |
else |
ACFileName := AFileName; |
Source := TFileStream.Create(ACFileName, fmOpenRead or fmShareDenyNone); |
try |
try |
mainform.tempstream := TFileStream.Create(AOutput, fmOpenReadWrite or fmCreate); |
try |
with ACipher.Create do |
try |
try |
Mode := TCipherMode(StMode); |
Init(AHash.KDFx(APassword, Seed, Context.KeySize)); |
if mainform.ersatzname <> '' then |
begin |
if mainform.chk_compress.Checked then |
writebyte(OrdnerCompressTag) |
else |
writebyte(OrdnerTag); |
end |
else |
begin |
if mainform.chk_compress.Checked then |
writebyte(DateiCompressTag) |
else |
writebyte(DateiTag); |
end; |
WriteByte(VTag); |
{if mainform.ersatzname <> '' then |
WriteRaw(Base64Encode(ExtractFileName(mainform.ersatzname))) |
else |
WriteRaw(Base64Encode(ExtractFileName(AFileName)));} |
WriteRaw(Base64Encode(mainform.edt_vle1.text)); |
WriteRaw(FileNameTerminus); |
WriteLong(IDBase); |
WriteLong(acipher.Identity); |
WriteByte(Byte(Mode)); |
WriteLong(ahash.Identity); |
WriteByte(SeedSize); |
WriteRaw(Seed); |
P := TProgress.Create; |
try |
EncodeStream(Source, mainform.tempstream, Source.Size, P); |
except |
// Kann auftreten, wenn das Programm beim Verschlüsseln geschlossen wird |
exit; |
end; |
source.Position := 0; |
WriteRaw(ahash.CalcBinary(ahash.CalcStream(source, source.size)+Seed+APassword)); |
WriteRaw(Base64Encode(Terminus)); |
finally |
Free; |
end; |
except |
raise; |
end; |
finally |
try |
mainform.tempstream.Free; |
except |
// kann passieren, wenn der Stream bereits durch FormClose geschlossen wurde |
end; |
end; |
except |
// Ist eine temporäre Datei und wird bei Programmbeendigung gelöscht |
// dc_deletefile(aoutput); |
mainform.steuerelementesperren(false); |
raise; // programmablauf endet hier |
end; |
finally |
Source.Free; |
end; |
end; |
// Original von Codebeispiel von Hagen Reddmann |
procedure DecodeFile(const AFileName, AOutput: String; const APassword: Binary); |
var |
Source: TStream; |
OrigName: string; |
ahash: TDECHashClass; |
procedure Read(var Value; Size: Integer); |
begin |
Source.ReadBuffer(Value, Size); |
end; |
function ReadByte: Byte; |
begin |
Read(Result, SizeOf(Result)); |
end; |
function ReadLong: LongWord; |
begin |
Read(Result, SizeOf(Result)); |
Result := SwapLong(Result); |
end; |
function ReadBinary: Binary; |
begin |
SetLength(Result, ReadByte); |
Read(Result[1], Length(Result)); |
end; |
function ReadRaw(leng: integer): Binary; |
begin |
SetLength(Result, leng); |
Read(Result[1], Length(Result)); |
end; |
var |
ch: string; |
{F, }V: Byte; |
P: IDECProgress; |
Cipher: TDECCipher; |
Seed: String; |
begin |
mainform.progress_position(wartenform.pbr_progress.min); |
mainform.progress_text(mainform.GetLangEntry('decodedata'), afilename); |
Source := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone); |
try |
try |
{F := }ReadByte; |
V := ReadByte; |
OrigName := ''; |
ch := readraw(1); |
while ch <> FileNameTerminus do |
begin |
OrigName := OrigName + ch; |
ch := readraw(1); |
end; |
if V = VTag then |
begin |
OrigName := Base64Decode(OrigName); |
ReadLong; // IdendityBase wird bereits bei FileOpen gesetzt |
end; |
mainform.tempstream := TFileStream.Create(AOutput, fmOpenReadWrite or fmCreate); |
try |
try |
Cipher := nil; |
if V = DC40VTag then Cipher := ValidCipher(CipherByName(DC40StCipher)).Create; |
if V = VTag then Cipher := ValidCipher(CipherByIdentity(ReadLong)).Create; |
try |
AHash := nil; |
if V = DC40VTag then |
begin |
Cipher.Mode := TCipherMode(DC40StMode); |
AHash := HashByName(DC40StHash); |
end; |
if V = VTag then |
begin |
Cipher.Mode := TCipherMode(ReadByte); |
AHash := HashByIdentity(ReadLong); |
end; |
AHash := ValidHash(AHash); |
if V = DC40VTag then |
Seed := ReadRaw(DC40SeedSize); |
if V = VTag then |
Seed := ReadRaw(ReadByte); |
Cipher.Init(ahash.KDFx(APassword, Seed, Cipher.Context.KeySize)); |
P := TProgress.Create; |
try |
if V = DC40VTag then |
Cipher.DecodeStream(Source, mainform.tempstream, source.size-source.Position-ahash.DigestSize, P); |
if V = VTag then |
Cipher.DecodeStream(Source, mainform.tempstream, source.size-source.Position-ahash.DigestSize-Length(Base64Encode(Terminus)), P); |
except |
// Kann auftreten, wenn das Programm beim Verschlüsseln geschlossen wird |
exit; |
end; |
mainform.tempstream.position := 0; |
if V = DC40VTag then |
begin |
if readraw(ahash.DigestSize) <> ahash.CalcStream(mainform.tempstream, mainform.tempstream.size) then |
raise EDECException.Create(mainform.GetLangEntry('hasherror')); |
end; |
if V = VTag then |
begin |
if readraw(ahash.DigestSize) <> ahash.CalcBinary(ahash.CalcStream(mainform.tempstream, mainform.tempstream.size)+Seed+APassword) then |
raise EDECException.Create(mainform.GetLangEntry('hasherror')); |
end; |
finally |
Cipher.Free; |
end; |
except |
// ProtectStream wird in dc_deletefile durchgeführt |
// ProtectStream(Dest); |
raise; |
end; |
finally |
try |
mainform.tempstream.Free; |
except |
// kann passieren, wenn der Stream bereits durch FormClose geschlossen wurde |
end; |
end; |
except |
// Ist eine temporäre Datei und wird bei Programmbeendigung gelöscht |
// dc_deletefile(aoutput); |
mainform.steuerelementesperren(false); |
raise; // programmablauf endet hier |
end; |
finally |
Source.Free; |
end; |
end; |
function FindeDateityp(filename: string): string; |
var |
Reg: TRegistry; |
temp: string; |
begin |
{* Dateityp herausfinden *} |
if ExtractFileExt(filename) <> '' then |
begin |
Reg := TRegistry.Create; |
try |
Reg.RootKey := HKEY_CLASSES_ROOT; |
if Reg.OpenKey(ExtractFileExt(filename), false) then |
begin |
temp := Reg.ReadString(''); |
Reg.CloseKey(); |
if temp <> '' then |
begin |
Reg.OpenKey(temp, false); |
temp := Reg.ReadString(''); |
Reg.CloseKey(); |
if temp <> '' then |
result := temp |
else |
result := ''; {* Weiterleitung hat keinen Namen für den Dateityp *} |
end |
else |
result := ''; {* Konnte keine Weiterleitung in der Registry finden *} |
end |
else |
result := ''; {* Keinen Eintrag der Erweiterung in der Registry gefunden *} |
finally |
Reg.free; |
end; |
end |
else |
result := ''; {* Keine Erweiterung *} |
end; |
{ function SecureDeleteWhenUnlocked(Filename: string): boolean; |
var |
exc: boolean; |
chk: TStream; |
versuche: integer; |
begin |
result := true; |
if fileexists(Filename) then |
begin |
// Wenn die Datei nicht innerhalb von 5 Sekunden freigegeben, es einfach lassen |
versuche := 0; |
while versuche <= 500 do |
begin |
inc(versuche); |
try |
exc := false; |
// DE: shutdownwait=Warte, bis temporäre Dateien freigegeben sind. |
// EN: shutdownwait=Wait, till temporary files are unlocked... |
// mainform.progress_text(mainform.GetLangEntry('shutdownwait')); |
// mainform.progress_position(progress_min); |
application.ProcessMessages; |
chk := TFileStream.Create(Filename, fmOpenWrite or fmShareExclusive); |
Schlafen(10); |
chk.free; |
except |
exc := true; // immer noch gesperrt |
end; |
if not exc then break; // datei ist wieder schreibbar und somit löschbar |
end; |
dc_deletefile(Filename); |
if fileexists(Filename) then result := false; // Fehlgeschlagen |
end; |
end; } |
// http://www.swissdelphicenter.ch/torry/showcode.php?id=2413 |
function DirectoryIsEmpty(Directory: string): Boolean; |
var |
SR: TSearchRec; |
i: Integer; |
begin |
Result := False; |
FindFirst(IncludeTrailingPathDelimiter(Directory) + '*', faAnyFile, SR); |
for i := 1 to 2 do |
if (SR.Name = '.') or (SR.Name = '..') then |
Result := FindNext(SR) <> 0; |
FindClose(SR); |
end; |
procedure DeleteTempFiles(); |
var |
searchResult: TSearchRec; |
allesok, nichtsda: boolean; |
uqnr: string; |
begin |
mainform.zeige_wartenform(true); |
mainform.steuerelementesperren(true); |
try |
allesok := true; |
nichtsda := true; |
if (copy(lowercase(GebeLinieaus(ParamZeile, 2)), 0, 6) = '/only=') or (copy(lowercase(gebelinieaus(ParamZeile, 3)), 0, 6) = '/only=') then |
begin |
// Nur Sitzungsdaten von einer Sitzung löscchen |
if copy(lowercase(GebeLinieaus(ParamZeile, 2)), 0, 6) = '/only=' then |
uqnr := copy(GebeLinieaus(ParamZeile, 2), 7, length(GebeLinieaus(ParamZeile, 2))-6); |
if copy(lowercase(GebeLinieaus(ParamZeile, 3)), 0, 6) = '/only=' then |
uqnr := copy(GebeLinieaus(ParamZeile, 3), 7, length(GebeLinieaus(ParamZeile, 3))-6); |
if FindFirst(GetTempDir+'*.*', faAnyFile, searchResult) = 0 then |
begin |
repeat |
if (lowercase(copy(extractfilename(searchResult.Name), 0, length(extractfilename(searchResult.Name))-length(extractfileext(searchResult.Name)))) = lowercase(TempPre+uqnr)) and fileexists(GetTempDir+searchResult.Name) then |
begin |
nichtsda := false; |
dc_deletefile(GetTempDir+extractfilename(searchResult.Name)); |
if fileexists(GetTempDir+extractfilename(searchResult.Name)) then |
allesok := false; |
end; |
until FindNext(searchResult) <> 0; |
FindClose(searchResult); |
end; |
if (directoryexists(GetTempDir+TempDirect+'\'+uqnr) and not DirectoryIsEmpty(GetTempDir+TempDirect+'\'+uqnr)) then |
begin |
nichtsda := false; |
dc_deletedir(GetTempDir+TempDirect+'\'+uqnr); |
if directoryexists(GetTempDir+TempDirect+'\'+uqnr) then |
allesok := false; |
end; |
end |
else |
begin |
// Alle Sitzungsdaten löschen |
if FindFirst(GetTempDir+'*.*', faAnyFile, searchResult) = 0 then |
begin |
repeat |
if (lowercase(copy(searchResult.Name, 0, length(TempPre))) = lowercase(TempPre)) and fileexists(GetTempDir+searchResult.Name) then |
begin |
nichtsda := false; |
dc_deletefile(GetTempDir+searchResult.Name); |
if fileexists(GetTempDir+searchResult.Name) then |
allesok := false; |
end; |
until FindNext(searchResult) <> 0; |
FindClose(searchResult); |
end; |
if directoryexists(GetTempDir+TempDirect) then |
begin |
nichtsda := false; |
dc_deletedir(GetTempDir+TempDirect); |
if directoryexists(GetTempDir+TempDirect) then |
allesok := false; |
end; |
end; |
if (lowercase(GebeLinieaus(ParamZeile, 2)) <> '/silent') then |
begin |
if nichtsda then |
Application.MessageBox(pchar(MainForm.GetLangEntry('nothingtoclean')), pchar(MainForm.GetLangEntry('information')), MB_OK + MB_ICONASTERISK) |
else |
begin |
if not allesok then |
Application.MessageBox(pchar(MainForm.GetLangEntry('cleaningerror')), pchar(MainForm.GetLangEntry('warning')), MB_OK + MB_ICONEXCLAMATION) |
else |
Application.MessageBox(pchar(MainForm.GetLangEntry('cleaningok')), pchar(MainForm.GetLangEntry('information')), MB_OK + MB_ICONASTERISK); |
end; |
end |
else |
begin |
if not allesok then |
MainForm.errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden. |
end; |
finally |
mainform.steuerelementesperren(false); |
mainform.zeige_wartenform(false); |
end; |
end; |
{ function HexAnsicht(inp: string): string; |
var |
i: integer; |
begin |
result := ''; |
for i := 1 to length(inp) do |
result := result + inttohex(ord(inp[i]), 2) + ' '; |
end; } |
procedure TMainForm.OpenFile(fil: string; alternativer_name: string = ''; dateiensammlung: boolean = false); |
var |
Source: TStream; |
O, T: string; |
F, V: byte; |
Dateigroesse: int64; |
ch: string; |
hash: TDECHashClass; |
cipher: TDECCipherClass; |
InfoSeedSize: byte; |
InfoMode: byte; |
FileInfo: SHFILEINFO; |
procedure Read(var Value; Size: Integer); |
begin |
Source.ReadBuffer(Value, Size); |
end; |
function ReadByte: Byte; |
begin |
Read(Result, SizeOf(Result)); |
end; |
function ReadLong: LongWord; |
begin |
Read(Result, SizeOf(Result)); |
Result := SwapLong(Result); |
end; |
function ReadBinary: Binary; |
begin |
SetLength(Result, ReadByte); |
Read(Result[1], Length(Result)); |
end; |
function ReadRaw(leng: integer): Binary; |
begin |
SetLength(Result, leng); |
Read(Result[1], Length(Result)); |
end; |
procedure Dateibeschaedigt(); |
begin |
// ClientHeight := formanfangsgroesse; |
edt_vle3.Text := '-'; |
edt_vle4.Text := '-'; |
edt_vle5.Text := GetLangEntry('broken'); |
edt_vle6.Text := '-'; |
edt_vle7.Text := '-'; |
lbl_passwort.Visible := false; |
lbl_passwort2.Visible := false; |
edt_passwort.Visible := false; |
edt_passwort2.Visible := false; |
lbl_entropy.Visible := false; |
lbl_equal.Visible := false; |
chk_securedelete.Visible := false; |
chk_compress.Visible := false; |
tmr_capslock.Enabled := false; |
lbl_capswarning.Visible := false; |
img_warning.Visible := false; |
b_decrypt.Visible := false; |
b_encrypt.Visible := false; |
b_direct.Visible := false; |
b_open.Visible := true; |
b_folder.Visible := true; |
if ausgabegesetzt <> '' then |
errorlevel := 1 // DC4 Datei beschädigt |
else |
begin |
// Application.MessageBox(pchar(GetLangEntry('errorreading')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
img_error.visible := true; |
lbl_readerror.visible := true; |
end; |
end; |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
m_close.enabled := true; |
fileopen := fil; |
if (alternativer_name <> '') and (fileexists(alternativer_name) or directoryexists(alternativer_name)) then |
SHGetFileInfo(PChar(alternativer_name), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_LARGEICON) |
else |
SHGetFileInfo(PChar(fil), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_LARGEICON); |
img_type.Picture.Icon.Handle := FileInfo.hIcon; |
if alternativer_name <> '' then |
begin |
edt_vle1.Text := ExtractFileName(alternativer_name); |
if fileexists(alternativer_name) or directoryexists(alternativer_name) then |
edt_vle2.Text := ExtractFilePath(alternativer_name) |
else |
edt_vle2.Text := ExtractFilePath(fil); |
caption := '(De)Coder '+DC4Ver+' [' + extractfilename(alternativer_name) + ']'; |
end |
else |
begin |
edt_vle1.Text := ExtractFileName(fil); |
edt_vle2.Text := ExtractFilePath(fil); |
caption := '(De)Coder '+DC4Ver+' [' + extractfilename(fil) + ']'; |
end; |
edt_vle3.Text := ''; |
edt_vle4.Text := ''; |
edt_vle5.Text := ''; |
edt_vle6.Text := ''; |
edt_vle7.Text := ''; |
edt_passwort.Text := ''; |
edt_passwort2.Text := ''; |
edt_passwort_change(edt_passwort); |
chk_securedelete.Checked := paramzeile_firstposition('/x') <> -1; |
chk_compress.Checked := true; |
// wird durch edt_enc_password_change automatisch aufgerufen |
// edt_enc_password2_change(edt_enc_password2); |
dlg_save_dec.filter := GetLangEntry('filter_all')+' (*.*)|*.*'; |
dlg_save_dec.filename := ''; |
dlg_save_dec.defaultext := ''; |
dlg_save_enc.filename := ''; |
mode := tcUnknown; |
Source := TFileStream.Create(fil, fmOpenRead or fmShareDenyNone); |
try |
try |
if lowercase(extractfileext(fil)) = lowercase(ExtDC4) then |
begin |
edt_vle1.Color := clBtnFace; |
edt_vle1.ReadOnly := true; |
edt_vle1.TabStop := false; |
F := ReadByte; // ID-Flag (Datei/Ordner) |
V := ReadByte; // Versions-Flag |
if V = DC40VTag then edt_vle5.Text := Format(GetLangEntry('encrypted'), ['(De)Coder 4.0']); |
if V = VTag then edt_vle5.Text := Format(GetLangEntry('encrypted'), ['(De)Coder 4.1']); |
if ((F <> DateiTag) and (F <> DateiCompressTag) and (F <> OrdnerTag) and (F <> OrdnerCompressTag)) or ((V <> DC40VTag) and (V <> VTag)) then |
begin |
Dateibeschaedigt; |
steuerelementesperren(false); |
exit; |
end; |
cipher := nil; |
hash := nil; |
if V = DC40VTag then |
begin |
cipher := CipherByName(DC40StCipher); |
hash := HashByName(DC40StHash); |
end; |
if V = VTag then |
begin |
cipher := CipherByName(StCipher); |
hash := HashByName(StHash); |
end; |
cipher := validcipher(cipher); |
hash := validhash(hash); |
// damit später bei DecodeFile entschieden werden kann, ob entzippt werden muss |
flag := F; |
O := ''; |
ch := readraw(1); |
while ch <> FileNameTerminus do |
begin |
O := O + ch; |
ch := readraw(1); |
end; |
if V = VTag then O := Base64Decode(O); |
// Idendity Base |
if (V = VTag) then |
IdentityBase := ReadLong |
else |
IdentityBase := DC40IDBase; |
InfoSeedSize := DC40SeedSize; |
InfoMode := Byte(DC40StMode); |
if (V = VTag) then |
begin |
cipher := CipherByIdentity(ReadLong); |
InfoMode := ReadByte; |
hash := HashByIdentity(ReadLong); |
cipher := ValidCipher(cipher); |
hash := ValidHash(hash); |
InfoSeedSize := ReadByte; |
end; |
if IsFileName(O) then |
begin |
dlg_save_dec.FileName := O; |
dlg_save_dec.DefaultExt := copy(extractfileext(O), 1, length(extractfileext(O))); |
end |
else |
begin |
dateibeschaedigt; |
steuerelementesperren(false); |
exit; |
end; |
edt_vle6.Text := O; |
if (F = OrdnerTag) or (F = OrdnerCompressTag) then |
begin |
T := lang_getdirectoryname; |
ersatzname := O; // damit nach decodefile der richtige ordnername verwendet wird |
end; |
if (F = DateiTag) or (F = DateiCompressTag) then |
begin |
T := FindeDateityp(O); |
ersatzname := ''; |
end; |
if (T = '') then T := Format(GetLangEntry('x-file'), [uppercase(copy(extractfileext(O), 2, length(extractfileext(O))-1))]); |
edt_vle3.Text := T; |
dlg_save_dec.Filter := T+' (*'+lowercase(extractfileext(O))+')|*'+lowercase(extractfileext(O))+'|'+GetLangEntry('filter_all')+' (*.*)|*.*'; |
Dateigroesse := source.size - hash.DigestSize - source.Position - InfoSeedSize; |
If V = VTag then Dateigroesse := Dateigroesse - length(Base64Encode(Terminus)); |
if Dateigroesse < 0 then |
begin |
dateibeschaedigt; |
steuerelementesperren(false); |
exit; |
end |
else |
begin |
if (F = DateiCompressTag) or (F = OrdnerTag) or (F = OrdnerCompressTag) then edt_vle4.Text := GetLangEntry('compressed')+': '; |
edt_vle4.Text := edt_vle4.Text + IntelligenteDateigroesse(Dateigroesse); |
end; |
if V = VTag then |
begin |
source.Position := source.Size - length(Base64Encode(terminus)); |
if ReadRaw(length(Base64Encode(terminus))) <> Base64Encode(terminus) then |
begin |
dateibeschaedigt; |
steuerelementesperren(false); |
exit; |
end; |
end; |
edt_vle7.Text := copy(cipher.ClassName, length(cyprefix)+1, length(cipher.ClassName)-length(cyprefix)) + |
' ('+CipherModeStr[InfoMode]+'), ' + |
copy(hash.ClassName, length(haprefix)+1, length(hash.ClassName)-length(haprefix)) + |
' (' + Format(GetLangEntry('x-byte-seed'), [InfoSeedSize]) + ')'; |
// source.Position := source.size - cipher.context.BufferSize - hash.DigestSize; |
// l_calcmac, HexAnsicht(readraw(cipher.context.BufferSize) |
// l_filehash, HexAnsicht(readraw(hash.DigestSize) |
b_decrypt.Visible := true; |
b_encrypt.Visible := false; |
b_direct.Visible := true; |
b_open.Visible := false; |
b_folder.Visible := false; |
chk_compress.Visible := false; |
mode := tcEncrypted; |
end |
else |
begin |
edt_vle1.Color := clWindow; |
edt_vle1.ReadOnly := false; |
edt_vle1.TabStop := true; |
IdentityBase := IDBase; |
// damit später in EncodeFile nicht der Name der DeCoder.zip geschrieben wird, sondern der Verzeichnisname |
ersatzname := alternativer_name; |
edt_vle5.Text := GetLangEntry('unencrypted'); |
edt_vle6.Text := '-'; |
if alternativer_name <> '' then |
begin |
if alternativer_name = getlangentry('dateiensammlung') then |
T := getlangentry('dateiensammlung') |
else |
T := lang_getdirectoryname; |
end |
else |
begin |
T := FindeDateityp(fil); |
if (T = '') then T := Format(GetLangEntry('x-file'), [uppercase(copy(extractfileext(fil), 2, length(extractfileext(fil))-1))]); |
end; |
edt_vle3.Text := T; |
edt_vle4.Text := IntelligenteDateigroesse(source.size); |
edt_vle7.Text := '-'; |
b_decrypt.Visible := false; |
b_encrypt.Visible := true; |
b_direct.Visible := false; |
b_open.Visible := false; |
b_folder.Visible := false; |
chk_compress.Visible := true; |
if alternativer_name = '' then |
chk_compress.Checked := ZLibCompressFile |
else |
chk_compress.Checked := ZLibCompressFolder; |
mode := tcDecrypted; |
end; |
finally |
source.free; |
end; |
except |
dateibeschaedigt; |
steuerelementesperren(false); |
exit; |
end; |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
lbl_passwort.Visible := true; |
lbl_passwort2.Visible := mode <> tcEncrypted; |
edt_passwort.Visible := true; |
edt_passwort2.Visible := mode <> tcEncrypted; |
lbl_entropy.Visible := mode <> tcEncrypted; |
lbl_equal.Visible := mode <> tcEncrypted; |
chk_securedelete.Visible := true; |
lbl_readerror.Visible := false; |
img_error.Visible := false; |
tmr_capslock.Enabled := true; |
if ((mode = tcDecrypted) or (mode = tcEncrypted)) and (edt_passwort.Showing) then edt_passwort.SetFocus; |
mm_actions.visible := mode <> tcUnknown; |
m_encrypt.Enabled := mode = tcDecrypted; |
m_decrypt.Enabled := mode = tcEncrypted; |
m_direct.Enabled := mode = tcEncrypted; |
if (alternativer_name = getlangentry('dateiensammlung')) and (mode = tcDecrypted) then |
begin |
m_dateiensammlung_add_file.Enabled := true; |
m_dateiensammlung_add_folder.Enabled := true; |
m_dateiensammlung_show.Enabled := true; |
end |
else |
begin |
m_dateiensammlung_add_file.Enabled := false; |
m_dateiensammlung_add_folder.Enabled := false; |
m_dateiensammlung_show.Enabled := false; |
end; |
application.Restore; |
application.BringToFront; |
tmr_refresh.Enabled := true; |
end; |
procedure TMainForm.kazip_onchange(Sender: TObject; ChangeType: Integer); |
begin |
// |
end; |
procedure TMainForm.kazip_overwrite(Sender:TObject; Var FileName : String; Var Action : TOverwriteAction); |
begin |
// |
end; |
procedure TMainForm.form_create(Sender: TObject); |
var |
ini: TIniFile; |
str: TStringList; |
i: integer; |
begin |
ClientHeight := 297; // Bug in Delphi verändert manchmal Formhöhe |
errorlevel := 0; // Keine Fehler |
// Sprachdatei einlesen |
if fileexists(ExtractFilePath(Application.ExeName)+'Language.ini') then |
begin |
ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
// Version prüfen |
if (ini.ReadString('Signature', 'Version', '') <> DC4Ver) then |
begin |
// paramstr() wird verwendet, weil ParamZeile erst bei Start() gesetzt wird |
if not ((paramstr_firstposition('/clean') <> -1) and (paramstr_firstposition('/silent') <> -1)) then |
begin |
Application.MessageBox('Language.ini', 'Signature?', MB_OK + MB_ICONERROR); |
errorlevel := 11; |
close; |
exit; |
end; |
end; |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(name, str.strings[i], '?'); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
end |
else |
begin |
Application.MessageBox('Language.ini', 'Error', MB_OK + MB_ICONERROR); |
errorlevel := 11; |
close; |
exit; |
end; |
// Jetzt gehts los... |
// VCL-Ersatz |
DropFile := TDropFileTarget.Create(self); |
DropFile.Dragtypes := [dtCopy]; |
DropFile.OnDrop := dropfile_drop; |
KaZip := TKaZip.Create(self); |
KaZip.UseTempFiles := false; |
kazip.CompressionType := StZIPType; |
KaZip.OverwriteAction := oaOverwriteAll; |
KaZip.OnDecompressFile := kazip_actions_decompress; |
KaZip.OnCompressFile := kazip_actions_compress; |
KaZip.OnZipChange := kazip_onchange; |
//KaZip.OnZipOpen := kazip_actions; |
KaZip.OnAddItem := kazip_add; |
//KaZip.OnRebuildZip := kazip_actions; |
//KaZip.OnRemoveItems := kazip_actions; |
KaZip.OnOverwriteFile := kazip_overwrite; |
{xpmenu := TXPMenu.Create(self); |
xpmenu.XPControls := [xcMainMenu]; |
xpmenu.Gradient := true; |
xpmenu.Active := true;} |
// Anwendung vorbereiten |
RegisterDECClasses([TCipher_Blowfish, TCipher_Twofish, TCipher_IDEA, |
TCipher_Cast256, TCipher_Mars, TCipher_RC4, TCipher_RC6, TCipher_Rijndael, |
TCipher_Square, TCipher_SCOP, TCipher_Sapphire, TCipher_1DES, TCipher_2DES, |
TCipher_3DES, TCipher_2DDES, TCipher_3DDES, TCipher_3TDES, TCipher_3Way, |
TCipher_Cast128, TCipher_Gost, TCipher_Misty, TCipher_NewDES, TCipher_Q128, |
TCipher_RC2, TCipher_RC5, TCipher_SAFER, TCipher_Shark, TCipher_Skipjack, |
TCipher_TEA, TCipher_TEAN]); |
RegisterDECClasses([THash_MD2, THash_MD4, THash_MD5, THash_SHA, THash_SHA1, |
THash_SHA256, THash_SHA384, THash_SHA512, THash_Sapphire, THash_Panama, |
THash_Tiger, THash_RipeMD128, THash_RipeMD160, THash_RipeMD256, |
THash_RipeMD320, THash_Haval128, THash_Haval160, THash_Haval192, |
THash_Haval224, THash_Haval256, THash_Whirlpool, THash_Whirlpool1, |
THash_Square, THash_Snefru128, THash_Snefru256]); |
SetDefaultCipherClass(CipherByName(StCipher)); |
SetDefaultHashClass(HashByName(StHash)); |
RandomSeed; |
Randomize; |
temp_unique_number := inttostr(random(2147483647)); |
// Formular vorbereiten |
img_warning.Picture.Bitmap.LoadFromResourceName(hInstance, 'WARNING'); |
img_error.Picture.Bitmap.LoadFromResourceName(hInstance, 'ERROR'); |
img_type.Picture.Bitmap.LoadFromResourceName(hInstance, 'NOOPEN'); |
mm_file.Caption := GetLangEntry('file'); |
m_open.Caption := GetLangEntry('openhint'); |
m_folder.Caption := GetLangEntry('folderhint'); |
m_config.Caption := GetLangEntry('confighint'); |
m_close.Caption := GetLangEntry('closefile'); |
m_exit.Caption := GetLangEntry('exit'); |
mm_dateiensammlung.caption := GetLangEntry('dateiensammlung'); |
m_dateiensammlung_neu.caption := GetLangEntry('dateiensammlung_neu'); |
m_dateiensammlung_add_file.caption := GetLangEntry('dateiensammlung_add_file'); |
m_dateiensammlung_add_folder.caption := GetLangEntry('dateiensammlung_add_folder'); |
m_dateiensammlung_show.caption := GetLangEntry('dateiensammlung_show'); |
mm_actions.Caption := GetLangEntry('actions'); |
m_encrypt.Caption := GetLangEntry('enchint'); |
m_decrypt.Caption := GetLangEntry('dechint'); |
m_direct.Caption := GetLangEntry('direct'); |
m_delete.Caption := GetLangEntry('erase'); |
mm_help.Caption := GetLangEntry('help'); |
m_help.Caption := GetLangEntry('helphint'); |
m_web_update.Caption := GetLangEntry('updates'); |
m_web_email.Caption := GetLangEntry('web_email'); |
m_web_keytransmitter.Caption := GetLangEntry('web_keytransmitter'); |
m_info.Caption := GetLangEntry('about'); |
m_web.Caption := GetLangEntry('web_ressources'); |
m_web_dm.Caption := GetLangEntry('web_dm'); |
m_web_vts.Caption := GetLangEntry('web_vts'); |
m_web_project.Caption := GetLangEntry('web_project'); |
m_web_infopages.Caption := GetLangEntry('web_infopages'); |
m_web_forum.Caption := GetLangEntry('web_forum'); |
b_open.Caption := GetLangEntry('openhint'); |
b_folder.Caption := GetLangEntry('folderhint'); |
b_encrypt.Caption := GetLangEntry('enchint'); |
b_decrypt.Caption := GetLangEntry('dechint'); |
b_direct.Caption := GetLangEntry('direct'); |
caption := '(De)Coder '+DC4Ver; |
lbl_vle1.Caption := GetLangEntry('opened'); |
lbl_vle2.Caption := GetLangEntry('location'); |
lbl_vle3.Caption := GetLangEntry('filetype'); |
lbl_vle4.Caption := GetLangEntry('filesize'); |
lbl_vle5.Caption := GetLangEntry('status'); |
lbl_vle6.Caption := GetLangEntry('originalname'); |
lbl_vle7.Caption := GetLangEntry('cryptmode'); |
lbl_passwort.caption := GetLangEntry('password'); |
lbl_passwort2.caption := GetLangEntry('repassword'); |
lbl_equal.Hint := GetLangEntry('equalhint'); |
lbl_equal.caption := ''; |
lbl_entropy.Hint := GetLangEntry('entropy'); |
chk_securedelete.Caption := GetLangEntry('securedelete'); |
chk_compress.Caption := GetLangEntry('compress'); |
img_warning.Hint := GetLangEntry('capswarning'); |
lbl_capswarning.caption := GetLangEntry('capslock'); |
lbl_capswarning.Hint := GetLangEntry('capswarning'); |
dlg_open.filter := GetLangEntry('filter_all')+' (*.*)|*.*|'+GetLangEntry('filter_encrypted')+' (*.dc4)|*.dc4'; |
dlg_open_element.filter := GetLangEntry('filter_all')+' (*.*)|*.*'; |
dlg_save_dec.filter := GetLangEntry('filter_all')+' (*.*)|*.*'; |
dlg_save_enc.filter := GetLangEntry('filter_encrypted')+' (*.dc4)|*.dc4'; |
lbl_readerror.caption := GetLangEntry('errorreading'); |
//progress_position(wartenform.ProgressBar1.min); |
edt_vle1.text := GetLangEntry('nofile'); |
lbl_entropy.Caption := ''; |
DropFile.Register(mainform); |
// Dynamische Größenanpassung der Elemente aufgrund verschiedener Sprachen |
edt_vle1.left := lbl_vle1.Left + 8 + max_7(lbl_vle1.Width, lbl_vle2.Width, lbl_vle3.Width, lbl_vle4.Width, lbl_vle5.Width, lbl_vle6.Width, lbl_vle7.Width); |
edt_vle2.left := edt_vle1.left; |
edt_vle3.left := edt_vle1.left; |
edt_vle4.left := edt_vle1.left; |
edt_vle5.left := edt_vle1.left; |
edt_vle6.left := edt_vle1.left; |
edt_vle7.left := edt_vle1.left; |
edt_vle1.Width := clientwidth - edt_vle1.Left - 8; |
edt_vle2.Width := edt_vle1.Width; |
edt_vle3.Width := edt_vle1.Width; |
edt_vle4.Width := edt_vle1.Width; |
edt_vle5.Width := edt_vle1.Width; |
edt_vle6.Width := edt_vle1.Width; |
edt_vle7.Width := edt_vle1.Width; |
edt_passwort.left := lbl_passwort.left + max_2(lbl_passwort.width, lbl_passwort2.width) + 8; |
edt_passwort2.left := edt_passwort.left; |
lbl_entropy.left := edt_passwort.left + edt_passwort.width + 8; |
lbl_equal.left := lbl_entropy.left; |
end; |
function FindeFreienOrdnernamen(verzeichnis: string): string; |
var |
i: integer; |
act: string; |
begin |
act := verzeichnis; |
i := 1; |
while directoryexists(act) or fileexists(act) do |
begin |
inc(i); |
act := verzeichnis+' ('+inttostr(i)+')'; |
end; |
result := act; |
end; |
function NumberOfFiles(RootFolder: string): integer; |
var |
SR: TSearchRec; |
Num: integer; |
begin |
Num := 0; |
result := 0; |
if RootFolder = '' then |
Exit; |
if AnsiLastChar(RootFolder)^ <> '\' then |
RootFolder := RootFolder + '\'; |
RootFolder := IncludeTrailingPathDelimiter(RootFolder); |
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then |
try |
repeat |
if SR.Attr and faDirectory = faDirectory then |
// --> ein Verzeichnis wurde gefunden |
if (SR.Name <> '.') and (SR.Name <> '..') then |
Num := Num + NumberOfFiles(RootFolder + SR.Name); |
until FindNext(SR) <> 0; |
finally |
FindClose(SR); |
end; |
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then |
try |
repeat |
if SR.Attr and faDirectory <> faDirectory then |
begin |
// --> eine Datei wurde gefunden |
inc(Num); |
end; |
until FindNext(SR) <> 0; |
finally |
FindClose(SR); |
end; |
result := Num; |
end; |
procedure TMainForm.openfolder(fol: string); |
var |
tz: string; |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
// Vorrausberechnung für ZIP-Vorgang |
DateienImOrdner := NumberOfFiles(fol); |
DateienCounter := 0; |
// Tempname |
tz := GetTempDir+TempPre+temp_unique_number+TempExtZip; |
dc_deletefile(tz); |
zipfolder(fol, tz); |
if fileexists(tz) then |
begin |
// Oha! Ein ganzes Laufwerk wurde verschlüsselt (da hat jemand zu viel Zeit...) |
if copy(fol, length(fol)-1, 2) = ':\' then |
fol := GetLangEntry('drive')+' '+copy(fol, 0, 1); |
openfile(tz, fol, false); |
end; |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.zipfolder(verzeichnis, zipname: string); |
begin |
try |
KAZip.Close; |
except |
end; |
progress_position(wartenform.pbr_progress.min); |
progress_text(GetLangEntry('zip_folder'), verzeichnis); |
try |
CreateZipFile(zipname); |
KAZip.Open(zipname); |
kazip.AddFolder(verzeichnis, verzeichnis, '*', true); |
kazip.close; |
except |
// Kann auftreten, wenn Anwendung beim Zippen geschlossen wurde |
end; |
progress_position(wartenform.pbr_progress.min); |
end; |
procedure TMainForm.freestreams(); |
begin |
// ich kenne keine andere möglichkeit, den laufenden cipher-prozess zu beenden |
// ich gebe einfach den stream frei und fange die exceptions ab |
try |
kazip.Close; |
except |
end; |
try |
tempstream.Free; |
except |
end; |
try |
CompressInputStream.free; |
except |
end; |
try |
CompressOutputStream.free; |
except |
end; |
try |
CompressionStream.free; |
except |
end; |
try |
DeCompressionStream.Free; |
except |
end; |
try |
ZippingStream.Free; |
except |
end; |
try |
DropFile.unregister; |
except |
end; |
try |
DropFile.Free; |
except |
end; |
try |
KaZip.Free; |
except |
end; |
try |
BestimmeDateiGroesseSource.Free; |
except |
end; |
{try |
XPMenu.Free; |
except |
end;} |
end; |
procedure TMainForm.form_close(Sender: TObject; var Action: TCloseAction); |
begin |
steuerelementesperren(true); |
bordericons := []; |
// Weitermachen, bis die Dateien nicht mehr gesperrt ist |
// wird nun von eigenen Prozess übernommen |
// SecureDeleteWhenUnlocked(GetTempDir+TempPre+temp_unique_number+TempExtTmp); |
// SecureDeleteWhenUnlocked(GetTempDir+TempPre+temp_unique_number+TempExtZip); |
// Beim Beenden, sollen nur die temporären Dateien der aktuellen Sitzung entfernt werden, |
// daher macht diese Zeile wenig Sinn! |
// if paramzeile_firstposition('/clean') = -1 then |
// ShellExecute(application.Handle, 'open', pchar(application.exename), pchar('/clean /silent'), pchar(extractfilepath(application.exename)), SW_HIDE); |
// Information: Da 10 Sekunden bei /clean /silent gewartet wird, kann bereits hier gestartet werden |
if (paramzeile_firstposition('/clean') = -1) and (errorlevel <> 11) then |
ShellExecute(application.Handle, 'open', pchar(application.exename), pchar('/clean /silent /only='+temp_unique_number), pchar(extractfilepath(application.exename)), SW_HIDE); |
try |
freestreams; |
except |
end; |
halt(mainform.errorlevel); |
//application.Terminate; // Wenn über Befehlszeile verschlüsselt wird, |
// dann ist diese Zeile notwendig, ansonsten endet |
// die Anwendung nie |
end; |
function TMainForm.Unzip(ZipFile, Verzeichnis: string): boolean; |
begin |
result := true; |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
progress_position(wartenform.pbr_progress.min); |
progress_text(GetLangEntry('unzip_folder'), zipfile); |
kazip.Open(ZipFile); |
DateienImOrdner := kazip_numfiles(kazip); |
DateienCounter := 0; |
if (not kazip.IsZipFile) and (not kazip.HasBadEntries) then |
begin |
removedir(Verzeichnis); |
if ausgabegesetzt = '' then |
Application.MessageBox(pchar(GetLangEntry('archivecorrupt')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
result := false; |
end |
else |
begin |
try |
kazip.ExtractAll(Verzeichnis); |
except |
end; |
end; |
kazip.Close; |
progress_position(wartenform.pbr_progress.min); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.m_web_vts_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/', '', '', sw_normal); |
end; |
procedure TMainForm.mm_actions_execute(Sender: TObject); |
begin |
// platzhalter, damit enabled |
end; |
procedure TMainForm.mm_file_execute(Sender: TObject); |
begin |
// platzhalter, damit enabled |
end; |
procedure TMainForm.mm_help_execute(Sender: TObject); |
begin |
// platzhalter, damit enabled |
end; |
procedure TMainForm.m_web_infopages_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/info/decoder/', '', '', sw_normal); |
end; |
procedure TMainForm.m_web_forum_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/devboard/viewforum.php?f=32', '', '', sw_normal); |
end; |
procedure TMainForm.m_help_execute(Sender: TObject); |
begin |
if fileexists(extractfilepath(application.exename)+'help.html') then |
ShellExecute(Application.Handle, 'open', PChar(extractfilepath(application.exename)+'help.html'), '', '', SC_DEFAULT) |
else |
Application.MessageBox(pchar(GetLangEntry('helpnotfound')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
end; |
procedure TMainForm.dropfile_drop(Sender: TObject; ShiftState: TShiftState; |
Point: TPoint; var Effect: Integer); |
var |
i: integer; |
begin |
effect := DROPEFFECT_NONE; // damit stürzt Windows 95 nicht ab |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
if DropFile.Files.Count > 1 then |
begin |
try |
kazip.close; |
except |
end; |
if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then |
deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
for i := 0 to dropfile.Files.Count - 1 do |
begin |
addtozip(dropfile.Files.strings[i], GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) |
end; |
openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true); |
end |
else |
begin |
if fileexists(dropfile.Files.strings[0]) then |
openfile(dropfile.Files.strings[0], '', false); |
if directoryexists(dropfile.Files.strings[0]) then |
openfolder(dropfile.Files.strings[0]); |
end; |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.edt_passwort_change(Sender: TObject); |
var |
qu: extended; |
r, g: integer; |
const |
helligkeit: byte = 128; |
begin |
qu := PassphraseQuality(edt_passwort.Text); |
if qu <= 0.5 then |
begin |
r := helligkeit; |
g := floor(qu*helligkeit*2); |
end |
else |
begin |
r := helligkeit-floor((qu-0.5)*helligkeit*2); |
g := helligkeit; |
end; |
lbl_entropy.Caption := inttostr(round(qu*100)) + '%'; |
lbl_entropy.font.color := rgb(r, g, 0); |
edt_password2_change(sender); |
end; |
procedure TMainForm.m_exit_execute(Sender: TObject); |
begin |
close; |
end; |
// von Krypto Anarkist |
procedure TMainForm.edt_passwort2_keypress(Sender: TObject; var Key: Char); |
begin |
if key = #13 then |
begin |
Key := #0; |
// Ist Shift zusätzlich gedrückt? |
if GetKeyState(VK_Shift) and $8000 <> 0 then |
PostMessage(Handle, WM_NEXTDLGCTL, 1, 0) //edt_enc_password.SetFocus; |
else |
if m_encrypt.Enabled then m_encrypt.Click; |
end; |
edt_passwort_keypress(sender, key); |
end; |
// von Krypto Anarkist |
procedure SimulateKeyDown(Key : byte); |
begin |
keybd_event(Key, 0, 0, 0); |
end; |
// von Krypto Anarkist |
procedure SimulateKeyUp(Key : byte); |
begin |
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); |
end; |
// von Krypto Anarkist |
procedure SimulateKeystroke(Key : byte; extra : DWORD); |
begin |
keybd_event(Key, |
extra, |
0, |
0); |
keybd_event(Key, |
extra, |
KEYEVENTF_KEYUP, |
0); |
end; |
// von Krypto Anarkist |
procedure SendKeys(s : string); |
var |
i : integer; |
flag : bool; |
w : word; |
begin |
{Get the state of the caps lock key} |
flag := not GetKeyState(VK_CAPITAL) and 1 = 0; |
{If the caps lock key is on then turn it off} |
if flag then |
SimulateKeystroke(VK_CAPITAL, 0); |
for i := 1 to Length(s) do begin |
w := VkKeyScan(s[i]); |
{If there is not an error in the key translation} |
if ((HiByte(w) <> $FF) and |
(LoByte(w) <> $FF)) then begin |
{If the key requires the shift key down - hold it down} |
if HiByte(w) and 1 = 1 then |
SimulateKeyDown(VK_SHIFT); |
{Send the VK_KEY} |
SimulateKeystroke(LoByte(w), 0); |
{If the key required the shift key down - release it} |
if HiByte(w) and 1 = 1 then |
SimulateKeyUp(VK_SHIFT); |
end; |
end; |
{if the caps lock key was on at start, turn it back on} |
if flag then |
SimulateKeystroke(VK_CAPITAL, 0); |
end; |
// von Krypto Anarkist |
function genGarbageString(chars: integer):string; |
var |
i: integer; |
begin |
result := ''; |
for i := 1 to chars do |
result := result + chr(random(95)+32); |
end; |
// http://www.dsdt.info/tipps/?id=28 |
function KeyPressed(Key: Integer): Boolean; |
begin |
KeyPressed := (GetAsyncKeyState(Key) and $8000 <> 0); |
end; |
procedure TMainForm.edt_passwort_enter(Sender: TObject); |
begin |
if not KeyPressed(vk_Menu) and not KeyPressed(vk_Control) then |
begin |
tedit(sender).Tag := random(configform.upd_garbarge.Position); |
sendKeys(genGarbageString(tedit(sender).Tag)); |
end; |
end; |
// idee von Krypto Anarkist... hat in seiner komponente keypress verwendet, was bugs bei Strg-Kombinationen verursacht hat |
procedure TMainForm.edt_passwort_keypress(Sender: TObject; var Key: Char); |
begin |
if Key = #13 then |
begin |
if m_encrypt.Enabled then m_encrypt.Click; |
if m_decrypt.Enabled then m_decrypt.Click; |
end |
else |
begin |
if tedit(sender).Tag > 0 then |
begin |
tedit(sender).Tag := tedit(sender).Tag - 1; |
Key := chr(0); |
end |
else |
begin |
if not KeyPressed(vk_Menu) and not KeyPressed(vk_Control) then |
begin |
tedit(sender).Tag := random(configform.upd_garbarge.Position); |
sendKeys(genGarbageString(tedit(sender).Tag)); |
end; |
end; |
end; |
end; |
procedure TMainForm.form_show(Sender: TObject); |
begin |
application.Restore; |
application.BringToFront; |
end; |
procedure TMainForm.steuerelementesperren(sperren: boolean); |
begin |
steuerelementegesperrt := sperren; |
chk_securedelete.enabled := not sperren; |
chk_compress.Enabled := not sperren; |
img_type.enabled := not sperren; |
img_warning.enabled := not sperren; |
lbl_capswarning.enabled := not sperren; |
img_error.enabled := not sperren; |
lbl_readerror.enabled := not sperren; |
lbl_passwort.enabled := not sperren; |
lbl_passwort2.enabled := not sperren; |
lbl_entropy.Enabled := not sperren; |
lbl_equal.enabled := not sperren; |
lbl_vle1.enabled := not sperren; |
lbl_vle2.enabled := not sperren; |
lbl_vle3.enabled := not sperren; |
lbl_vle4.enabled := not sperren; |
lbl_vle5.enabled := not sperren; |
lbl_vle6.enabled := not sperren; |
lbl_vle7.enabled := not sperren; |
edt_vle1.enabled := not sperren; |
edt_vle2.enabled := not sperren; |
edt_vle3.enabled := not sperren; |
edt_vle4.enabled := not sperren; |
edt_vle5.enabled := not sperren; |
edt_vle6.enabled := not sperren; |
edt_vle7.enabled := not sperren; |
mm_file.enabled := not sperren; |
mm_dateiensammlung.enabled := not sperren; |
mm_actions.enabled := not sperren; |
mm_help.enabled := not sperren; |
b_encrypt.enabled := not sperren; |
b_decrypt.enabled := not sperren; |
b_direct.enabled := not sperren; |
b_open.enabled := not sperren; |
b_folder.enabled := not sperren; |
edt_passwort.enabled := not sperren; |
edt_passwort2.enabled := not sperren; |
if sperren then |
screen.Cursor := crHourGlass |
else |
screen.Cursor := crDefault; |
application.ProcessMessages; |
end; |
procedure TMainForm.tmr_refresh_timer(Sender: TObject); |
begin |
// Bei einem Test mit meinem Windows 98 System kam es zu Fehlern bei den vle-Editboxen |
// nach dem Drag&Drop. Daher werden sie her neu gezeichnet nach OpenFile. |
tmr_refresh.Enabled := false; |
mainform.edt_vle1.Repaint; |
mainform.edt_vle2.Repaint; |
mainform.edt_vle3.Repaint; |
mainform.edt_vle4.Repaint; |
mainform.edt_vle5.Repaint; |
mainform.edt_vle6.Repaint; |
mainform.edt_vle7.Repaint; |
lbl_vle1.Repaint; |
lbl_vle2.Repaint; |
lbl_vle3.Repaint; |
lbl_vle4.Repaint; |
lbl_vle5.Repaint; |
lbl_vle6.Repaint; |
lbl_vle7.Repaint; |
img_error.Repaint; |
lbl_readerror.Repaint; |
lbl_entropy.Repaint; |
lbl_equal.Repaint; |
lbl_passwort.Repaint; |
lbl_passwort2.Repaint; |
edt_passwort.Repaint; |
edt_passwort2.Repaint; |
chk_securedelete.Repaint; |
chk_compress.Repaint; |
lbl_capswarning.Repaint; |
img_warning.Repaint; |
img_type.Repaint; |
b_direct.Repaint; |
b_encrypt.Repaint; |
b_decrypt.Repaint; |
b_open.Repaint; |
b_folder.Repaint; |
mainform.Repaint; |
application.ProcessMessages; |
end; |
procedure TMainForm.edt_password2_change(Sender: TObject); |
begin |
if edt_passwort.Text = edt_passwort2.text then |
begin |
lbl_equal.caption := GetLangEntry('equal'); |
lbl_equal.Font.Color := clGreen; |
end |
else |
begin |
lbl_equal.caption := GetLangEntry('notequal'); |
lbl_equal.Font.Color := clMaroon; |
end; |
end; |
procedure TMainForm.edt_dec_password_keypress(Sender: TObject; var Key: Char); |
begin |
if key = #13 then |
begin |
key := #0; |
m_decrypt.Click; |
end; |
end; |
procedure TMainForm.edt_enc_password_keypress(Sender: TObject; |
var Key: Char); |
begin |
if key = #13 then |
begin |
key := #0; |
if not GetKeyState(VK_Shift) and $8000 <> 0 then |
PostMessage(Handle, WM_NEXTDLGCTL, 0, 0); //edt_enc_password2.SetFocus; |
end; |
end; |
procedure TMainForm.tmp_progressdurchlauf_timer(Sender: TObject); |
begin |
if wartenform.pbr_progress.Position + (wartenform.pbr_progress.max div ttimer(self).tag) >= wartenform.pbr_progress.max then |
progress_position(wartenform.pbr_progress.min) |
else |
progress_position(wartenform.pbr_progress.position + wartenform.pbr_progress.max div ttimer(self).tag); |
end; |
procedure TMainForm.tmr_capslock_timer(Sender: TObject); |
begin |
img_warning.visible := IsCapsLockOn; |
lbl_capswarning.visible := IsCapsLockOn; |
end; |
procedure TMainForm.kazip_add(Sender: TObject; ItemName: string); |
begin |
progress_text(GetLangEntry('zip_folder'), ItemName); |
inc(DateienCounter); |
application.processmessages; |
end; |
procedure TMainForm.m_delete_execute(Sender: TObject); |
var |
res: integer; |
old_ersatzname: string; |
begin |
res := Application.MessageBox(pchar(GetLangEntry('erasewarning')), pchar(GetLangEntry('warning')), MB_YESNOCANCEL + MB_ICONEXCLAMATION); |
if res = ID_YES then |
begin |
zeige_wartenform(true); |
steuerelementesperren(true); |
try |
// Ersatzname bei geöffneten Ordner: X:\BlaBlaBla\xxxx\ |
// Ersatzname bei DC4-Datei mit Ordner-Flag: xxxx |
if (copy(ersatzname, 2, 2) = ':\') then |
begin |
old_ersatzname := ersatzname; |
schliessedatei; |
dc_deletedir(old_ersatzname); |
if directoryexists(old_ersatzname) then |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP) |
else |
Application.MessageBox(pchar(GetLangEntry('erasesuccessful')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION); |
end |
else |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
begin |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
end |
else |
begin |
schliessedatei; |
Application.MessageBox(pchar(GetLangEntry('erasesuccessful')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION); |
end; |
end; |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
end; |
procedure TMainForm.m_info_execute(Sender: TObject); |
begin |
AboutForm.PopupParent := Screen.ActiveForm; // http://www.delphipraxis.net/topic75743,0,asc,0.html |
AboutForm.showmodal; |
end; |
procedure TMainForm.m_open_execute(Sender: TObject); |
var |
i: integer; |
begin |
if dlg_open.execute then |
begin |
if dlg_open.Files.Count > 1 then |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
try |
kazip.close; |
except |
end; |
if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then |
deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
for i := 0 to dlg_open.Files.Count - 1 do |
begin |
addtozip(dlg_open.Files.strings[i], GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) |
end; |
openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end |
else |
openfile(dlg_open.FileName, '', false); |
end; |
end; |
// http://www.delphipraxis.net/post43515.html |
Function GetHTML(AUrl: string): string; |
var |
databuffer : array[0..4095] of char; |
ResStr : string; |
hSession, hfile: hInternet; |
dwindex,dwcodelen,dwread,dwNumber: cardinal; |
dwcode : array[1..20] of char; |
res : pchar; |
Str : pchar; |
begin |
ResStr:=''; |
if pos('http://',lowercase(AUrl))=0 then |
AUrl:='http://'+AUrl; |
// Hinzugefügt |
application.ProcessMessages; |
hSession:=InternetOpen('InetURL:/1.0', |
INTERNET_OPEN_TYPE_PRECONFIG, |
nil, |
nil, |
0); |
if assigned(hsession) then |
begin |
// Hinzugefügt |
application.ProcessMessages; |
hfile:=InternetOpenUrl( |
hsession, |
pchar(AUrl), |
nil, |
0, |
INTERNET_FLAG_RELOAD, |
0); |
dwIndex := 0; |
dwCodeLen := 10; |
// Hinzugefügt |
application.ProcessMessages; |
HttpQueryInfo(hfile, |
HTTP_QUERY_STATUS_CODE, |
@dwcode, |
dwcodeLen, |
dwIndex); |
res := pchar(@dwcode); |
dwNumber := sizeof(databuffer)-1; |
if (res ='200') or (res ='302') then |
begin |
while (InternetReadfile(hfile, |
@databuffer, |
dwNumber, |
DwRead)) do |
begin |
// Hinzugefügt |
application.ProcessMessages; |
if dwRead =0 then |
break; |
databuffer[dwread]:=#0; |
Str := pchar(@databuffer); |
resStr := resStr + Str; |
end; |
end |
else |
ResStr := 'Status:'+res; |
if assigned(hfile) then |
InternetCloseHandle(hfile); |
end; |
// Hinzugefügt |
application.ProcessMessages; |
InternetCloseHandle(hsession); |
Result := resStr; |
end; |
procedure TMainForm.m_web_update_execute(Sender: TObject); |
var |
temp: string; |
begin |
zeige_wartenform(true); |
steuerelementesperren(true); |
progress_position(wartenform.pbr_progress.Min); |
progress_text(getlangentry('wait_internet'), ''); |
ttimer(self).tag := 2; |
tmp_progressdurchlauf.Enabled := true; |
temp := GetHTML('http://www.viathinksoft.de/update/?id='+updateid); |
if copy(temp, 0, 7) = 'Status:' then |
begin |
tmp_progressdurchlauf.Enabled := false; |
zeige_wartenform(false); |
steuerelementesperren(false); |
Application.MessageBox(pchar(MainForm.GetLangEntry('update_error')), pchar(MainForm.GetLangEntry('error')), MB_OK + MB_ICONERROR) |
end |
else |
begin |
if GetHTML('http://www.viathinksoft.de/update/?id='+updateid) <> DC4Ver then |
begin |
tmp_progressdurchlauf.Enabled := false; |
zeige_wartenform(false); |
steuerelementesperren(false); |
if Application.MessageBox(pchar(MainForm.GetLangEntry('update_yes')), pchar(MainForm.GetLangEntry('information')), MB_YESNO + MB_ICONASTERISK) = ID_YES then |
shellexecute(application.handle, 'open', pchar('http://www.viathinksoft.de/update/?id=@'+updateid), '', '', sw_normal); |
end |
else |
begin |
tmp_progressdurchlauf.Enabled := false; |
zeige_wartenform(false); |
steuerelementesperren(false); |
Application.MessageBox(pchar(MainForm.GetLangEntry('update_no')), pchar(MainForm.GetLangEntry('information')), MB_OK + MB_ICONASTERISK); |
end; |
end; |
end; |
procedure TMainForm.m_web_email_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', pchar('mailto:info@daniel-marschall.de?subject=(De)Coder '+DC4Ver), '', '', sw_normal); |
end; |
procedure TMainForm.m_config_execute(Sender: TObject); |
begin |
ConfigForm.PopupParent := Screen.ActiveForm; // http://www.delphipraxis.net/topic75743,0,asc,0.html |
ConfigForm.showmodal; |
end; |
procedure TProgress.Process(const Min,Max,Pos: Int64); |
var |
P: Integer; |
begin |
P := floor((Pos - Min) / (Max - Min) * wartenform.pbr_progress.max); |
mainform.progress_position(P); |
application.ProcessMessages; |
end; |
constructor TProgress.Create; |
begin |
inherited Create; |
mainform.progress_position(wartenform.pbr_progress.min); |
end; |
destructor TProgress.Destroy; |
begin |
inherited Destroy; |
mainform.progress_position(wartenform.pbr_progress.min); |
end; |
procedure TMainForm.kazip_actions_compress(Sender: TObject; Current, |
Total: Integer); |
begin |
progress_position(floor(wartenform.pbr_progress.max / DateienImOrdner * (DateienCounter + (Current / Total)))); |
Application.ProcessMessages; |
end; |
procedure TMainForm.kazip_actions_decompress(Sender: TObject; Current, |
Total: Integer); |
begin |
// Jede einzelne Datei: |
// progress_position(floor(Current / Total * wartenform.ProgressBar1.max)); |
inc(DateienCounter); |
progress_position(floor(wartenform.pbr_progress.max / DateienImOrdner * DateienCounter)); |
Application.ProcessMessages; |
end; |
procedure TMainForm.form_closequery(Sender: TObject; var CanClose: Boolean); |
begin |
CanClose := BorderIcons <> []; |
end; |
procedure TMainForm.m_folder_execute(Sender: TObject); |
var |
fol: string; |
begin |
fol := BrowseForFolder(GetLangEntry('foldermessageopen'), true); |
if fol <> '' then |
OpenFolder(fol); |
end; |
// http://www.delphipraxis.net/post478066.html#478066 |
procedure ExecuteProgramm(const PFileName: string); |
var |
SEInfo: TShellExecuteInfo; |
ExitCode: DWORD; |
ExecuteFile: string; |
begin |
ExecuteFile := '"' + PFileName + '"'; |
FillChar(SEInfo, SizeOf(SEInfo), 0); |
SEInfo.cbSize := SizeOf(TShellExecuteInfo); |
with SEInfo do |
begin |
fMask := SEE_MASK_NOCLOSEPROCESS; |
Wnd := Application.Handle; |
lpFile := PChar(ExecuteFile); |
nShow := SW_SHOWNORMAL; |
end; |
if ShellExecuteEx(@SEInfo) then |
begin |
repeat |
Application.ProcessMessages; |
GetExitCodeProcess(SEInfo.hProcess, ExitCode); |
until (ExitCode <> STILL_ACTIVE) or |
Application.Terminated; |
end else |
begin |
// Application.MessageBox('Fehler beim Starten des Programms', 'Hinweis', MB_OK + MB_ICONERROR); |
end; |
end; |
procedure TMainForm.m_direct_execute(Sender: TObject); |
var |
ctemp, temp: string; |
error: boolean; |
begin |
zeige_wartenform(true); |
steuerelementesperren(true); |
try |
forcedirectories(GetTempDir+TempDirect+'\'+temp_unique_number+'\'); |
// Datei |
if (flag = DateiTag) or (flag = DateiCompressTag) then |
begin |
temp := GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text; |
ctemp := GetTempDir+TempPre+temp_unique_number+TempExtCmp; |
dc_deletefile(temp); |
error := false; |
try |
if (flag = DateiTag) then |
DecodeFile(fileopen, temp, edt_passwort.Text); |
if (flag = DateiCompressTag) then |
begin |
DecodeFile(fileopen, ctemp, edt_passwort.Text); |
DeCompress(ctemp, temp); |
end; |
except |
// Kann auftreten, wenn das Programm beim entschlüsseln geschlossen wird |
on EDECException do |
begin |
edt_passwort.Text := ''; |
edt_passwort.SetFocus; // wirkt durch Exception nicht -.- |
error := true; |
if bordericons <> [] then raise; |
end; |
else |
error := true; |
end; |
if not error then |
ExecuteProgramm(temp); |
end; |
// Ordner |
if (flag = OrdnerTag) or (flag = OrdnerCompressTag) then |
begin |
temp := GetTempDir+TempPre+temp_unique_number+TempExtZip; |
ctemp := GetTempDir+TempPre+temp_unique_number+TempExtCmp; |
dc_deletefile(temp); |
error := false; |
try |
if (flag = OrdnerTag) then |
DecodeFile(fileopen, temp, edt_passwort.text); |
if (flag = OrdnerCompressTag) then |
begin |
DecodeFile(fileopen, ctemp, edt_passwort.Text); |
DeCompress(ctemp, temp); |
end; |
except |
// Kann auftreten, wenn das Programm beim entschlüsseln geschlossen wird |
edt_passwort.Text := ''; |
edt_passwort.SetFocus; // wirkt durch Exception nicht -.- |
error := true; |
if bordericons <> [] then raise; |
end; |
if not error then |
begin |
if directoryexists(GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text) then |
dc_deletedir(GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text); |
mkdir(GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text); |
if Unzip(temp, GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text) then |
begin |
ExecuteProgramm(GetTempDir+TempDirect+'\'+temp_unique_number+'\'+edt_vle6.text); |
end; |
end; |
end; |
finally |
steuerelementesperren(false); |
mainform.zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.m_dateiensammlung_add_file_click(Sender: TObject); |
var |
i: integer; |
begin |
if dlg_open_element.Execute then |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
if dlg_open_element.Files.Count > 1 then |
begin |
for i := 0 to dlg_open_element.Files.Count - 1 do |
begin |
addtozip(dlg_open_element.Files.Strings[i], fileopen); |
end; |
end |
else |
begin |
addtozip(dlg_open_element.filename, fileopen); |
end; |
edt_vle4.Text := BestimmeDateiGroesse(fileopen); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
end; |
function TMainForm.BestimmeDateiGroesse(filename: string): string; |
begin |
BestimmeDateiGroesseSource := TFileStream.Create(filename, fmOpenRead or fmShareDenyNone); |
try |
try |
result := IntelligenteDateigroesse(BestimmeDateiGroesseSource.size); |
except |
result := IntelligenteDateigroesse(0); |
end; |
finally |
BestimmeDateiGroesseSource.free; |
end; |
end; |
procedure TMainForm.m_dateiensammlung_add_folder_click(Sender: TObject); |
var |
fol: string; |
begin |
fol := BrowseForFolder(getlangentry('dateisammlung_folder_add_message'), true); |
if fol <> '' then |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
addtozip(fol, fileopen); |
edt_vle4.Text := BestimmeDateiGroesse(fileopen); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
end; |
procedure TMainForm.m_dateiensammlung_neu_click(Sender: TObject); |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
try |
kazip.close; |
except |
end; |
if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then |
deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.m_dateiensammlung_show_click(Sender: TObject); |
begin |
elementeform.PopupParent := Screen.ActiveForm; // http://www.delphipraxis.net/topic75743,0,asc,0.html |
elementeform.showmodal; |
end; |
procedure TMainForm.m_decrypt_execute(Sender: TObject); |
var |
temp, ctemp, fol, neu: string; |
error: boolean; |
begin |
zeige_wartenform(true); |
steuerelementesperren(true); |
try |
// Datei |
if (flag = DateiTag) or (flag = DateiCompressTag) then |
begin |
temp := GetTempDir+TempPre+temp_unique_number+TempExtTmp; |
ctemp := GetTempDir+TempPre+temp_unique_number+TempExtCmp; |
dc_deletefile(temp); |
error := false; |
try |
DecodeFile(fileopen, temp, edt_passwort.Text); |
if flag = DateiCompressTag then |
DeCompress(temp, ctemp) |
else |
ctemp := temp; |
except |
// Kann auftreten, wenn das Programm beim entschlüsseln geschlossen wird |
on EDECException do |
begin |
edt_passwort.Text := ''; |
edt_passwort.SetFocus; // wirkt durch Exception nicht -.- |
error := true; |
if bordericons <> [] then raise; |
end; |
else |
error := true; |
end; |
// Wenn es zu keinem Fehler kam, |
// dann den User fragen, wohin endgültig speichern |
if not error then |
begin |
if ausgabegesetzt <> '' then |
begin |
// Ausgabeverzeichnis ist durch Befehlszeileneingabe bereits gesetzt |
dc_deletefile(ausgabegesetzt); |
if movefile(pchar(ctemp), pchar(ausgabegesetzt)) then |
begin |
if chk_securedelete.Checked then |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
errorlevel := 6; |
end; |
end |
else |
errorlevel := 5; |
end |
else |
begin |
if dlg_save_dec.Execute then |
begin |
dc_deletefile(dlg_save_dec.FileName); |
forcedirectories(extractfilepath(dlg_save_dec.filename)); |
if movefile(pchar(ctemp), pchar(dlg_save_dec.FileName)) then |
begin |
if chk_securedelete.Checked then |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('warning')), MB_OK + MB_ICONEXCLAMATION) |
else |
schliessedatei; |
end; |
end |
else |
Application.MessageBox(pchar(GetLangEntry('moveerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
end |
end; |
end; |
end; |
// Ordner |
if (flag = OrdnerTag) or (flag = OrdnerCompressTag) then |
begin |
temp := GetTempDir+TempPre+temp_unique_number+TempExtZip; |
ctemp := GetTempDir+TempPre+temp_unique_number+TempExtCmp; |
dc_deletefile(temp); |
error := false; |
try |
DecodeFile(fileopen, temp, edt_passwort.text); |
if flag = OrdnerCompressTag then |
begin |
DeCompress(temp, ctemp); |
dc_deletefile(temp); |
movefile(pchar(ctemp), pchar(temp)); // KaZIP kann nur ZIP-Dateien öffnen, keine CMP |
end; |
except |
// Kann auftreten, wenn das Programm beim entschlüsseln geschlossen wird |
edt_passwort.Text := ''; |
edt_passwort.SetFocus; // wirkt durch Exception nicht -.- |
error := true; |
if bordericons <> [] then raise; |
end; |
// Wenn es zu keinem Fehler kam, |
// dann den User fragen, wohin extrahieren (unzippen) |
if not error then |
begin |
if (ausgabegesetzt <> '') then |
begin |
if copy(ausgabegesetzt, length(ausgabegesetzt), 1) = '\' then |
neu := FindeFreienOrdnernamen(ausgabegesetzt+ersatzname) |
else |
neu := FindeFreienOrdnernamen(ausgabegesetzt+'\'+ersatzname); |
if not ForceDirectories(neu) then |
errorlevel := 4 // Ausgabeverzeichnis konnte nicht erstellt werden |
else |
begin |
if Unzip(temp, neu) then |
begin |
if chk_securedelete.Checked then |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
errorlevel := 6; |
end; |
end |
else |
errorlevel := 7; |
end; |
end |
else |
begin |
fol := BrowseForFolder(GetLangEntry('foldermessagesave'), true); |
if fol <> '' then |
begin |
neu := FindeFreienOrdnernamen(fol+'\'+ersatzname); |
if not ForceDirectories(neu) then |
Application.MessageBox(pchar(GetLangEntry('mkdirerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP) |
else |
begin |
if Unzip(temp, neu) then |
begin |
if chk_securedelete.Checked then |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP) |
else |
schliessedatei; |
end; |
end; |
end; |
end; |
end; |
end; |
end; |
// Wird sowieso beim Programmende ausgeführt |
// dc_deletefile(temp); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
procedure TMainForm.m_encrypt_execute(Sender: TObject); |
var |
temp: string; |
error: boolean; |
begin |
if edt_passwort.text <> edt_passwort2.text then |
Application.MessageBox(pchar(GetLangEntry('passwordsdifferent')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP) |
else |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
temp := GetTempDir+TempPre+temp_unique_number+TempExtTmp; |
dc_deletefile(temp); |
error := false; |
try |
EncodeFile(fileopen, temp, edt_passwort.text); |
except |
// Kann auftreten, wenn das Programm beim verschlüsseln geschlossen wird |
on EDECException do |
begin |
error := true; |
if bordericons <> [] then raise; |
end; |
else |
error := true; |
end; |
// Wenn es zu keinem Fehler kam, |
// dann den User fragen, wohin endgültig speichern |
if not error then |
begin |
if ausgabegesetzt <> '' then |
begin |
// Ausgabeverzeichnis ist durch Befehlszeileneingabe bereits gesetzt |
dc_deletefile(ausgabegesetzt); |
if (extractfilepath(ausgabegesetzt) <> '') and not ForceDirectories(extractfilepath(ausgabegesetzt)) then |
errorlevel := 4 |
else |
begin |
if movefile(pchar(temp), pchar(ausgabegesetzt)) then |
begin |
if chk_securedelete.Checked then |
begin |
if ersatzname <> '' then |
begin |
try |
dc_deletedir(ersatzname); |
except |
// Fehler abfangen, sodas er nicht durchgeleitet wird und EL=2 verursacht |
end; |
if directoryexists(ersatzname) then |
errorlevel := 6; |
end |
else |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
errorlevel := 6; |
end; |
end; |
end |
else |
errorlevel := 5; |
end; |
end |
else |
begin |
if dlg_save_enc.Execute then |
begin |
dc_deletefile(dlg_save_enc.FileName); |
forcedirectories(extractfilepath(dlg_save_enc.filename)); |
if movefile(pchar(temp), pchar(dlg_save_enc.FileName)) then |
begin |
if chk_securedelete.Checked then |
begin |
if ersatzname <> '' then |
begin |
dc_deletedir(ersatzname); |
if directoryexists(ersatzname) then |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('warning')), MB_OK + MB_ICONEXCLAMATION) |
else |
schliessedatei; |
end |
else |
begin |
dc_deletefile(fileopen); |
if fileexists(fileopen) then |
Application.MessageBox(pchar(GetLangEntry('notdeleted')), pchar(GetLangEntry('warning')), MB_OK + MB_ICONEXCLAMATION) |
else |
schliessedatei; |
end; |
end; |
end |
else |
Application.MessageBox(pchar(GetLangEntry('moveerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONSTOP); |
end |
end; |
end; |
// Wird bei Programmbeendigung ausgeführt |
// dc_deletefile(temp); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
end; |
procedure TMainForm.m_close_execute(Sender: TObject); |
begin |
SchliesseDatei; |
end; |
procedure TMainForm.schliessedatei(); |
begin |
m_close.Enabled := false; |
mm_actions.visible := false; |
m_dateiensammlung_add_file.Enabled := false; |
m_dateiensammlung_add_folder.Enabled := false; |
m_dateiensammlung_show.Enabled := false; |
fileopen := ''; |
ersatzname := ''; |
ausgabegesetzt := ''; |
flag := 0; |
mode := tcUnknown; |
kazip.Close; |
edt_passwort.Text := ''; |
edt_passwort2.Text := ''; |
chk_securedelete.Checked := false; |
caption := '(De)Coder '+DC4Ver; |
progress_position(wartenform.pbr_progress.min); |
edt_vle1.Text := GetLangEntry('nofile'); |
edt_vle2.text := '-'; |
edt_vle3.Text := '-'; |
edt_vle4.Text := '-'; |
edt_vle5.Text := '-'; |
edt_vle6.Text := '-'; |
edt_vle7.Text := '-'; |
edt_vle1.Color := clBtnFace; |
edt_vle1.ReadOnly := true; |
edt_vle1.TabStop := false; |
b_decrypt.Visible := false; |
b_encrypt.Visible := false; |
b_direct.Visible := false; |
b_open.Visible := true; |
b_folder.Visible := true; |
lbl_passwort.Visible := false; |
lbl_passwort2.Visible := false; |
edt_passwort.Visible := false; |
edt_passwort2.Visible := false; |
lbl_entropy.Visible := false; |
lbl_equal.Visible := false; |
chk_securedelete.Visible := false; |
lbl_readerror.Visible := false; |
img_error.Visible := false; |
tmr_capslock.Enabled := false; |
lbl_capswarning.Visible := false; |
img_warning.Visible := false; |
chk_compress.Visible := false; |
img_type.Picture.Bitmap.LoadFromResourceName(hInstance, 'NOOPEN'); |
end; |
procedure TMainForm.m_web_keytransmitter_click(Sender: TObject); |
begin |
shellexecute(application.Handle, 'open', 'http://www.viathinksoft.de/keytransmitter/', '', '', sw_normal); |
end; |
{ Allgemeine Funktion zum Verarbeiten der Kommandozeilenparameter } |
// ursprünglich von OneInst |
procedure TMainForm.ProcessCommandline(lpData: Pointer); |
var |
arbeitsverzeichnis: string; |
i: integer; |
SR: TSearchRec; |
ts: tstringlist; |
fehler: boolean; |
begin |
ParamZeile := ParamBlobToStr(lpData); |
// Syntaxprüfung der Befehlszeile |
if ((paramzeile_firstposition('/c') <> -1) and (ZaehleLinien(ParamZeile) > paramzeile_firstposition('/c')+2)) or |
((paramzeile_firstposition('/x') <> -1) and (ZaehleLinien(ParamZeile) > paramzeile_firstposition('/x')+2)) or |
((paramzeile_firstposition('/e') <> -1) and (ZaehleLinien(ParamZeile) > paramzeile_firstposition('/e')+1)) or |
((paramzeile_firstposition('/?') <> -1) and (ZaehleLinien(ParamZeile) > paramzeile_firstposition('/?')+0)) or |
((paramzeile_firstposition('/clean') <> -1) and (ZaehleLinien(ParamZeile) > paramzeile_firstposition('/clean')+2)) then |
begin |
errorlevel := 3; // Falsche Syntax |
end; |
// Anwendung dient nur als Hilfeaufruf |
if GebeLinieaus(ParamZeile, 1) = '/?' then |
begin |
m_help.Click; |
close; |
exit; |
end; |
// Anwendung dient nur als Cleaner |
if GebeLinieaus(ParamZeile, 1) = '/clean' then |
begin |
// 10 Sekunden warten, bis ggf. die temporären Dateien freigegeben wurden |
if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/silent') then Schlafen(10000); |
DeleteTempFiles; |
close; |
exit; |
end; |
// Verarbeitung der Befehlszeile |
if (ZaehleLinien(ParamZeile) > 1) then |
begin |
if (paramzeile_firstposition('/c') <> -1) then |
begin |
GetDir(0, arbeitsverzeichnis); |
ausgabegesetzt := arbeitsverzeichnis+'\'+GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+2); |
if paramzeile_firstposition('/c') = 2 then |
begin |
// 1 Datei soll geöffnet werden |
if not fileexists(GebeLinieaus(ParamZeile, 1)) and not directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
errorlevel := 9; // Datei oder Ordner nicht gefunden. |
end |
else |
begin |
ts := tstringlist.Create; |
try |
if FindFirst(GebeLinieaus(ParamZeile, 1), faAnyFile, SR) = 0 then |
try |
repeat |
ts.Add(sr.Name); |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
if ts.count = 1 then |
begin |
if fileexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
openfile(GebeLinieaus(ParamZeile, 1), '', true); |
if mode = tcDecrypted then |
begin |
// Datei verschlüsseln |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
if mode = tcEncrypted then |
begin |
// Datei oder Ordner entschlüsseln |
if lowercase(extractfileext(ausgabegesetzt)) = lowercase(ExtDC4) then |
ausgabegesetzt := copy(ausgabegesetzt, 0, length(ausgabegesetzt)-length(ExtDC4)); // Ausgabe darf nicht .dc4 haben! |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
try |
m_decrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
end |
else if directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
// Ordner verschlüsseln |
openfolder(GebeLinieaus(ParamZeile, 1)); |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
end |
else |
begin |
// Dateiliste soll angelegt werden |
m_dateiensammlung_neu.Click; |
for i := 0 to ts.Count - 1 do |
begin |
addtozip(ts.Strings[i], fileopen); |
end; |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
finally |
ts.Free; |
end; |
end; |
end |
else |
begin |
// Dateiliste soll angelegt werden |
m_dateiensammlung_neu.Click; |
for i := 1 to paramzeile_firstposition('/c') - 1 do |
begin |
addtozip(dlg_open_element.filename, fileopen); |
end; |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/c')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
close; |
end |
// Der Unterschied von /x zu /c ist, dass openfile() anders reagiert und die checkbox chk_securedelete anwählt |
else if (paramzeile_firstposition('/x') <> -1) then |
begin |
GetDir(0, arbeitsverzeichnis); |
ausgabegesetzt := arbeitsverzeichnis+'\'+GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+2); |
if paramzeile_firstposition('/x') = 2 then |
begin |
// 1 Datei soll geöffnet werden |
if not fileexists(GebeLinieaus(ParamZeile, 1)) and not directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
errorlevel := 9; // Datei oder Ordner nicht gefunden. |
end |
else |
begin |
ts := tstringlist.Create; |
try |
if FindFirst(GebeLinieaus(ParamZeile, 1), faAnyFile, SR) = 0 then |
try |
repeat |
ts.Add(sr.Name); |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
if ts.count = 1 then |
begin |
if fileexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
openfile(GebeLinieaus(ParamZeile, 1), '', true); |
if mode = tcDecrypted then |
begin |
// Datei verschlüsseln |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
if mode = tcEncrypted then |
begin |
// Datei oder Ordner entschlüsseln |
if lowercase(extractfileext(ausgabegesetzt)) = lowercase(ExtDC4) then |
ausgabegesetzt := copy(ausgabegesetzt, 0, length(ausgabegesetzt)-length(ExtDC4)); // Ausgabe darf nicht .dc4 haben! |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
try |
m_decrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
end |
else if directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
// Ordner verschlüsseln |
openfolder(GebeLinieaus(ParamZeile, 1)); |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
end |
else |
begin |
// Dateiliste soll angelegt werden |
m_dateiensammlung_neu.Click; |
for i := 0 to ts.Count - 1 do |
begin |
addtozip(ts.Strings[i], fileopen); |
end; |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
finally |
ts.Free; |
end; |
end; |
end |
else |
begin |
// Dateiliste soll angelegt werden |
m_dateiensammlung_neu.Click; |
for i := 1 to paramzeile_firstposition('/x') - 1 do |
begin |
addtozip(dlg_open_element.filename, fileopen); |
end; |
edt_passwort.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
edt_passwort2.Text := GebeLinieaus(ParamZeile, paramzeile_firstposition('/x')+1); |
if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then |
ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben! |
try |
m_encrypt.Click; |
except |
// Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen |
// bleiben, deswegen der Try-Except-Block. |
errorlevel := 2; // Fehler bei Ver/Entschlüsselung |
end; |
end; |
close; |
end |
// Dateien löschen |
else if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/e') then |
begin |
if (ZaehleLinien(ParamZeile) = 2) or ((ZaehleLinien(ParamZeile) = 3) and (GebeLinieaus(ParamZeile, 3) = '/notsilent')) then |
begin |
ts := tstringlist.Create; |
try |
if FindFirst(GebeLinieaus(ParamZeile, 1), faAnyFile, SR) = 0 then |
try |
repeat |
ts.add(sr.name); |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
if ts.count = 1 then |
begin |
// 1 Datei |
if directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
dc_deletedir(GebeLinieaus(ParamZeile, 1)); |
if directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR) |
else |
errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden. |
end |
else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION) |
end |
else if fileexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
dc_deletefile(GebeLinieaus(ParamZeile, 1)); |
if fileexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR) |
else |
errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden. |
end |
else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION) |
end |
else |
begin |
if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
Application.MessageBox(pchar(GetLangEntry('fileorfoldernotfound')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR) |
else |
errorlevel := 9; // Datei oder Ordner nicht gefunden. |
end; |
end |
else |
begin |
// Wildcard verwendet |
fehler := false; |
for i := 0 to ts.count - 1 do |
begin |
if fileexists(ts.strings[i]) then |
dc_deletefile(ts.strings[i]); |
if directoryexists(ts.strings[i]) then |
dc_deletedir(ts.strings[i]); |
if (fileexists(ts.strings[i]) or directoryexists(ts.strings[i])) and |
(GebeLinieaus(ParamZeile, 3) = '/notsilent') then |
begin |
fehler := true; |
end; |
end; |
if fehler then |
Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR) |
end; |
finally |
ts.free; |
end; |
end |
else |
begin |
errorlevel := 3; // Falsche Syntax |
end; |
close; |
end |
// Mehrere Dateien öffnen |
else |
begin |
show; |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
try |
kazip.close; |
except |
end; |
if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip); |
for i := 1 to ZaehleLinien(ParamZeile) do |
begin |
addtozip(GebeLinieaus(ParamZeile, i), GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) |
end; |
openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
application.Restore; |
application.BringToFront; |
end; |
end |
else |
begin |
show; |
ts := tstringlist.Create; |
try |
if FindFirst(GebeLinieaus(ParamZeile, 1), faAnyFile, SR) = 0 then |
try |
repeat |
ts.Add(sr.Name); |
until FindNext(SR) <> 0; |
finally |
SysUtils.FindClose(SR); |
end; |
if ts.Count = 1 then |
begin |
// 1 Datei öffnen |
if fileexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
openfile(GebeLinieaus(ParamZeile, 1), '', false); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end |
else if directoryexists(GebeLinieaus(ParamZeile, 1)) then |
begin |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
openfolder(GebeLinieaus(ParamZeile, 1)); |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
end |
else if ts.Count > 1 then |
begin |
// Dateiliste soll angelegt werden |
steuerelementesperren(true); |
zeige_wartenform(true); |
try |
m_dateiensammlung_neu.Click; |
for i := 0 to ts.count - 1 do |
begin |
addtozip(ts.Strings[i], fileopen); |
end; |
finally |
steuerelementesperren(false); |
zeige_wartenform(false); |
end; |
end; |
finally |
ts.free; |
end; |
application.Restore; |
application.BringToFront; |
end; |
end; |
procedure TMainForm.CreateZipFile(zipfile: string); |
begin |
// kazip.CreateZip(zipfile); |
try |
ZippingStream := TFileStream.Create(zipfile, fmOpenReadWrite or fmCreate); |
try |
KAZip.CreateZip(ZippingStream); |
finally |
ZippingStream.Free; |
end; |
except |
end; |
end; |
procedure TMainForm.addtozip(fileorfolder, zipfile: string); |
begin |
try |
kazip.close; |
except |
end; |
DateienImOrdner := 0; |
if directoryexists(fileorfolder) then |
DateienImOrdner := NumberOfFiles(fileorfolder); |
if fileexists(fileorfolder) then |
DateienImOrdner := 1; |
DateienCounter := 0; |
kazip.Open(zipfile); |
try |
try |
if fileexists(fileorfolder) then |
kazip.AddFile(fileorfolder, extractfilename(fileorfolder)); |
if directoryexists(fileorfolder) then |
kazip.AddFolder(fileorfolder, extractfilepath(fileorfolder), '*', true); |
except |
end; |
finally |
kazip.Close; |
end; |
end; |
// von OneInst |
procedure TMainForm.Start; |
var |
lpData: Pointer; |
cbData: DWORD; |
begin |
lpData := ParamStrToBlob(cbData); |
try |
ProcessCommandline(lpData); |
finally |
FreeMemory(lpData); |
end; |
end; |
end. |
/trunk/Quelltext/SecureMoveExt.bdsproj |
---|
0,0 → 1,182 |
<?xml version="1.0" encoding="utf-8"?> |
<BorlandProject> |
<PersonalityInfo> |
<Option> |
<Option Name="Personality">Delphi.Personality</Option> |
<Option Name="ProjectType">VCLApplication</Option> |
<Option Name="Version">1.0</Option> |
<Option Name="GUID">{281D38CE-12FE-4572-9616-B700222E76CA}</Option> |
</Option> |
</PersonalityInfo> |
<Delphi.Personality> |
<Source> |
<Source Name="MainSource">SecureMoveExt.dpr</Source> |
</Source> |
<FileVersion> |
<FileVersion Name="Version">7.0</FileVersion> |
</FileVersion> |
<Compiler> |
<Compiler Name="A">8</Compiler> |
<Compiler Name="B">0</Compiler> |
<Compiler Name="C">1</Compiler> |
<Compiler Name="D">1</Compiler> |
<Compiler Name="E">0</Compiler> |
<Compiler Name="F">0</Compiler> |
<Compiler Name="G">1</Compiler> |
<Compiler Name="H">1</Compiler> |
<Compiler Name="I">1</Compiler> |
<Compiler Name="J">0</Compiler> |
<Compiler Name="K">0</Compiler> |
<Compiler Name="L">1</Compiler> |
<Compiler Name="M">0</Compiler> |
<Compiler Name="N">1</Compiler> |
<Compiler Name="O">1</Compiler> |
<Compiler Name="P">1</Compiler> |
<Compiler Name="Q">0</Compiler> |
<Compiler Name="R">0</Compiler> |
<Compiler Name="S">0</Compiler> |
<Compiler Name="T">0</Compiler> |
<Compiler Name="U">0</Compiler> |
<Compiler Name="V">1</Compiler> |
<Compiler Name="W">0</Compiler> |
<Compiler Name="X">1</Compiler> |
<Compiler Name="Y">1</Compiler> |
<Compiler Name="Z">1</Compiler> |
<Compiler Name="ShowHints">True</Compiler> |
<Compiler Name="ShowWarnings">True</Compiler> |
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler> |
<Compiler Name="NamespacePrefix"></Compiler> |
<Compiler Name="GenerateDocumentation">False</Compiler> |
<Compiler Name="DefaultNamespace"></Compiler> |
<Compiler Name="SymbolDeprecated">True</Compiler> |
<Compiler Name="SymbolLibrary">True</Compiler> |
<Compiler Name="SymbolPlatform">True</Compiler> |
<Compiler Name="SymbolExperimental">True</Compiler> |
<Compiler Name="UnitLibrary">True</Compiler> |
<Compiler Name="UnitPlatform">True</Compiler> |
<Compiler Name="UnitDeprecated">True</Compiler> |
<Compiler Name="UnitExperimental">True</Compiler> |
<Compiler Name="HResultCompat">True</Compiler> |
<Compiler Name="HidingMember">True</Compiler> |
<Compiler Name="HiddenVirtual">True</Compiler> |
<Compiler Name="Garbage">True</Compiler> |
<Compiler Name="BoundsError">True</Compiler> |
<Compiler Name="ZeroNilCompat">True</Compiler> |
<Compiler Name="StringConstTruncated">True</Compiler> |
<Compiler Name="ForLoopVarVarPar">True</Compiler> |
<Compiler Name="TypedConstVarPar">True</Compiler> |
<Compiler Name="AsgToTypedConst">True</Compiler> |
<Compiler Name="CaseLabelRange">True</Compiler> |
<Compiler Name="ForVariable">True</Compiler> |
<Compiler Name="ConstructingAbstract">True</Compiler> |
<Compiler Name="ComparisonFalse">True</Compiler> |
<Compiler Name="ComparisonTrue">True</Compiler> |
<Compiler Name="ComparingSignedUnsigned">True</Compiler> |
<Compiler Name="CombiningSignedUnsigned">True</Compiler> |
<Compiler Name="UnsupportedConstruct">True</Compiler> |
<Compiler Name="FileOpen">True</Compiler> |
<Compiler Name="FileOpenUnitSrc">True</Compiler> |
<Compiler Name="BadGlobalSymbol">True</Compiler> |
<Compiler Name="DuplicateConstructorDestructor">True</Compiler> |
<Compiler Name="InvalidDirective">True</Compiler> |
<Compiler Name="PackageNoLink">True</Compiler> |
<Compiler Name="PackageThreadVar">True</Compiler> |
<Compiler Name="ImplicitImport">True</Compiler> |
<Compiler Name="HPPEMITIgnored">True</Compiler> |
<Compiler Name="NoRetVal">True</Compiler> |
<Compiler Name="UseBeforeDef">True</Compiler> |
<Compiler Name="ForLoopVarUndef">True</Compiler> |
<Compiler Name="UnitNameMismatch">True</Compiler> |
<Compiler Name="NoCFGFileFound">True</Compiler> |
<Compiler Name="ImplicitVariants">True</Compiler> |
<Compiler Name="UnicodeToLocale">True</Compiler> |
<Compiler Name="LocaleToUnicode">True</Compiler> |
<Compiler Name="ImagebaseMultiple">True</Compiler> |
<Compiler Name="SuspiciousTypecast">True</Compiler> |
<Compiler Name="PrivatePropAccessor">True</Compiler> |
<Compiler Name="UnsafeType">False</Compiler> |
<Compiler Name="UnsafeCode">False</Compiler> |
<Compiler Name="UnsafeCast">False</Compiler> |
<Compiler Name="OptionTruncated">True</Compiler> |
<Compiler Name="WideCharReduced">True</Compiler> |
<Compiler Name="DuplicatesIgnored">True</Compiler> |
<Compiler Name="UnitInitSeq">True</Compiler> |
<Compiler Name="LocalPInvoke">True</Compiler> |
<Compiler Name="MessageDirective">True</Compiler> |
<Compiler Name="CodePage"></Compiler> |
</Compiler> |
<Linker> |
<Linker Name="MapFile">0</Linker> |
<Linker Name="OutputObjs">0</Linker> |
<Linker Name="GenerateHpps">False</Linker> |
<Linker Name="ConsoleApp">1</Linker> |
<Linker Name="DebugInfo">False</Linker> |
<Linker Name="RemoteSymbols">False</Linker> |
<Linker Name="GenerateDRC">False</Linker> |
<Linker Name="MinStackSize">16384</Linker> |
<Linker Name="MaxStackSize">1048576</Linker> |
<Linker Name="ImageBase">4194304</Linker> |
<Linker Name="ExeDescription"></Linker> |
</Linker> |
<Directories> |
<Directories Name="OutputDir"></Directories> |
<Directories Name="UnitOutputDir"></Directories> |
<Directories Name="PackageDLLOutputDir"></Directories> |
<Directories Name="PackageDCPOutputDir"></Directories> |
<Directories Name="SearchPath">..\VCL_DRAGDROP;..\VCL_DEC</Directories> |
<Directories Name="Packages">vcl;vclx;VclSmp;vcldb;vclado60;Ibevnt;Vclbde60;vcldbx;qrpt;teeui;teedb;tee;dss;teeqr;vclib;Vclmid60;vclie;inetdb;inet;nmfast;webmid60;dclocx60;Vclsql60;dclaxserver60;MenuBands;DragDropD6</Directories> |
<Directories Name="Conditionals"></Directories> |
<Directories Name="DebugSourceDirs"></Directories> |
<Directories Name="UsePackages">False</Directories> |
</Directories> |
<Parameters> |
<Parameters Name="RunParams"></Parameters> |
<Parameters Name="HostApplication">c:\winnt\explorer.exe</Parameters> |
<Parameters Name="Launcher"></Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD"></Parameters> |
<Parameters Name="Debug Symbols Search Path"></Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<Language> |
<Language Name="ActiveLang"></Language> |
<Language Name="ProjectLang">$00000406</Language> |
<Language Name="RootDir"></Language> |
</Language> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1030</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> <Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclsmp100.bpl">Borland Sample Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyProtocols100.bpl">Indy 10 Protocols Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dcltee100.bpl">TeeChart-Komponenten</Excluded_Packages> |
<Excluded_Packages Name="C:\Programme\ComponentAce\AbsoluteDatabase\Lib\Delphi 2006 and C++ Builder 2006\dclAbsDbd10.bpl">Absolute Database - Design package</Excluded_Packages> |
</Excluded_Packages> |
</Delphi.Personality> |
</BorlandProject> |
/trunk/Quelltext/SecureMoveExt.cfg |
---|
0,0 → 1,42 |
-$A8 |
-$B- |
-$C+ |
-$D+ |
-$E- |
-$F- |
-$G+ |
-$H+ |
-$I+ |
-$J- |
-$K- |
-$L+ |
-$M- |
-$N+ |
-$O+ |
-$P+ |
-$Q- |
-$R- |
-$S- |
-$T- |
-$U- |
-$V+ |
-$W- |
-$X+ |
-$YD |
-$Z1 |
-cg |
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; |
-H+ |
-W+ |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-U"..\VCL_DRAGDROP;..\VCL_DEC" |
-O"..\VCL_DRAGDROP;..\VCL_DEC" |
-I"..\VCL_DRAGDROP;..\VCL_DEC" |
-R"..\VCL_DRAGDROP;..\VCL_DEC" |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Quelltext/SecureMoveExt.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/SecureMoveExt.dpr |
---|
0,0 → 1,16 |
library SecureMoveExt; |
uses |
ComServ, |
SecureMoveMain in 'SecureMoveMain.pas' {DataModuleDragDropHandler: TDataModule}; |
{$R SecureMoveExt.res} |
exports |
DllGetClassObject, |
DllCanUnloadNow, |
DllRegisterServer, |
DllUnregisterServer; |
begin |
end. |
/trunk/Quelltext/SecureMoveExt.dproj |
---|
0,0 → 1,105 |
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<PropertyGroup> |
<ProjectGuid>{281d38ce-12fe-4572-9616-b700222e76ca}</ProjectGuid> |
<MainSource>SecureMoveExt.dpr</MainSource> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler> |
<DCC_DependencyCheckOutputName>SecureMoveExt.dll</DCC_DependencyCheckOutputName> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_DebugInformation>False</DCC_DebugInformation> |
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> |
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> |
<DCC_UnitSearchPath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_UnitSearchPath> |
<DCC_ResourcePath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_ResourcePath> |
<DCC_ObjPath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_ObjPath> |
<DCC_IncludePath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_IncludePath> |
<DCC_Define>RELEASE</DCC_Define> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_UnitSearchPath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_UnitSearchPath> |
<DCC_ResourcePath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_ResourcePath> |
<DCC_ObjPath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_ObjPath> |
<DCC_IncludePath>..\VCL_DRAGDROP;..\VCL_DEC</DCC_IncludePath> |
<DCC_Define>DEBUG</DCC_Define> |
</PropertyGroup> |
<ProjectExtensions> |
<Borland.Personality>Delphi.Personality</Borland.Personality> |
<Borland.ProjectType>VCLApplication</Borland.ProjectType> |
<BorlandProject> |
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters> |
<Parameters Name="HostApplication">c:\winnt\explorer.exe</Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<Language> |
<Language Name="ProjectLang">$00000406</Language> |
</Language> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1030</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclib100.bpl">Borland InterBase Express Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyCore100.bpl">Indy 10 Core Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclsmp100.bpl">Borland Sample Components</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dclIndyProtocols100.bpl">Indy 10 Protocols Design Time</Excluded_Packages> |
<Excluded_Packages Name="c:\programme\borland\bds\4.0\Bin\dcltee100.bpl">TeeChart-Komponenten</Excluded_Packages> |
<Excluded_Packages Name="C:\Programme\ComponentAce\AbsoluteDatabase\Lib\Delphi 2006 and C++ Builder 2006\dclAbsDbd10.bpl">Absolute Database - Design package</Excluded_Packages> |
</Excluded_Packages> |
<Source> |
<Source Name="MainSource">SecureMoveExt.dpr</Source> |
</Source> |
</Delphi.Personality> </BorlandProject></BorlandProject> |
</ProjectExtensions> |
<ItemGroup /> |
<ItemGroup> |
<DelphiCompile Include="SecureMoveExt.dpr"> |
<MainSource>MainSource</MainSource> |
</DelphiCompile> |
<DCCReference Include="SecureMoveMain.pas"> |
<Form>DataModuleDragDropHandler</Form> |
<DesignClass>TDataModule</DesignClass> |
</DCCReference> |
</ItemGroup> |
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" /> |
</Project> |
/trunk/Quelltext/SecureMoveExt.rc |
---|
0,0 → 1,28 |
1 VERSIONINFO |
FILEVERSION 4,1,0,0 |
PRODUCTVERSION 4,1,0,0 |
FILEOS 0x4 |
FILETYPE 0x1 |
{ |
BLOCK "StringFileInfo" |
{ |
BLOCK "00000000" |
{ |
VALUE "CompanyName", "ViaThinkSoft\0" |
VALUE "FileDescription", "(De)Coder Secure-Move-Extension\0" |
VALUE "FileVersion", "1.0.0.0\0" |
VALUE "InternalName", "DC4 SecureMoveExt\0" |
VALUE "LegalCopyright", "© Copyright 2001 - 2007 ViaThinkSoft\0" |
VALUE "OriginalFilename", "SecureMoveExt.dll\0" |
VALUE "ProductName", "(De)Coder\0" |
VALUE "ProductVersion", "4.1.0.0\0" |
VALUE "Projektleiter", "Daniel Marschall - www.daniel-marschall.de\0" |
VALUE "Webseite", "www.viathinksoft.de\0" |
} |
} |
BLOCK "VarFileInfo" |
{ |
VALUE "Translation", 0x0000 0x0000 |
} |
} |
/trunk/Quelltext/SecureMoveExt.res |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/SecureMoveMain.dfm |
---|
0,0 → 1,19 |
object DataModuleDragDropHandler: TDataModuleDragDropHandler |
OldCreateOrder = False |
OnCreate = DataModuleCreate |
OnDestroy = DataModuleDestroy |
Height = 156 |
Width = 215 |
object PopupMenu1: TPopupMenu |
Left = 24 |
Top = 16 |
object MenuEncrypt: TMenuItem |
Caption = '?' |
Hint = '?' |
OnClick = MenuEncryptClick |
end |
object MenuLine1: TMenuItem |
Caption = '-' |
end |
end |
end |
/trunk/Quelltext/SecureMoveMain.pas |
---|
0,0 → 1,307 |
unit SecureMoveMain; |
interface |
uses |
DragDropHandler, SysUtils, IniFiles, Menus, ShellAPI, Windows, Classes, |
ComServ, ComObj, Registry, Forms, ShlObj, ComCtrls; |
{$ifndef VER13_PLUS} |
type |
TDataModule = TForm; |
{$endif} |
type |
TDataModuleDragDropHandler = class(TDataModule, IUnknown, IShellExtInit, IContextMenu) |
PopupMenu1: TPopupMenu; |
MenuEncrypt: TMenuItem; |
MenuLine1: TMenuItem; |
procedure MenuEncryptClick(Sender: TObject); |
procedure DragDropHandler1Popup(Sender: TObject); |
procedure DataModuleCreate(Sender: TObject); |
procedure DataModuleDestroy(Sender: TObject); |
private |
FFiles: TStrings; |
DragDropHandler1: TDragDropHandler; |
procedure MoveFile(const Filename: string); |
public |
property ContextMenuHandler: TDragDropHandler read DragDropHandler1 |
implements IShellExtInit, IContextMenu; |
end; |
implementation |
{$R *.DFM} |
type |
TDragDropHandlerFactoryAbs = class(TDragDropHandlerFactory) |
public |
procedure UpdateRegistry(Register: boolean); override; |
end; |
const |
CLSID_DragDropHandler: TGUID = '{54069E5A-C471-4B68-835C-FC845E64040B}'; |
var |
sTitle: string; |
sDescription: string; |
langini: TIniFile; |
path: string; |
mydocuments: string; |
resourcestring |
sFileClass = 'Folder'; |
sFileExtension = ''; |
sClassName = 'SecureMove'; |
function ExecuteWithExitCode(filename, params, dir: string): integer; |
var |
proc_info: TProcessInformation; |
startinfo: TStartupInfo; |
ExitCode: longword; |
begin |
FillChar(proc_info, sizeof(TProcessInformation), 0); |
FillChar(startinfo, sizeof(TStartupInfo), 0); |
startinfo.cb := sizeof(TStartupInfo); |
if CreateProcess(nil, pchar(Format('"%s" %s', [filename, TrimRight(pchar(params))])), nil, |
nil, false, NORMAL_PRIORITY_CLASS, nil, pchar(path), |
startinfo, proc_info) <> False then |
begin |
// WaitForSingleObject(proc_info.hProcess, INFINITE); |
while WaitForSingleObject(proc_info.hProcess, 0) = WAIT_TIMEOUT do |
begin |
// ProcessMessages(0); |
Sleep(50); |
end; |
GetExitCodeProcess(proc_info.hProcess, ExitCode); |
CloseHandle(proc_info.hThread); |
CloseHandle(proc_info.hProcess); |
result := ExitCode; |
end |
else |
begin |
result := -1; |
end; |
end; |
procedure TDragDropHandlerFactoryAbs.UpdateRegistry(Register: boolean); |
var |
ClassID: string; |
begin |
ClassID := GUIDToString(CLSID_DragDropHandler); |
if Register then |
begin |
inherited UpdateRegistry(Register); |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
WriteString(ClassID, '(De)Coder-SecureMove'); |
CloseKey; |
finally |
Free; |
end; |
end |
else |
begin |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
DeleteValue(ClassID); |
CloseKey; |
finally |
Free; |
end; |
inherited UpdateRegistry(Register); |
end; |
end; |
// http://www.delphipraxis.net/topic1451_dateioperationen+mit+shfileoperation.html |
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString; |
Flags: FILEOP_FLAGS): Integer; |
var |
FromPath, ToPath: AnsiString; |
SHFileOpStruct: TSHFileOpStruct; |
begin |
FromPath := aFrom + #0#0; |
ToPath := aTo + #0#0; |
with SHFileOpStruct do |
begin |
Wnd := 0; |
wFunc := aOperation; |
pFrom := PAnsiChar(FromPath); |
if ToPath <> '' then |
begin |
pTo := PAnsiChar(ToPath) |
end else begin // target available |
pTo := nil; |
end; // target not available |
fFlags := Flags; |
end; // structure |
Result := SHFileOperationA(SHFileOpStruct); |
end; |
procedure TDataModuleDragDropHandler.DataModuleCreate(Sender: TObject); |
begin |
FFiles := TStringList.Create; |
DragDropHandler1 := TDragDropHandler.Create(self); |
DragDropHandler1.OnPopup := DragDropHandler1Popup; |
DragDropHandler1.ContextMenu := popupmenu1; |
popupmenu1.Items.Items[0].Hint := sDescription; |
popupmenu1.Items.Items[0].Caption := sTitle; |
end; |
procedure TDataModuleDragDropHandler.DataModuleDestroy(Sender: TObject); |
begin |
FFiles.Free; |
DragDropHandler1.free; |
end; |
procedure TDataModuleDragDropHandler.MoveFile(const Filename: string); |
var |
delform: TForm; |
ani: TAnimate; |
cd: integer; |
begin |
// undo ist leider nicht möglich, weil es sich um keine move-aktion handelt |
cd := DoFileWork(FO_COPY, Filename, DragDropHandler1.Folder+'\'+extractfilename(Filename), 0); |
if cd = 0 then |
begin |
delform := TForm.Create(nil); |
try |
delform.caption := langini.ReadString('SecureMove', 'wait', '?'); |
delform.BorderStyle := bsSingle; |
delform.BorderIcons := [biSystemMenu]; |
delform.Position := poDesktopCenter; |
ani := TAnimate.Create(delform); |
try |
ani.Parent := delform; |
ani.CommonAVI := aviDeleteFile; |
ani.Active := true; |
ani.Top := 8; |
ani.Left := 8; |
ani.Visible := true; |
delform.ClientWidth := ani.Width + 16; |
delform.ClientHeight := ani.Height + 16; |
delform.visible := true; |
// shellexecute(handle, 'open', pchar(path+'Coder.exe'), pchar('"'+Filename+'" /e'), pchar(path), SW_NORMAL); |
if ExecuteWithExitCode(path+'Coder.exe', '"'+Filename+'" /e', path) = 8 then |
begin |
Messagebox(handle, pchar(Format( |
langini.ReadString('SecureMove', 'error_del', '?'), |
[Filename] |
)), pchar(langini.ReadString('ShlErase', 'error', '?')), MB_ICONERROR or MB_OK); |
end; |
finally |
ani.free; |
end; |
finally |
delform.Free; |
end; |
end |
else |
begin |
// fehlercodes für abbruch beim überschreiben: 138, 7 |
Messagebox(handle, pchar(Format( |
langini.ReadString('SecureMove', 'error_copy', '?'), |
[Filename, DragDropHandler1.Folder+'\', cd] |
)), pchar(langini.ReadString('ShlErase', 'error', '?')), MB_ICONERROR or MB_OK); |
end; |
end; |
procedure TDataModuleDragDropHandler.MenuEncryptClick(Sender: TObject); |
var |
i: integer; |
begin |
for i := 0 to FFiles.Count-1 do |
MoveFile(FFiles[i]); |
end; |
procedure TDataModuleDragDropHandler.DragDropHandler1Popup(Sender: TObject); |
procedure ClearItem(Item: TMenuItem); |
begin |
{$ifdef VER13_PLUS} |
Item.Clear; |
{$else} |
while (Item.Count > 0) do |
Item[0].Free; |
{$endif} |
end; |
var |
i: integer; |
begin |
FFiles.Assign(DragDropHandler1.Files); |
for i := 0 to FFiles.Count-1 do |
begin |
// AUSNAHMEN - KEIN VERSCHIEBEN MÖGLICH |
if // nicht-existierendes (z.b. arbeitsplatz) |
(not fileexists(ffiles.Strings[i]) and not directoryexists(ffiles.Strings[i])) or |
// "eigene dateien"-ordner |
(uppercase(ffiles.Strings[i]) = uppercase(mydocuments)) or |
// innerhalb des selben orderns verschieben |
(DragDropHandler1.Folder+'\' = extractfilepath(ffiles.Strings[i])) or |
// verzeichnis in sich selbst kopieren |
(ffiles.Strings[i] = DragDropHandler1.Folder) or |
// unbekannt |
(FFiles.Count = 0) then |
begin |
ClearItem(PopupMenu1.Items); |
end; |
end; |
end; |
initialization |
path := ''; |
mydocuments := ''; |
with TRegistry.Create do |
try |
RootKey := HKEY_CURRENT_USER; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
if path = '' then |
begin |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
end; |
RootKey := HKEY_CURRENT_USER; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'); |
mydocuments := ReadString('Personal'); |
CloseKey; |
finally |
free; |
end; |
if copy(mydocuments, length(mydocuments), 1) = '\' then |
mydocuments := copy(mydocuments, 0, length(mydocuments)-1); |
langini := TIniFile.Create(path+'Language.ini'); |
sTitle := langini.ReadString('SecureMove', 'title', '?'); |
sDescription := langini.ReadString('SecureMove', 'description', '?'); |
TDragDropHandlerFactoryAbs.Create(ComServer, TDataModuleDragDropHandler, |
CLSID_DragDropHandler, sClassName, sDescription, sFileClass, |
sFileExtension, ciMultiInstance); |
finalization |
langini.Free; |
end. |
/trunk/Quelltext/ShellEraseMain.pas |
---|
0,0 → 1,283 |
unit ShellEraseMain; |
interface |
uses |
ComServ, SysUtils, ShellAPI, Windows, Registry, ActiveX, ComObj, ShlObj, |
Graphics, classes, inifiles; |
const |
GUID_TDFKontextMenuShellExt: TGUID = '{6B422248-BB90-4682-A128-F088E99AB520}'; |
type |
TDFKontextMenuShellExt = class(TComObject, IShellExtInit, IContextMenu) |
protected |
function IShellExtInit.Initialize = SEInitialize; |
function SEInitialize(pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY): HResult; stdcall; |
function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uflags: UINT): HResult; stdcall; |
function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall; |
function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; pszName: LPSTR; cchMax: UINT): HResult; stdcall; |
end; |
implementation |
var |
hBmp: TBitmap; |
handle: hwnd; |
vsl: tstringlist; |
path: string; |
langini: TIniFile; |
type |
TDFKontextMenuShellExtFactory = class(TComObjectFactory) |
public |
procedure UpdateRegistry(Register: boolean); override; |
end; |
function TDFKontextMenuShellExt.GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; |
pszName: LPSTR; cchMax: UINT): HResult; |
begin |
try |
if (idCmd = 0) then |
begin |
if (uType = GCS_HELPTEXT) then |
StrCopy(pszName, pchar(langini.ReadString('ShlErase', 'openwith', '?'))); |
Result := NOERROR; |
end |
else |
Result := E_INVALIDARG; |
except |
Result := E_UNEXPECTED; |
end; |
end; |
procedure ProcessMessages(hWnd: DWORD); |
var |
Msg: TMsg; |
begin |
while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do |
begin |
TranslateMessage(Msg); |
DispatchMessage(Msg); |
end; |
end; |
function ExecuteWithExitCode(filename, params, dir: string): integer; |
var |
proc_info: TProcessInformation; |
startinfo: TStartupInfo; |
ExitCode: longword; |
begin |
FillChar(proc_info, sizeof(TProcessInformation), 0); |
FillChar(startinfo, sizeof(TStartupInfo), 0); |
startinfo.cb := sizeof(TStartupInfo); |
if CreateProcess(nil, pchar(Format('"%s" %s', [filename, TrimRight(pchar(params))])), nil, |
nil, false, NORMAL_PRIORITY_CLASS, nil, pchar(path), |
startinfo, proc_info) <> False then |
begin |
// WaitForSingleObject(proc_info.hProcess, INFINITE); |
while WaitForSingleObject(proc_info.hProcess, 0) = WAIT_TIMEOUT do |
begin |
ProcessMessages(0); |
Sleep(50); |
end; |
GetExitCodeProcess(proc_info.hProcess, ExitCode); |
CloseHandle(proc_info.hThread); |
CloseHandle(proc_info.hProcess); |
result := ExitCode; |
end |
else |
begin |
result := -1; |
end; |
end; |
function TDFKontextMenuShellExt.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; |
var |
i, res: integer; |
fehler: boolean; |
begin |
Result := E_FAIL; |
if (HiWord(Integer(lpici.lpVerb)) <> 0) then |
Exit; |
if not (LoWord(lpici.lpVerb) in [0, 1, 2]) then |
begin |
Result := E_INVALIDARG; |
Exit; |
end; |
res := Messagebox(handle, pchar(langini.ReadString('ShlErase', 'sicherheitsfrage', '?')), pchar(langini.ReadString('ShlErase', 'sicherheitsfragecaption', '?')), MB_ICONQUESTION or MB_YESNO); |
if res = ID_YES then |
begin |
if not fileexists(path+'Coder.exe') then |
Messagebox(handle, pchar(langini.ReadString('ShlErase', 'codermissing', '?')), pchar(langini.ReadString('ShlErase', 'error', '?')), MB_ICONERROR or MB_OK) |
else |
begin |
fehler := false; |
for i := 0 to vsl.count-1 do |
begin |
// ShellExecute(handle, 'open', PChar(path+'Coder.exe'), PChar('"'+vsl.Strings[i]+'" /e /notsilent'), pchar(path), SW_NORMAL); |
if ExecuteWithExitCode(path+'Coder.exe', '"'+vsl.Strings[i]+'" /e', path) = 8 then |
fehler := true; |
end; |
if fehler then |
MessageBox(handle, pchar(langini.ReadString('ShlErase', 'delerror', '?')), pchar(langini.ReadString('ShlErase', 'error', '?')), MB_OK + MB_ICONERROR) |
else |
MessageBox(handle, pchar(langini.ReadString('ShlErase', 'delok', '?')), pchar(langini.ReadString('ShlErase', 'information', '?')), MB_OK + MB_ICONINFORMATION); |
end; |
end; |
Result := NOERROR; |
end; |
function TDFKontextMenuShellExt.QueryContextMenu(Menu: HMENU; indexMenu, |
idCmdFirst, idCmdLast, uflags: UINT): HResult; |
begin |
Result := 0; |
if ((uFlags and $0000000F) = CMF_NORMAL) or |
((uFlags and CMF_EXPLORE) <> 0) or |
((uFlags and CMF_VERBSONLY <> 0)) then |
begin |
InsertMenu(Menu, indexMenu, MF_STRING or MF_BYPOSITION, idCmdFirst, pchar(langini.readstring('ShlErase', 'context', '?'))); |
if hBmp.Handle <> 0 then |
SetMenuItemBitmaps(Menu, indexMenu, MF_BYPOSITION, hBmp.Handle, hBmp.Handle); |
Result := 1; |
end; |
end; |
function TDFKontextMenuShellExt.SEInitialize(pidlFolder: PItemIDList; |
lpdobj: IDataObject; hKeyProgID: HKEY): HResult; |
var |
StgMedium: TStgMedium; |
FormatEtc: TFormatEtc; |
FFileName: array[0..MAX_PATH] of Char; |
i: Integer; |
begin |
if (lpdobj = nil) then |
begin |
Result := E_INVALIDARG; |
Exit; |
end; |
with FormatEtc do |
begin |
cfFormat := CF_HDROP; |
ptd := nil; |
dwAspect := DVASPECT_CONTENT; |
lindex := -1; |
tymed := TYMED_HGLOBAL; |
end; |
Result := lpdobj.GetData(FormatEtc, StgMedium); |
if Failed(Result) then |
Exit; |
vsl := tstringlist.Create; |
vSL.Clear; |
for i := 0 to DragQueryFile(StgMedium.hGlobal, $FFFFFFFF, nil, 0) - 1 do |
begin |
DragQueryFile(StgMedium.hGlobal, i, FFileName, SizeOf(FFileName)); |
vSl.Add(FFileName); |
end; |
ReleaseStgMedium(StgMedium); |
Result := NOERROR; |
end; |
procedure TDFKontextMenuShellExtFactory.UpdateRegistry(Register: boolean); |
var |
ClassID: string; |
begin |
ClassID := GUIDToString(GUID_TDFKontextMenuShellExt); |
if Register then |
begin |
inherited UpdateRegistry(Register); |
CreateRegKey('Folder\shellex', '', ''); |
CreateRegKey('Folder\shellex\ContextMenuHandlers', '', ''); |
CreateRegKey('Folder\shellex\ContextMenuHandlers\(De)Coder-Erase', '', ClassID); |
CreateRegKey('*\shellex', '', ''); |
CreateRegKey('*\shellex\ContextMenuHandlers', '', ''); |
CreateRegKey('*\shellex\ContextMenuHandlers\(De)Coder-Erase', '', ClassID); |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
WriteString(ClassID, '(De)Coder-Erase'); |
CloseKey; |
finally |
Free; |
end; |
end |
else |
begin |
DeleteRegKey('Folder\shellex\ContextMenuHandlers\(De)Coder-Erase'); |
DeleteRegKey('Folder\shellex\ContextMenuHandlers'); |
DeleteRegKey('Folder\shellex'); |
DeleteRegKey('*\shellex\ContextMenuHandlers\(De)Coder-Erase'); |
DeleteRegKey('*\shellex\ContextMenuHandlers'); |
DeleteRegKey('*\shellex'); |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
DeleteValue(ClassID); |
CloseKey; |
finally |
Free; |
end; |
inherited UpdateRegistry(Register); |
end; |
end; |
initialization |
// Initialisierung |
TDFKontextMenuShellExtFactory.Create(ComServer, TDFKontextMenuShellExt, GUID_TDFKontextMenuShellExt, |
'', '(De)Coder Eraser', ciMultiInstance, tmApartment); |
hBmp := TBitmap.Create; |
hBmp.LoadFromResourceName(hInstance, 'KONTEXTICON'); |
path := ''; |
// Pfad ermitteln |
with TRegistry.Create do |
try |
RootKey := HKEY_CURRENT_USER; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
if path = '' then |
begin |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
end; |
finally |
free; |
end; |
// Language.ini öffnen |
langini := TIniFile.Create(path+'Language.ini'); |
finalization |
hBmp.Free; |
langini.Free; |
end. |
/trunk/Quelltext/ShellExtMain.pas |
---|
0,0 → 1,231 |
unit ShellExtMain; |
interface |
uses |
ComServ, SysUtils, ShellAPI, Windows, Registry, ActiveX, ComObj, ShlObj, |
Graphics, classes, inifiles; |
const |
GUID_TDFKontextMenuShellExt: TGUID = '{C30DC498-38EA-4DED-8AD4-E302CE094892}'; |
type |
TDFKontextMenuShellExt = class(TComObject, IShellExtInit, IContextMenu) |
protected |
function IShellExtInit.Initialize = SEInitialize; |
function SEInitialize(pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY): HResult; stdcall; |
function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uflags: UINT): HResult; stdcall; |
function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall; |
function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; pszName: LPSTR; cchMax: UINT): HResult; stdcall; |
end; |
implementation |
var |
hBmp: TBitmap; |
handle: hwnd; |
vsl: tstringlist; |
path: string; |
langini: TIniFile; |
type |
TDFKontextMenuShellExtFactory = class(TComObjectFactory) |
public |
procedure UpdateRegistry(Register: boolean); override; |
end; |
function TDFKontextMenuShellExt.GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; |
pszName: LPSTR; cchMax: UINT): HResult; |
begin |
try |
if (idCmd = 0) then |
begin |
if (uType = GCS_HELPTEXT) then |
StrCopy(pszName, pchar(langini.ReadString('ShlExt', 'openwith', '?'))); |
Result := NOERROR; |
end |
else |
Result := E_INVALIDARG; |
except |
Result := E_UNEXPECTED; |
end; |
end; |
function TDFKontextMenuShellExt.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; |
var |
i: integer; |
para: string; |
begin |
Result := E_FAIL; |
if (HiWord(Integer(lpici.lpVerb)) <> 0) then |
Exit; |
if not (LoWord(lpici.lpVerb) in [0, 1, 2]) then |
begin |
Result := E_INVALIDARG; |
Exit; |
end; |
if not fileexists(path+'Coder.exe') then |
Messagebox(handle, pchar(langini.ReadString('ShlExt', 'codermissing', '?')), pchar(langini.ReadString('ShlExt', 'error', '?')), MB_ICONERROR or MB_OK) |
else |
begin |
para := ''; |
for i := 0 to vsl.count - 1 do |
para := para + '"'+vsl.strings[i]+'" '; |
para := copy(para, 0, length(para)-1); |
ShellExecute(handle, 'open', PChar(path+'Coder.exe'), PChar(para), pchar(path), SW_NORMAL); |
end; |
Result := NOERROR; |
end; |
function TDFKontextMenuShellExt.QueryContextMenu(Menu: HMENU; indexMenu, |
idCmdFirst, idCmdLast, uflags: UINT): HResult; |
begin |
Result := 0; |
if ((uFlags and $0000000F) = CMF_NORMAL) or |
((uFlags and CMF_EXPLORE) <> 0) or |
((uFlags and CMF_VERBSONLY <> 0)) then |
begin |
InsertMenu(Menu, indexMenu, MF_STRING or MF_BYPOSITION, idCmdFirst, pchar(langini.readstring('ShlExt', 'context', '?'))); |
if hBmp.Handle <> 0 then |
SetMenuItemBitmaps(Menu, indexMenu, MF_BYPOSITION, hBmp.Handle, hBmp.Handle); |
Result := 1; |
end; |
end; |
function TDFKontextMenuShellExt.SEInitialize(pidlFolder: PItemIDList; |
lpdobj: IDataObject; hKeyProgID: HKEY): HResult; |
var |
StgMedium: TStgMedium; |
FormatEtc: TFormatEtc; |
FFileName: array[0..MAX_PATH] of Char; |
i: Integer; |
begin |
if (lpdobj = nil) then |
begin |
Result := E_INVALIDARG; |
Exit; |
end; |
with FormatEtc do |
begin |
cfFormat := CF_HDROP; |
ptd := nil; |
dwAspect := DVASPECT_CONTENT; |
lindex := -1; |
tymed := TYMED_HGLOBAL; |
end; |
Result := lpdobj.GetData(FormatEtc, StgMedium); |
if Failed(Result) then |
Exit; |
vsl := tstringlist.Create; |
vSL.Clear; |
for i := 0 to DragQueryFile(StgMedium.hGlobal, $FFFFFFFF, nil, 0) - 1 do |
begin |
DragQueryFile(StgMedium.hGlobal, i, FFileName, SizeOf(FFileName)); |
vSl.Add(FFileName); |
end; |
ReleaseStgMedium(StgMedium); |
Result := NOERROR; |
end; |
procedure TDFKontextMenuShellExtFactory.UpdateRegistry(Register: boolean); |
var |
ClassID: string; |
begin |
ClassID := GUIDToString(GUID_TDFKontextMenuShellExt); |
if Register then |
begin |
inherited UpdateRegistry(Register); |
CreateRegKey('Folder\shellex', '', ''); |
CreateRegKey('Folder\shellex\ContextMenuHandlers', '', ''); |
CreateRegKey('Folder\shellex\ContextMenuHandlers\(De)Coder', '', ClassID); |
CreateRegKey('*\shellex', '', ''); |
CreateRegKey('*\shellex\ContextMenuHandlers', '', ''); |
CreateRegKey('*\shellex\ContextMenuHandlers\(De)Coder', '', ClassID); |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
WriteString(ClassID, '(De)Coder'); |
CloseKey; |
finally |
Free; |
end; |
end |
else |
begin |
DeleteRegKey('Folder\shellex\ContextMenuHandlers\(De)Coder'); |
DeleteRegKey('Folder\shellex\ContextMenuHandlers'); |
DeleteRegKey('Folder\shellex'); |
DeleteRegKey('*\shellex\ContextMenuHandlers\(De)Coder'); |
DeleteRegKey('*\shellex\ContextMenuHandlers'); |
DeleteRegKey('*\shellex'); |
if (Win32Platform = VER_PLATFORM_WIN32_NT) then |
with TRegistry.Create do |
try |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved', True); |
DeleteValue(ClassID); |
CloseKey; |
finally |
Free; |
end; |
inherited UpdateRegistry(Register); |
end; |
end; |
initialization |
// Initialisierung |
TDFKontextMenuShellExtFactory.Create(ComServer, TDFKontextMenuShellExt, GUID_TDFKontextMenuShellExt, |
'', '(De)Coder', ciMultiInstance, tmApartment); |
hBmp := TBitmap.Create; |
hBmp.LoadFromResourceName(hInstance, 'KONTEXTICON'); |
path := ''; |
// Pfad ermitteln |
with TRegistry.Create do |
try |
RootKey := HKEY_CURRENT_USER; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
if path = '' then |
begin |
RootKey := HKEY_LOCAL_MACHINE; |
OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\(De)Coder_is1'); |
path := ReadString('InstallLocation'); |
CloseKey; |
end; |
finally |
free; |
end; |
// Language.ini öffnen |
langini := TIniFile.Create(path+'Language.ini'); |
finalization |
hBmp.Free; |
langini.Free; |
end. |
/trunk/Quelltext/ShlErase.RES |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/ShlErase.bdsproj |
---|
0,0 → 1,175 |
<?xml version="1.0" encoding="utf-8"?> |
<BorlandProject> |
<PersonalityInfo> |
<Option> |
<Option Name="Personality">Delphi.Personality</Option> |
<Option Name="ProjectType"></Option> |
<Option Name="Version">1.0</Option> |
<Option Name="GUID">{F49BFD49-FE0D-41D8-82AC-55B6FA8D9879}</Option> |
</Option> |
</PersonalityInfo> |
<Delphi.Personality> |
<Source> |
<Source Name="MainSource">ShlErase.dpr</Source> |
</Source> |
<FileVersion> |
<FileVersion Name="Version">7.0</FileVersion> |
</FileVersion> |
<Compiler> |
<Compiler Name="A">8</Compiler> |
<Compiler Name="B">0</Compiler> |
<Compiler Name="C">1</Compiler> |
<Compiler Name="D">1</Compiler> |
<Compiler Name="E">0</Compiler> |
<Compiler Name="F">0</Compiler> |
<Compiler Name="G">1</Compiler> |
<Compiler Name="H">1</Compiler> |
<Compiler Name="I">1</Compiler> |
<Compiler Name="J">0</Compiler> |
<Compiler Name="K">0</Compiler> |
<Compiler Name="L">1</Compiler> |
<Compiler Name="M">0</Compiler> |
<Compiler Name="N">1</Compiler> |
<Compiler Name="O">1</Compiler> |
<Compiler Name="P">1</Compiler> |
<Compiler Name="Q">0</Compiler> |
<Compiler Name="R">0</Compiler> |
<Compiler Name="S">0</Compiler> |
<Compiler Name="T">0</Compiler> |
<Compiler Name="U">0</Compiler> |
<Compiler Name="V">1</Compiler> |
<Compiler Name="W">0</Compiler> |
<Compiler Name="X">1</Compiler> |
<Compiler Name="Y">1</Compiler> |
<Compiler Name="Z">1</Compiler> |
<Compiler Name="ShowHints">True</Compiler> |
<Compiler Name="ShowWarnings">True</Compiler> |
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler> |
<Compiler Name="NamespacePrefix"></Compiler> |
<Compiler Name="GenerateDocumentation">False</Compiler> |
<Compiler Name="DefaultNamespace"></Compiler> |
<Compiler Name="SymbolDeprecated">True</Compiler> |
<Compiler Name="SymbolLibrary">True</Compiler> |
<Compiler Name="SymbolPlatform">True</Compiler> |
<Compiler Name="SymbolExperimental">True</Compiler> |
<Compiler Name="UnitLibrary">True</Compiler> |
<Compiler Name="UnitPlatform">True</Compiler> |
<Compiler Name="UnitDeprecated">True</Compiler> |
<Compiler Name="UnitExperimental">True</Compiler> |
<Compiler Name="HResultCompat">True</Compiler> |
<Compiler Name="HidingMember">True</Compiler> |
<Compiler Name="HiddenVirtual">True</Compiler> |
<Compiler Name="Garbage">True</Compiler> |
<Compiler Name="BoundsError">True</Compiler> |
<Compiler Name="ZeroNilCompat">True</Compiler> |
<Compiler Name="StringConstTruncated">True</Compiler> |
<Compiler Name="ForLoopVarVarPar">True</Compiler> |
<Compiler Name="TypedConstVarPar">True</Compiler> |
<Compiler Name="AsgToTypedConst">True</Compiler> |
<Compiler Name="CaseLabelRange">True</Compiler> |
<Compiler Name="ForVariable">True</Compiler> |
<Compiler Name="ConstructingAbstract">True</Compiler> |
<Compiler Name="ComparisonFalse">True</Compiler> |
<Compiler Name="ComparisonTrue">True</Compiler> |
<Compiler Name="ComparingSignedUnsigned">True</Compiler> |
<Compiler Name="CombiningSignedUnsigned">True</Compiler> |
<Compiler Name="UnsupportedConstruct">True</Compiler> |
<Compiler Name="FileOpen">True</Compiler> |
<Compiler Name="FileOpenUnitSrc">True</Compiler> |
<Compiler Name="BadGlobalSymbol">True</Compiler> |
<Compiler Name="DuplicateConstructorDestructor">True</Compiler> |
<Compiler Name="InvalidDirective">True</Compiler> |
<Compiler Name="PackageNoLink">True</Compiler> |
<Compiler Name="PackageThreadVar">True</Compiler> |
<Compiler Name="ImplicitImport">True</Compiler> |
<Compiler Name="HPPEMITIgnored">True</Compiler> |
<Compiler Name="NoRetVal">True</Compiler> |
<Compiler Name="UseBeforeDef">True</Compiler> |
<Compiler Name="ForLoopVarUndef">True</Compiler> |
<Compiler Name="UnitNameMismatch">True</Compiler> |
<Compiler Name="NoCFGFileFound">True</Compiler> |
<Compiler Name="MessageDirective">True</Compiler> |
<Compiler Name="ImplicitVariants">True</Compiler> |
<Compiler Name="UnicodeToLocale">True</Compiler> |
<Compiler Name="LocaleToUnicode">True</Compiler> |
<Compiler Name="ImagebaseMultiple">True</Compiler> |
<Compiler Name="SuspiciousTypecast">True</Compiler> |
<Compiler Name="PrivatePropAccessor">True</Compiler> |
<Compiler Name="UnsafeType">False</Compiler> |
<Compiler Name="UnsafeCode">False</Compiler> |
<Compiler Name="UnsafeCast">False</Compiler> |
<Compiler Name="OptionTruncated">True</Compiler> |
<Compiler Name="WideCharReduced">True</Compiler> |
<Compiler Name="DuplicatesIgnored">True</Compiler> |
<Compiler Name="UnitInitSeq">True</Compiler> |
<Compiler Name="LocalPInvoke">True</Compiler> |
<Compiler Name="CodePage"></Compiler> |
</Compiler> |
<Linker> |
<Linker Name="MapFile">0</Linker> |
<Linker Name="OutputObjs">0</Linker> |
<Linker Name="ConsoleApp">1</Linker> |
<Linker Name="DebugInfo">False</Linker> |
<Linker Name="RemoteSymbols">False</Linker> |
<Linker Name="GenerateDRC">False</Linker> |
<Linker Name="MinStackSize">16384</Linker> |
<Linker Name="MaxStackSize">1048576</Linker> |
<Linker Name="ImageBase">4194304</Linker> |
<Linker Name="ExeDescription"></Linker> |
<Linker Name="GenerateHpps">False</Linker> |
</Linker> |
<Directories> |
<Directories Name="OutputDir"></Directories> |
<Directories Name="UnitOutputDir"></Directories> |
<Directories Name="PackageDLLOutputDir"></Directories> |
<Directories Name="PackageDCPOutputDir"></Directories> |
<Directories Name="SearchPath"></Directories> |
<Directories Name="Packages"></Directories> |
<Directories Name="Conditionals"></Directories> |
<Directories Name="DebugSourceDirs"></Directories> |
<Directories Name="UsePackages">False</Directories> |
</Directories> |
<Parameters> |
<Parameters Name="RunParams"></Parameters> |
<Parameters Name="HostApplication"></Parameters> |
<Parameters Name="Launcher"></Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD"></Parameters> |
<Parameters Name="Debug Symbols Search Path"></Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Language> |
<Language Name="ActiveLang"></Language> |
<Language Name="ProjectLang">$00000000</Language> |
<Language Name="RootDir"></Language> |
</Language> |
</Delphi.Personality> |
</BorlandProject> |
/trunk/Quelltext/ShlErase.cfg |
---|
0,0 → 1,38 |
-$A8 |
-$B- |
-$C+ |
-$D+ |
-$E- |
-$F- |
-$G+ |
-$H+ |
-$I+ |
-$J- |
-$K- |
-$L+ |
-$M- |
-$N+ |
-$O+ |
-$P+ |
-$Q- |
-$R- |
-$S- |
-$T- |
-$U- |
-$V+ |
-$W- |
-$X+ |
-$YD |
-$Z1 |
-cg |
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; |
-H+ |
-W+ |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Quelltext/ShlErase.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/ShlErase.dpr |
---|
0,0 → 1,17 |
library ShlErase; |
uses |
Windows, |
ComServ, |
ShellEraseMain in 'ShellEraseMain.pas'; |
{$R ShlErase.res} |
exports |
DllGetClassObject, |
DllCanUnloadNow, |
DllRegisterServer, |
DllUnregisterServer; |
begin |
end. |
/trunk/Quelltext/ShlErase.dproj |
---|
0,0 → 1,70 |
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<PropertyGroup> |
<ProjectGuid>{f49bfd49-fe0d-41d8-82ac-55b6fa8d9879}</ProjectGuid> |
<MainSource>ShlErase.dpr</MainSource> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler> |
<DCC_DependencyCheckOutputName>ShlErase.dll</DCC_DependencyCheckOutputName> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_DebugInformation>False</DCC_DebugInformation> |
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> |
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> |
<DCC_Define>RELEASE</DCC_Define> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_Define>DEBUG</DCC_Define> |
</PropertyGroup> |
<ProjectExtensions> |
<Borland.Personality>Delphi.Personality</Borland.Personality> |
<Borland.ProjectType /> |
<BorlandProject> |
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Source> |
<Source Name="MainSource">ShlErase.dpr</Source> |
</Source> |
</Delphi.Personality> </BorlandProject></BorlandProject> |
</ProjectExtensions> |
<ItemGroup /> |
<ItemGroup> |
<DelphiCompile Include="ShlErase.dpr"> |
<MainSource>MainSource</MainSource> |
</DelphiCompile> |
<DCCReference Include="ShellEraseMain.pas" /> |
</ItemGroup> |
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" /> |
</Project> |
/trunk/Quelltext/ShlErase.rc |
---|
0,0 → 1,30 |
KONTEXTICON BITMAP "Ressourcen\ShlErase\Kontexticon.bmp" |
1 VERSIONINFO |
FILEVERSION 4,1,0,0 |
PRODUCTVERSION 4,1,0,0 |
FILEOS 0x4 |
FILETYPE 0x1 |
{ |
BLOCK "StringFileInfo" |
{ |
BLOCK "00000000" |
{ |
VALUE "CompanyName", "ViaThinkSoft\0" |
VALUE "FileDescription", "(De)Coder Shell-Erase-Extension\0" |
VALUE "FileVersion", "1.0.0.0\0" |
VALUE "InternalName", "DC4 ShlErase\0" |
VALUE "LegalCopyright", "© Copyright 2001 - 2007 ViaThinkSoft\0" |
VALUE "OriginalFilename", "ShlErase.dll\0" |
VALUE "ProductName", "(De)Coder\0" |
VALUE "ProductVersion", "4.1.0.0\0" |
VALUE "Projektleiter", "Daniel Marschall - www.daniel-marschall.de\0" |
VALUE "Webseite", "www.viathinksoft.de\0" |
} |
} |
BLOCK "VarFileInfo" |
{ |
VALUE "Translation", 0x0000 0x0000 |
} |
} |
/trunk/Quelltext/ShlExt.RES |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/ShlExt.bdsproj |
---|
0,0 → 1,175 |
<?xml version="1.0" encoding="utf-8"?> |
<BorlandProject> |
<PersonalityInfo> |
<Option> |
<Option Name="Personality">Delphi.Personality</Option> |
<Option Name="ProjectType"></Option> |
<Option Name="Version">1.0</Option> |
<Option Name="GUID">{F49BFD49-FE0D-41D8-82AC-55B6FA8D9879}</Option> |
</Option> |
</PersonalityInfo> |
<Delphi.Personality> |
<Source> |
<Source Name="MainSource">ShlExt.dpr</Source> |
</Source> |
<FileVersion> |
<FileVersion Name="Version">7.0</FileVersion> |
</FileVersion> |
<Compiler> |
<Compiler Name="A">8</Compiler> |
<Compiler Name="B">0</Compiler> |
<Compiler Name="C">1</Compiler> |
<Compiler Name="D">1</Compiler> |
<Compiler Name="E">0</Compiler> |
<Compiler Name="F">0</Compiler> |
<Compiler Name="G">1</Compiler> |
<Compiler Name="H">1</Compiler> |
<Compiler Name="I">1</Compiler> |
<Compiler Name="J">0</Compiler> |
<Compiler Name="K">0</Compiler> |
<Compiler Name="L">1</Compiler> |
<Compiler Name="M">0</Compiler> |
<Compiler Name="N">1</Compiler> |
<Compiler Name="O">1</Compiler> |
<Compiler Name="P">1</Compiler> |
<Compiler Name="Q">0</Compiler> |
<Compiler Name="R">0</Compiler> |
<Compiler Name="S">0</Compiler> |
<Compiler Name="T">0</Compiler> |
<Compiler Name="U">0</Compiler> |
<Compiler Name="V">1</Compiler> |
<Compiler Name="W">0</Compiler> |
<Compiler Name="X">1</Compiler> |
<Compiler Name="Y">1</Compiler> |
<Compiler Name="Z">1</Compiler> |
<Compiler Name="ShowHints">True</Compiler> |
<Compiler Name="ShowWarnings">True</Compiler> |
<Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler> |
<Compiler Name="NamespacePrefix"></Compiler> |
<Compiler Name="GenerateDocumentation">False</Compiler> |
<Compiler Name="DefaultNamespace"></Compiler> |
<Compiler Name="SymbolDeprecated">True</Compiler> |
<Compiler Name="SymbolLibrary">True</Compiler> |
<Compiler Name="SymbolPlatform">True</Compiler> |
<Compiler Name="SymbolExperimental">True</Compiler> |
<Compiler Name="UnitLibrary">True</Compiler> |
<Compiler Name="UnitPlatform">True</Compiler> |
<Compiler Name="UnitDeprecated">True</Compiler> |
<Compiler Name="UnitExperimental">True</Compiler> |
<Compiler Name="HResultCompat">True</Compiler> |
<Compiler Name="HidingMember">True</Compiler> |
<Compiler Name="HiddenVirtual">True</Compiler> |
<Compiler Name="Garbage">True</Compiler> |
<Compiler Name="BoundsError">True</Compiler> |
<Compiler Name="ZeroNilCompat">True</Compiler> |
<Compiler Name="StringConstTruncated">True</Compiler> |
<Compiler Name="ForLoopVarVarPar">True</Compiler> |
<Compiler Name="TypedConstVarPar">True</Compiler> |
<Compiler Name="AsgToTypedConst">True</Compiler> |
<Compiler Name="CaseLabelRange">True</Compiler> |
<Compiler Name="ForVariable">True</Compiler> |
<Compiler Name="ConstructingAbstract">True</Compiler> |
<Compiler Name="ComparisonFalse">True</Compiler> |
<Compiler Name="ComparisonTrue">True</Compiler> |
<Compiler Name="ComparingSignedUnsigned">True</Compiler> |
<Compiler Name="CombiningSignedUnsigned">True</Compiler> |
<Compiler Name="UnsupportedConstruct">True</Compiler> |
<Compiler Name="FileOpen">True</Compiler> |
<Compiler Name="FileOpenUnitSrc">True</Compiler> |
<Compiler Name="BadGlobalSymbol">True</Compiler> |
<Compiler Name="DuplicateConstructorDestructor">True</Compiler> |
<Compiler Name="InvalidDirective">True</Compiler> |
<Compiler Name="PackageNoLink">True</Compiler> |
<Compiler Name="PackageThreadVar">True</Compiler> |
<Compiler Name="ImplicitImport">True</Compiler> |
<Compiler Name="HPPEMITIgnored">True</Compiler> |
<Compiler Name="NoRetVal">True</Compiler> |
<Compiler Name="UseBeforeDef">True</Compiler> |
<Compiler Name="ForLoopVarUndef">True</Compiler> |
<Compiler Name="UnitNameMismatch">True</Compiler> |
<Compiler Name="NoCFGFileFound">True</Compiler> |
<Compiler Name="MessageDirective">True</Compiler> |
<Compiler Name="ImplicitVariants">True</Compiler> |
<Compiler Name="UnicodeToLocale">True</Compiler> |
<Compiler Name="LocaleToUnicode">True</Compiler> |
<Compiler Name="ImagebaseMultiple">True</Compiler> |
<Compiler Name="SuspiciousTypecast">True</Compiler> |
<Compiler Name="PrivatePropAccessor">True</Compiler> |
<Compiler Name="UnsafeType">False</Compiler> |
<Compiler Name="UnsafeCode">False</Compiler> |
<Compiler Name="UnsafeCast">False</Compiler> |
<Compiler Name="OptionTruncated">True</Compiler> |
<Compiler Name="WideCharReduced">True</Compiler> |
<Compiler Name="DuplicatesIgnored">True</Compiler> |
<Compiler Name="UnitInitSeq">True</Compiler> |
<Compiler Name="LocalPInvoke">True</Compiler> |
<Compiler Name="CodePage"></Compiler> |
</Compiler> |
<Linker> |
<Linker Name="MapFile">0</Linker> |
<Linker Name="OutputObjs">0</Linker> |
<Linker Name="ConsoleApp">1</Linker> |
<Linker Name="DebugInfo">False</Linker> |
<Linker Name="RemoteSymbols">False</Linker> |
<Linker Name="GenerateDRC">False</Linker> |
<Linker Name="MinStackSize">16384</Linker> |
<Linker Name="MaxStackSize">1048576</Linker> |
<Linker Name="ImageBase">4194304</Linker> |
<Linker Name="ExeDescription"></Linker> |
<Linker Name="GenerateHpps">False</Linker> |
</Linker> |
<Directories> |
<Directories Name="OutputDir"></Directories> |
<Directories Name="UnitOutputDir"></Directories> |
<Directories Name="PackageDLLOutputDir"></Directories> |
<Directories Name="PackageDCPOutputDir"></Directories> |
<Directories Name="SearchPath"></Directories> |
<Directories Name="Packages"></Directories> |
<Directories Name="Conditionals"></Directories> |
<Directories Name="DebugSourceDirs"></Directories> |
<Directories Name="UsePackages">False</Directories> |
</Directories> |
<Parameters> |
<Parameters Name="RunParams"></Parameters> |
<Parameters Name="HostApplication"></Parameters> |
<Parameters Name="Launcher"></Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="DebugCWD"></Parameters> |
<Parameters Name="Debug Symbols Search Path"></Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Language> |
<Language Name="ActiveLang"></Language> |
<Language Name="ProjectLang">$00000000</Language> |
<Language Name="RootDir"></Language> |
</Language> |
</Delphi.Personality> |
</BorlandProject> |
/trunk/Quelltext/ShlExt.cfg |
---|
0,0 → 1,38 |
-$A8 |
-$B- |
-$C+ |
-$D+ |
-$E- |
-$F- |
-$G+ |
-$H+ |
-$I+ |
-$J- |
-$K- |
-$L+ |
-$M- |
-$N+ |
-$O+ |
-$P+ |
-$Q- |
-$R- |
-$S- |
-$T- |
-$U- |
-$V+ |
-$W- |
-$X+ |
-$YD |
-$Z1 |
-cg |
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; |
-H+ |
-W+ |
-M |
-$M16384,1048576 |
-K$00400000 |
-LE"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-LN"D:\Eigene Dateien\Borland Studio-Projekte\Bpl" |
-w-UNSAFE_TYPE |
-w-UNSAFE_CODE |
-w-UNSAFE_CAST |
/trunk/Quelltext/ShlExt.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/ShlExt.dpr |
---|
0,0 → 1,17 |
library ShellExt; |
uses |
Windows, |
ComServ, |
ShellExtMain in 'ShellExtMain.pas'; |
{$R ShlExt.res} |
exports |
DllGetClassObject, |
DllCanUnloadNow, |
DllRegisterServer, |
DllUnregisterServer; |
begin |
end. |
/trunk/Quelltext/ShlExt.dproj |
---|
0,0 → 1,70 |
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<PropertyGroup> |
<ProjectGuid>{f49bfd49-fe0d-41d8-82ac-55b6fa8d9879}</ProjectGuid> |
<MainSource>ShlExt.dpr</MainSource> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler> |
<DCC_DependencyCheckOutputName>ShlExt.dll</DCC_DependencyCheckOutputName> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_DebugInformation>False</DCC_DebugInformation> |
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols> |
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> |
<DCC_Define>RELEASE</DCC_Define> |
</PropertyGroup> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<Version>7.0</Version> |
<DCC_Define>DEBUG</DCC_Define> |
</PropertyGroup> |
<ProjectExtensions> |
<Borland.Personality>Delphi.Personality</Borland.Personality> |
<Borland.ProjectType /> |
<BorlandProject> |
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters> |
<Parameters Name="UseLauncher">False</Parameters> |
<Parameters Name="LoadAllSymbols">True</Parameters> |
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters> |
</Parameters> |
<VersionInfo> |
<VersionInfo Name="IncludeVerInfo">False</VersionInfo> |
<VersionInfo Name="AutoIncBuild">False</VersionInfo> |
<VersionInfo Name="MajorVer">1</VersionInfo> |
<VersionInfo Name="MinorVer">0</VersionInfo> |
<VersionInfo Name="Release">0</VersionInfo> |
<VersionInfo Name="Build">0</VersionInfo> |
<VersionInfo Name="Debug">False</VersionInfo> |
<VersionInfo Name="PreRelease">False</VersionInfo> |
<VersionInfo Name="Special">False</VersionInfo> |
<VersionInfo Name="Private">False</VersionInfo> |
<VersionInfo Name="DLL">False</VersionInfo> |
<VersionInfo Name="Locale">1031</VersionInfo> |
<VersionInfo Name="CodePage">1252</VersionInfo> |
</VersionInfo> |
<VersionInfoKeys> |
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys> |
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys> |
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="InternalName"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys> |
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys> |
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductName"></VersionInfoKeys> |
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> |
<VersionInfoKeys Name="Comments"></VersionInfoKeys> |
</VersionInfoKeys> |
<Source> |
<Source Name="MainSource">ShlExt.dpr</Source> |
</Source> |
</Delphi.Personality> </BorlandProject></BorlandProject> |
</ProjectExtensions> |
<ItemGroup /> |
<ItemGroup> |
<DelphiCompile Include="ShlExt.dpr"> |
<MainSource>MainSource</MainSource> |
</DelphiCompile> |
<DCCReference Include="ShellExtMain.pas" /> |
</ItemGroup> |
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" /> |
</Project> |
/trunk/Quelltext/ShlExt.rc |
---|
0,0 → 1,30 |
KONTEXTICON BITMAP "Ressourcen\ShlExt\Kontexticon.bmp" |
1 VERSIONINFO |
FILEVERSION 4,1,0,0 |
PRODUCTVERSION 4,1,0,0 |
FILEOS 0x4 |
FILETYPE 0x1 |
{ |
BLOCK "StringFileInfo" |
{ |
BLOCK "00000000" |
{ |
VALUE "CompanyName", "ViaThinkSoft\0" |
VALUE "FileDescription", "(De)Coder Shell-Extension\0" |
VALUE "FileVersion", "1.0.0.0\0" |
VALUE "InternalName", "DC4 ShlExt\0" |
VALUE "LegalCopyright", "© Copyright 2001 - 2007 ViaThinkSoft\0" |
VALUE "OriginalFilename", "ShlExt.dll\0" |
VALUE "ProductName", "(De)Coder\0" |
VALUE "ProductVersion", "4.1.0.0\0" |
VALUE "Projektleiter", "Daniel Marschall - www.daniel-marschall.de\0" |
VALUE "Webseite", "www.viathinksoft.de\0" |
} |
} |
BLOCK "VarFileInfo" |
{ |
VALUE "Translation", 0x0000 0x0000 |
} |
} |
/trunk/Quelltext/Warten.dfm |
---|
0,0 → 1,71 |
object WartenForm: TWartenForm |
Left = 0 |
Top = 0 |
BorderIcons = [] |
BorderStyle = bsSingle |
Caption = 'Bitte warten...' |
ClientHeight = 149 |
ClientWidth = 425 |
Color = clBtnFace |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -11 |
Font.Name = 'MS Sans Serif' |
Font.Style = [] |
FormStyle = fsStayOnTop |
OldCreateOrder = False |
Position = poMainFormCenter |
OnCreate = FormCreate |
PixelsPerInch = 96 |
TextHeight = 13 |
object lbl_wait: TLabel |
Left = 8 |
Top = 19 |
Width = 91 |
Height = 29 |
Caption = 'lbl_wait' |
Font.Charset = DEFAULT_CHARSET |
Font.Color = clWindowText |
Font.Height = -24 |
Font.Name = 'MS Sans Serif' |
Font.Style = [fsBold] |
ParentFont = False |
Transparent = True |
end |
object lbl_info1: TLabel |
Left = 8 |
Top = 104 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object lbl_info2: TLabel |
Left = 8 |
Top = 120 |
Width = 7 |
Height = 13 |
Caption = '#' |
Transparent = True |
end |
object pbr_progress: TProgressBar |
Left = 8 |
Top = 64 |
Width = 409 |
Height = 33 |
Max = 10000 |
Smooth = True |
TabOrder = 0 |
end |
object btn_escape: TButton |
Left = 296 |
Top = 116 |
Width = 121 |
Height = 25 |
Cancel = True |
Caption = '#' |
TabOrder = 1 |
Visible = False |
OnClick = btn_escapeClick |
end |
end |
/trunk/Quelltext/Warten.pas |
---|
0,0 → 1,84 |
unit Warten; |
interface |
uses |
Windows, Messages, SysUtils, Forms, IniFiles, Controls, Classes, |
ComCtrls, StdCtrls, DCConst, ExtCtrls, |
dialogs; |
type |
TWartenForm = class(TForm) |
pbr_progress: TProgressBar; |
lbl_wait: TLabel; |
lbl_info1: TLabel; |
lbl_info2: TLabel; |
btn_escape: TButton; |
procedure btn_escapeClick(Sender: TObject); |
procedure FormCreate(Sender: TObject); |
private |
LangArray: array of TLanguageEntry; |
function GetLangEntry(name: string): string; |
end; |
var |
WartenForm: TWartenForm; |
implementation |
uses Main; |
{$R *.dfm} |
function TWartenForm.GetLangEntry(name: string): string; |
var |
i: integer; |
begin |
for i := 0 to high(LangArray) do |
begin |
if LangArray[i].name = name then |
begin |
result := LangArray[i].text; |
break; |
end; |
end; |
end; |
procedure TWartenForm.btn_escapeClick(Sender: TObject); |
begin |
mainform.close; |
end; |
procedure TWartenForm.FormCreate(Sender: TObject); |
var |
ini: TIniFile; |
str: TStringList; |
i: integer; |
begin |
// Sprachdatei auslesen |
ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Language.ini'); |
str := TStringList.Create(); |
try |
ini.ReadSection(Name, str); |
for i := 0 to str.count-1 do |
begin |
setlength(LangArray, length(LangArray)+1); |
LangArray[length(LangArray)-1].name := str.strings[i]; |
LangArray[length(LangArray)-1].text := ini.ReadString(name, str.strings[i], '?'); |
LangArray[length(LangArray)-1].text := StringReplace(LangArray[length(LangArray)-1].text, '###', #13#10, [rfReplaceAll]); |
end; |
finally |
ini.free; |
str.Free; |
end; |
// Formular vorbereiten |
lbl_wait.Caption := GetLangEntry('wait'); |
btn_escape.Caption := GetLangEntry('exit'); |
lbl_wait.Left := clientwidth div 2 - lbl_wait.Width div 2; |
end; |
end. |
/trunk/Quelltext/WindowsXP.res |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/funktionsweise_1.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/funktionsweise_2.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/funktionsweise_3.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/Quelltext/style.css |
---|
0,0 → 1,24 |
body |
{ |
background:#FFFFFF; |
font-family:Arial; |
font-size:15; |
} |
a |
{ |
color:#008000; |
} |
.ueberschrift |
{ |
color:#0000DD; |
font-weight:bold; |
font-size:23; |
} |
.titel |
{ |
color:#FF0000; |
font-size:26; |
} |