Subversion Repositories decoder

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
{ Allgemeine Funktion zum Verarbeiten der Kommandozeilenparameter }
2
// ursprünglich von OneInst
3
procedure TMainForm.ProcessCommandline(lpData: Pointer);
4
var
5
  arbeitsverzeichnis: string;
6
  i: integer;
7
begin
8
  ParamZeile := ParamBlobToStr(lpData);
9
 
10
  // Anwendung dient nur als Hilfeaufruf
11
 
12
  if GebeLinieaus(ParamZeile, 1) = '/?' then
13
  begin
14
    m_help.Click;
15
    close;
16
    exit;
17
  end;
18
 
19
  // Anwendung dient nur als Cleaner
20
 
21
  if paramzeile_firstposition('/clean') <> -1 then
22
  begin
23
    // 10 Sekunden warten, bis ggf. die temporären Dateien freigegeben wurden
24
    if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/silent') then Schlafen(10000);
25
    DeleteTempFiles;
26
    close;
27
    exit;
28
  end;
29
 
30
  // Verarbeitung der Befehlszeile
31
 
32
  if (ZaehleLinien(ParamZeile) > 1) then
33
  begin
34
    if (paramzeile_firstposition('/c') <> -1) and (paramzeile_firstposition('/x') <> -1) then
35
    begin
36
      if ZaehleLinien(ParamZeile) <> 4 then
37
      begin
38
        errorlevel := 3; // Falsche Syntax
39
      end
40
      else if not fileexists(GebeLinieaus(ParamZeile, 1)) and not directoryexists(GebeLinieaus(ParamZeile, 1)) then
41
      begin
42
        errorlevel := 9; // Datei oder Ordner nicht gefunden.
43
      end
44
      else
45
      begin
46
        if fileexists(GebeLinieaus(ParamZeile, 1)) then
47
        begin
48
          GetDir(0, arbeitsverzeichnis);
49
          ausgabegesetzt := arbeitsverzeichnis+'\'+GebeLinieaus(ParamZeile, 4);
50
          openfile(GebeLinieaus(ParamZeile, 1), '', true);
51
 
52
          if mode = tcDecrypted then
53
          begin
54
            // Datei verschlüsseln
55
            if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then
56
              ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben!
57
            edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
58
            edt_passwort2.Text := GebeLinieaus(ParamZeile, 3);
59
            try
60
              m_encrypt.Click;
61
            except
62
              // Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
63
              // bleiben, deswegen der Try-Except-Block.
64
              errorlevel := 2; // Fehler bei Ver/Entschlüsselung
65
            end;
66
          end;
67
 
68
          if mode = tcEncrypted then
69
          begin
70
            // Datei oder Ordner entschlüsseln
71
            if lowercase(extractfileext(ausgabegesetzt)) = lowercase(ExtDC4) then
72
              ausgabegesetzt := copy(ausgabegesetzt, 0, length(ausgabegesetzt)-length(ExtDC4)); // Ausgabe darf nicht .dc4 haben!
73
            edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
74
            try
75
              m_decrypt.Click;
76
            except
77
              // Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
78
              // bleiben, deswegen der Try-Except-Block.
79
              errorlevel := 2; // Fehler bei Ver/Entschlüsselung
80
            end;
81
          end;
82
        end
83
        else if directoryexists(GebeLinieaus(ParamZeile, 1)) then
84
        begin
85
          // Ordner verschlüsseln
86
          openfolder(GebeLinieaus(ParamZeile, 1));
87
          edt_passwort.Text := GebeLinieaus(ParamZeile, 3);
88
          edt_passwort2.Text := GebeLinieaus(ParamZeile, 3);
89
          ausgabegesetzt := GebeLinieaus(ParamZeile, 4);
90
          if lowercase(extractfileext(ausgabegesetzt)) <> lowercase(ExtDC4) then
91
          ausgabegesetzt := ausgabegesetzt + ExtDC4; // Ausgabe muss .dc4 haben!
92
          try
93
            m_encrypt.Click;
94
          except
95
            // Falls ein Fehler auftreten sollte, soll der Ablauf hier nicht stehen
96
            // bleiben, deswegen der Try-Except-Block.
97
            errorlevel := 2; // Fehler bei Ver/Entschlüsselung
98
          end;
99
        end;
100
      end;
101
      close;
102
    end
103
    else if (lowercase(GebeLinieaus(ParamZeile, 2)) = '/e') then
104
    begin
105
      if (ZaehleLinien(ParamZeile) = 2) or ((ZaehleLinien(ParamZeile) = 3) and (GebeLinieaus(ParamZeile, 3) = '/notsilent')) then
106
      begin
107
        if directoryexists(GebeLinieaus(ParamZeile, 1)) then
108
        begin
109
          dc_deletedir(GebeLinieaus(ParamZeile, 1));
110
          if directoryexists(GebeLinieaus(ParamZeile, 1)) then
111
          begin
112
            if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
113
              Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
114
            else
115
              errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden.
116
          end
117
          else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
118
            Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION)
119
        end
120
        else if fileexists(GebeLinieaus(ParamZeile, 1)) then
121
        begin
122
          dc_deletefile(GebeLinieaus(ParamZeile, 1));
123
          if fileexists(GebeLinieaus(ParamZeile, 1)) then
124
          begin
125
            if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
126
              Application.MessageBox(pchar(GetLangEntry('delerror')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
127
            else
128
              errorlevel := 8; // Datei oder Ordner konnte nicht oder nur teilweise entfernt werden.
129
          end
130
          else if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
131
            Application.MessageBox(pchar(GetLangEntry('delok')), pchar(GetLangEntry('information')), MB_OK + MB_ICONINFORMATION)
132
        end
133
        else
134
        begin
135
          if (GebeLinieaus(ParamZeile, 3) = '/notsilent') then
136
            Application.MessageBox(pchar(GetLangEntry('fileorfoldernotfound')), pchar(GetLangEntry('error')), MB_OK + MB_ICONERROR)
137
          else
138
            errorlevel := 9; // Datei oder Ordner nicht gefunden.
139
        end;
140
      end
141
      else
142
      begin
143
        errorlevel := 3; // Falsche Syntax
144
      end;
145
      close;
146
    end
147
    else
148
    begin
149
      show;
150
 
151
      steuerelementesperren(true);
152
      zeige_wartenform(true);
153
      try
154
 
155
      try
156
        kazip.close;
157
      except
158
 
159
      end;
160
 
161
      if fileexists(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip) then deletefile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip);
162
      CreateZipFile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip);
163
      for i := 1 to ZaehleLinien(ParamZeile) do
164
      begin
165
        addtozip(GebeLinieaus(ParamZeile, i), GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip)
166
      end;
167
 
168
      openfile(GetTempDir+TempPre+mainform.temp_unique_number+TempExtZip, GetLangEntry('dateiensammlung'), true);
169
 
170
      finally
171
      steuerelementesperren(false);
172
      zeige_wartenform(false);
173
      end;
174
 
175
      application.Restore;
176
      application.BringToFront;
177
    end;
178
  end
179
  else
180
  begin
181
    show;
182
 
183
    if fileexists(GebeLinieaus(ParamZeile, 1)) then
184
    begin
185
      steuerelementesperren(true);
186
      zeige_wartenform(true);
187
      try
188
        openfile(GebeLinieaus(ParamZeile, 1), '', false);
189
      finally
190
        steuerelementesperren(false);
191
        zeige_wartenform(false);
192
      end;
193
    end
194
    else if directoryexists(GebeLinieaus(ParamZeile, 1)) then
195
    begin
196
      steuerelementesperren(true);
197
      zeige_wartenform(true);
198
      try
199
        openfolder(GebeLinieaus(ParamZeile, 1));
200
      finally
201
        steuerelementesperren(false);
202
        zeige_wartenform(false);
203
      end;
204
    end
205
    else
206
    begin
207
      application.Restore;
208
      application.BringToFront;
209
    end;
210
 
211
  end;
212
 
213
end;