AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mitbekommen wenn eine DosKonsole geschlossen wird.

Mitbekommen wenn eine DosKonsole geschlossen wird.

Ein Thema von corgan · begonnen am 18. Nov 2004 · letzter Beitrag vom 20. Nov 2004
 
corgan

Registriert seit: 16. Okt 2003
Ort: Hannover
44 Beiträge
 
Delphi 7 Professional
 
#1

Mitbekommen wenn eine DosKonsole geschlossen wird.

  Alt 18. Nov 2004, 20:16
Hallo

Ich bastel gerade an einem kleinem Konverter um MP3 Files nochmal zu komprimieren.
Dazu benutze ich die lame.exe

Ich habe also eine Liste mit MP3 Files, die ich in einer Schleife nacheinander komprimieren möchte.
Das Problem dabei ist jetzt, das sobald ich mit folgender Function die komprimierung gestartet habe, nicht mitbekomme, wann das Dos Fenster schlossen wird, um mit der nächsten Datei zu beginnen.

Hab die function hier im Forum gefunden:
Delphi-Quellcode:
function RunProcessGetHandle(const FileName: String): HWND;

  function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
  begin
    TList(lParam).Add(Pointer(hWnd));
    Result := True;
  end;

var
  SI: TStartupInfo;
  PI: TProcessInformation;
  List: TList;
  ProcessId: DWORD;
  I: Integer;
begin

  Result := 0;
  List := TList.Create;
  try
    FillChar(SI, SizeOf(TStartupInfo), 0);
    SI.cb := SizeOf(TStartupInfo);
    // SI.dwFlags := STARTF_USESHOWWINDOW;
    // SI.wShowWindow := SW_HIDE;
    if CreateProcess(nil, PChar(FileName), nil, nil, False, 0, nil, nil, SI, PI) then
    begin
      WaitForInputIdle(PI.hProcess, INFINITE);
      if EnumWindows(@EnumWindowsProc, Longint(List)) then
      begin
        for I := 0 to List.Count - 1 do
        begin
          GetWindowThreadProcessId(Longint(List.Items[I]), ProcessId);
          if PI.dwProcessId = ProcessId then
          begin
            Result := Longint(List.Items[I]);
            Break;
          end;
        end;
      end;
      CloseHandle(PI.hProcess);
      CloseHandle(PI.hThread);
    end;
  finally
    List.Free;
  end;

end;
Ich bekomme jedenfalls kein Handle zu einem DosFenster, das ich überprüfen könnte, um mit der nächsten datei zu beginnen.

Aufruf:
Delphi-Quellcode:
..
lamestring := extractfilepath(paramstr(0))+'lame.exe ' + _lamefiles + ' ' + _lameop ;
label13.Caption := inttostr(RunProcessGetHandle(lamestring));
..
Weiß jemand, wie ich die function umschreiben muss, um mitzubekommen wenn die konsole geschlossen wird ?

danke
gruss Corgan
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz