AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateProcess startet meine Anwendung nicht
Thema durchsuchen
Ansicht
Themen-Optionen

CreateProcess startet meine Anwendung nicht

Ein Thema von little_budda · begonnen am 21. Jul 2008 · letzter Beitrag vom 22. Jul 2008
 
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#1

CreateProcess startet meine Anwendung nicht

  Alt 21. Jul 2008, 06:35
Hallo,

ich wollte mal einen Versuch starten eine externe Anwendung zu starten und den Datenstrom selbst in einer Box darzustellen.
Meine Spielwiese besteht aktuell aus zwei Edits und einem Button zum starten.
Edit 1 [ed_app] : "ipconfig"
Edit 2 [ed_para]: "/all"

Ich habe hier im Forum folgenden Code gefunden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var StartStruct: STARTUPINFO; // Anweisungen für den Prozess-Start
    ProcInfo: PROCESS_INFORMATION; // das kriegen wir zurück
    WriteInput, ReadOutput: THandle; // hierüber können wir mit dem Prozess kommunizieren
    SecAttr: SECURITY_ATTRIBUTES; // hiermit sagen wir, dass die Handles vererbbar werden sollen
    pAppStr, pAttrStr : PAnsiChar;
begin
  pAppStr := pchar(ed_app.text);
  pAttrStr := pchar(ed_para.text);

  FillChar(StartStruct, SizeOf(StartStruct), #0);

  StartStruct.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartStruct.wShowWindow := SW_MAXIMIZE;
  StartStruct.cb:=SizeOf(StartStruct); // Die Größenangabe muss stimmen!

  StartStruct.dwFlags:=STARTF_USESTDHANDLES; // Wir wollen die Standard-Handles umleiten

  SecAttr.nLength := SizeOf(SecAttr);
  SecAttr.lpSecurityDescriptor := nil; // Standard-Sicherheit
  SecAttr.bInheritHandle := True; // vererbbar

  CreatePipe(ReadOutput, StartStruct.hStdOutput, @SecAttr, 0);
  CreatePipe(StartStruct.hStdInput, WriteInput, @SecAttr, 0); //die Handles erzeugen

  CreateProcess(
               pAppStr, { LPCTSTR               - lpApplicationName    }
               pAttrStr, { LPTSTR                - lpCommandLine        }
               nil, { LPSECURITY_ATTRIBUTES - lpProcessAttributes  }
               nil, { LPSECURITY_ATTRIBUTES - lpThreadAttributes   }
               false, { BOOL                  - bInheritHandles      }
               CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, { DWORD - dwCreationFlags }
               nil, { LPVOID                - lpEnvironment        }
               nil, { LPCTSTR               - lpCurrentDirectory   }
               StartStruct, { LPSTARTUPINFO         - lpStartupInfo        }
               ProcInfo { LPPROCESS_INFORMATION - lpProcessInformation }
               );

  CloseHandle(StartStruct.hStdOutput);
  CloseHandle(StartStruct.hStdInput);
  CloseHandle(ProcInfo.hProcess); // Nur falls du das Prozesshandle nicht brauchst
  CloseHandle(ProcInfo.hThread);

  //jetzt mit ReadFile/WriteFile kommunizieren

  CloseHandle(WriteInput);
  CloseHandle(ReadOutput);
end;
Ich durchblicke diesen Code nicht wirklich, aber er startet jedenfalls keine Anwendung.
Ich wäre schon dankbar für einen Tipp oder eine Erklärung.

Gruß Holger.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
 


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 12:17 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