Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm mit CreateProcess starten (https://www.delphipraxis.net/146977-programm-mit-createprocess-starten.html)

Gargamel 30. Jan 2010 11:09


Programm mit CreateProcess starten
 
OK, es soll ein Programm mit CreateProcess gestartet werden. Leider zuckt sich nix.
Hier ist der Quellcode:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var CommandLine:string;
    Dir:PChar;
    StartUpInfo: TStartUpInfo;
begin
  CommandLine:='C:\Windows\notepad.exe';
  Dir:=PChar('C:\');
  CreateProcess(nil,
                PChar(CommandLine),
                nil,
                nil,
                false,
                0,
                nil,
                Dir,
                StartUpInfo,
                ProcInfo);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TerminateProcess(ProcInfo.hProcess,null);
end;
ProcInfo: Process_Information; wurde global deklariert.

Was mache ich falsch?

toms 30. Jan 2010 11:16

Re: Programm mit CreateProcess starten
 
Delphi-Quellcode:
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
vor CreateProcess
In der Codelib gibt's auch eine solche Funktion.

Gargamel 30. Jan 2010 11:22

Re: Programm mit CreateProcess starten
 
Sehr schön. Funktioniert prima. Danke.

himitsu 30. Jan 2010 11:24

Re: Programm mit CreateProcess starten
 
CreateProcess hat ein Result, welches man prüfen kann und MSDN-Library durchsuchenGetLastError ist auch hilfreich.

Gargamel 30. Jan 2010 11:27

Re: Programm mit CreateProcess starten
 
Das habe ich auch probiert. Leider habe ich mit der Funktion FormatMessage meine Probleme.

Luckie 30. Jan 2010 11:39

Re: Programm mit CreateProcess starten
 
Dann nimm doch die Kapselung der VCL: SysErrorMessage.

Gargamel 30. Jan 2010 11:47

Re: Programm mit CreateProcess starten
 
Auch das funktioniert astrein. Danke.

himitsu 30. Jan 2010 11:55

Re: Programm mit CreateProcess starten
 
Im Notfall kann man die Fehlernummer von MSDN-Library durchsuchenGetLastError in der dort verlinkten "System Error Codes"-Liste nachschlagen.

Luckie 30. Jan 2010 11:57

Re: Programm mit CreateProcess starten
 
Noch einfacher: Konsole öfnnen und net helpmsg <Fehlernummer> ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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