Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
RAD-Studio 2009 Pro
|
Re: Problem Feststellung wann Konvertieren beendet 'lame.exe
27. Aug 2008, 15:30
Naja, ich habe die dll jetzt nicht genutzt und bin bei der lame.exe geblieben. Der Tipp mit dem CreateProcess hat mir sehr geholfen.
Ich habe den Code wie folgt abgeändert und nun funktioniert es:
Delphi-Quellcode:
(* Anhang anhängen *)
procedure TMailForm.AnhangAdd(Dir: String);
var sSource, sDest: TFileStream;
DestName, DestName2, t, lame, mp3: String;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
Result: Boolean;
begin
ShowBusy(True);
if ExtractFileExt(Dir) = '.wav' then
begin
try
DestName := ChangeFileExt(Dir, '.mp3');
DestName := tempdir + ExtractFileName(DestName);
lame := progdir + 'lame.exe';
mp3 := '"' + Dir + '" "' + DestName + '"';
FillChar (StartupInfo, SizeOf (TStartupInfo), 0);
StartupInfo.cb := Sizeof (TStartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW OR STARTF_USEPOSITION OR STARTF_USESIZE ;
StartupInfo.wShowWindow := SW_Hide;
Result := CreateProcess (
nil,
PChar(lame + ' ' + mp3),
nil,
nil,
False,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo
);
If Result then
WaitForSingleObject (ProcessInfo.hProcess, INFINITE);
if ProcessInfo.hProcess <> 0 then
CloseHandle (ProcessInfo.hProcess);
except
MessageDlg('Fehler beim Umwandeln der Aufnahme. Anhängen fehlgeschlagen!',
mtError, [mbOk], 0);
end; // try1
try // try 2
sSource := TFileStream.Create(DestName, fmOpenRead+fmShareDenyNone);
sDest := TFileStream.Create(DestName + '.enc', fmCreate);
with TEncryption.Create(encpw, 0, defCryptBufSize) do
begin
if EncryptStream(sSource,sDest) then // if 3
begin
Dir := DestName + '.enc';
end
else
MessageDlg('Fehler beim Verschlüsseln!', mtError, [mbOk], 0);
Free;
end; // with
finally
sSource.Free;
sDest.Free;
AnhangOpenDlg.FileName := '';
end; // try 2
Vielen Dank
MfG,
Franz
Franz
|
|
Zitat
|