AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecute Laufzeitproblem

Ein Thema von LuCSteR · begonnen am 15. Jan 2009 · letzter Beitrag vom 16. Jan 2009
Antwort Antwort
Seite 1 von 3  1 23      
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#1

ShellExecute Laufzeitproblem

  Alt 15. Jan 2009, 15:54
Hi,

um die beiden zeilen geht es:
Delphi-Quellcode:
ShellExecute(0, 'open', PChar(GetCurrentDir+'\7za.exe'), PChar('e -o"'+TempDownloadDir+IP+'" "'+TempDownloadDir+IP+'\'+Form1.ListBox3.Items[i]+'"'), nil, SW_SHOWNORMAL);
          
DeleteFile(TempDownloadDir+IP+'\'+Form1.ListBox3.Items[i]);
erst wird die datei entpackt (TempDownloadDir+IP+'\'+Form1.ListBox3.Items[i]) und danach soll sie gelöscht werden. die entpackten dateien haben namen verschieden von der gepackten datei. aber trotzdem werden alle entpackten und die gepackte datei gelöscht.

da die sache przedural nacheinander abläuft müsste das ergebnis sein, das nur noch die entpackten dateien vorliegen. tun sie aber nicht.

grüße steve
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: ShellExecute Laufzeitproblem

  Alt 15. Jan 2009, 16:25
Hallo,

brauchst Du auch hier wieder die Hochkommas?
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#3

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 09:45
Wie meinst du deine Frage? An welcher Stelle Hochkommatas?
Wenn ich den Delete-Befehl weglasse werden alle Dateien ordnungsgemäß entpackt.
Jetzt sollen nur die Zip-Archive gelöscht werden. Diese haben aber einen ganz anderen Namen als die entpackten Dateien. Und trotzdem werden die Zips und die entpackten Dateien gelöscht.

Habe ich da ein Laufzeit Problem? Kann ja sein, das das Shellexecute ausgeführt wird, aber garnicht auf dessen "ende gewartet" und gleich der nächste Befehl ausgeführt wird.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 09:57
ShellExecute wartet nicht, bis die Anwendung beendet wurde.

Schau dir das mal an -> http://www.delphi-library.de/printvi...=77895&start=0
Oder -> http://www.swissdelphicenter.ch/torr...code.php?id=93
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#5

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 10:16
Die funktionen laufen bei mir nicht.
Hab die ExecusionInfo angepasst aber trotzdem kommt in der zeile
  If ShellExecuteEx(@ExecuteInfo) and (ExecuteInfo.hInstApp> 32) then dieser Fehler
Unit1.pas(412,6) Error: Can't determine which overloaded function to call Die Variable Wnd sollte auch in hWnd umgeschrieben werden, sonst gibs auch nen Fehler.

Kann mir da jmd weiterhelfen? Ansonsten muss ich das Prob iwie anders lösen.


---Edit---
werd mich gleich mal mit dem 2ten Link beschäftigen. danke
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 10:21
Hallo,
Zitat von LuCSteR:
Wie meinst du deine Frage? An welcher Stelle Hochkommatas?
Wenn ich den Delete-Befehl weglasse werden alle Dateien ordnungsgemäß entpackt.
Jetzt sollen nur die Zip-Archive gelöscht werden. Diese haben aber einen ganz anderen Namen als die entpackten Dateien. Und trotzdem werden die Zips und die entpackten Dateien gelöscht.

Habe ich da ein Laufzeit Problem? Kann ja sein, das das Shellexecute ausgeführt wird, aber garnicht auf dessen "ende gewartet" und gleich der nächste Befehl ausgeführt wird.
ich dachte eventuell so:
DeleteFile('"' + TempDownloadDir+IP+'\'+Form1.ListBox3.Items[i] + '"'); DeleteFile ist vom Type Boolean, frag' mal den Rückgabewert davon ab, eventuell ist ja garnicht das Löschen das Problem, sondern irgend was anderes?
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 10:35
Zitat:
Kann mir da jmd weiterhelfen? Ansonsten muss ich das Prob iwie anders lösen.
Wenn die Codes aus den Links nicht direkt 1:1 gehen, sollte das Prinzip was dahinter steht, dennoch klar sein: Du mußt warten, bis die Anwendung, die dein Programm startet, beendet ist.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#8

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 10:38
Naphets,

daran liegt es leider nicht. schön wärs. liegt daran das ShellExecute nicht wartet.
Da versucht man ein Prob zu lösen und hat damit nen noch schwereres ausgelöst...

@nuclearping:
das Prinzip ist klar Aber die Lösung nicht.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#9

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 10:53
Delphi-Quellcode:
function ShellExecute_AndWait(Operation, FileName, Parameter, Directory: string;
  Show: Word; bWait: Boolean): Longint;
var
  bOK: Boolean;
  Info: TShellExecuteInfo;
  
begin
  FillChar(Info, SizeOf(Info), Chr(0));
  Info.cbSize := SizeOf(Info);
  Info.fMask := SEE_MASK_NOCLOSEPROCESS;
  Info.lpVerb := PChar(Operation);
  Info.lpFile := PChar(FileName);
  Info.lpParameters := PChar(Parameter);
  Info.lpDirectory := PChar(Directory);
  Info.nShow := Show;
  bOK := Boolean(ShellExecuteEx(@Info));
  if bOK then
  begin
    if bWait then
    begin
      while
        WaitForSingleObject(Info.hProcess, 100) = WAIT_TIMEOUT
        do Application.ProcessMessages;
      bOK := GetExitCodeProcess(Info.hProcess, DWORD(Result));
    end
    else
      Result := 0;
  end;
  if not bOK then Result := -1;
end;
Fehlermedlung bei
bOK := Boolean(ShellExecuteEx(@Info)); --> "Unit1.pas(411,18) Error: Can't determine which overloaded function to call"

Was heißt denn das? Vll liegt es an der Syntax, ob die ein wenig unterschiedlich ist bei Lazarus und Delphi? Speziell das "@"?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: ShellExecute Laufzeitproblem

  Alt 16. Jan 2009, 11:03
welche Parameter erwartet die Funktion denn bei dir? Entspechend solltest du den gewünschten Parameter-Typ übergeben
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz