AGB  ·  Datenschutz  ·  Impressum  







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

WaitForSingleObject Problem

Ein Thema von Gehstock · begonnen am 29. Jul 2008 · letzter Beitrag vom 29. Jul 2008
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

WaitForSingleObject Problem

  Alt 29. Jul 2008, 10:55
Delphi-Quellcode:
var
 I: Integer;
 iFHandle,Process : THandle;
begin
 iFHandle:=FileCreate(GetTempDir+'\Convert.exe'); //Holt die Exe aus nem Byte Array um nicht in den Ressourcen aufzutauchen
         if iFHandle<>INVALID_HANDLE_VALUE then
          begin
           if FileWrite(iFHandle,Converter,SizeOf(Converter))=SizeOf(Converter) then
            FileClose(iFHandle);
          end; // if iFHandle
 Err := ShellExecute(Process,
                    'Open',
                    PChar('"'+GetTempDir+'\Convert.exe"'),
                    Pchar('"'+AFileName+'"'),
                    Pchar(ExtractFilePath(Application.Exename) ),
                    SW_Hide);
  if Err > 32 then
Begin
  if WaitForSingleObject(Process, 1000) = WAIT_OBJECT_0 then //An dieser stelle hängts
// Sleep(1000); //Meine alte Lösung die auch funktioniert (könnte aber auf langsamen Rechnern Probleme machen)
try
    Sl.Clear;
    Sl.LoadFromFile(AFileName);
versuche auf die Fertigstellung des Programms zu warten (Console) klappt aber leider nicht
Marcel
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: WaitForSingleObject Problem

  Alt 29. Jul 2008, 11:00
der 1. Parameter von shelexecute gibt nicht das Handle zu dem neuen Prozess zurück!!!

vgl PSDK

du musst mit CreateProcess arbeiten.

in den PROCESS_INFORMATION findest du hProcess.
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#3

Re: WaitForSingleObject Problem

  Alt 29. Jul 2008, 11:04
Oder mit ShellExecuteEx und dem Member hProcess von ShellExecuteInfo.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#4

Re: WaitForSingleObject Problem

  Alt 29. Jul 2008, 11:08
Benutze MSDN-Library durchsuchenShellExecuteEx, damit kannst Du ein Handle auf den Prozess bekommen.
[edit] Kein roter Kasten... [edit]
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#5

Re: WaitForSingleObject Problem

  Alt 29. Jul 2008, 11:32
habs so hinbekommen

Delphi-Quellcode:
function TForm1.Execute: Boolean;
var
  SHELLINFO : TShellExecuteInfo;
  lpExitCode : Cardinal;
begin
 Result := False;
   fillChar(SHELLINFO, SizeOf(SHELLINFO), #0);
  with SHELLINFO do
  begin
    cbSize := SizeOf(SHELLINFO);
    fMask := 64;
    Wnd := 0;
    lpVerb := nil;
    lpFile := PChar('"'+GetTempDir+'\Convert.exe"');
    lpParameters := PChar('"'+AFileName+'"');
    lpDirectory := PChar(ExtractFilePath(Application.Exename));
    nShow := SW_HIDE;
  end;
  try
    ShellExecuteEx(@SHELLINFO);
   if WaitForSingleObject(SHELLINFO.hProcess, 1000) = 0 then
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SHELLINFO.hProcess, lpExitCode);
    until (lpExitCode <> STILL_ACTIVE);
    Result := True;
  except
    on E:Exception do
    showmessage(e.Message);
  end;
end;
Aufruf

Delphi-Quellcode:
var
 I: Integer;
 iFHandle,Process : THandle;
begin
 iFHandle:=FileCreate(GetTempDir+'\Convert.exe');
         if iFHandle<>INVALID_HANDLE_VALUE then
          begin
           if FileWrite(iFHandle,Converter,SizeOf(Converter))=SizeOf(Converter) then
            FileClose(iFHandle);
          end; // if iFHandle
  if Execute then
Begin
 try
    Sl.Clear;
    Sl.LoadFromFile(AFileName);

Danke
Marcel
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:18 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