AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts
Thema durchsuchen
Ansicht
Themen-Optionen

CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

Ein Thema von internetnavigator · begonnen am 22. Okt 2010 · letzter Beitrag vom 24. Mär 2011
Antwort Antwort
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#1

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 23. Okt 2010, 13:21
Frag ich mal allgemeiner: Woran kann es liegen, dass CreateProcess(...) bei einer Anwendung mit GUI den Prozess erstellt, in einer Konsolenanwendung aber der Prozess garnicht erst erstellt wird, oder nur kurz im Tastmanager aufblinkt und dann wieder verschwindet?

Vielleicht ist das wichtig: Ich hatte die Variablen
Delphi-Quellcode:
    const bufsize=1024; // 1KByte Buffer
    Var
      buf: array [0..bufsize-1] of AnsiChar; // Musste ich ändern von Char sonst falsche Zeichen
      si: tSTARTUPINFO;
      sd: tSECURITYDESCRIPTOR;
      pi: tPROCESSINFORMATION;
      newstdin, newstdout, read_stdout, write_stdin: tHandle;
      bread, avail: dword;
aus der Deklaration in der Methode RC_RUN genommen und sie global (private) im Kopf deklariert. Als ich auch sa: tSECURITYATTRIBUTES dort deklariert hatte, wurder in der GUI ebenfalls kein Prozess erzeugt, also habe ich
Delphi-Quellcode:
Constructor TSysCmd.Create(pCmdDatei, pErrorStr, pStartOrdner : String);
Var
 sa: tSECURITYATTRIBUTES; // <<-- HIER
//(...)
lokal in dem Construktor belassen. Nochmal: Wenn ich sa auch global deklariere, dann wird auch in der GUI kein Prozess erzeugt. Kann es also vielleicht an den Attributen liegen?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 23. Okt 2010, 17:13
Wenn du in einem Konsolenprozess eine neuen Konsoleprozess startest, dann wird die Ausgabe in deinem Konzolenprozess gemacht, es sei denn du verwendest das CreateProcess Flag CREATE_NEW_CONSOLE .
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#3

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 23. Okt 2010, 17:29
Ja, so stehts auch auf der Microsoft-Seite. Aber ich hab doch CREATE_NEW_CONSOLE genutzt?
Nebenbei: Gibt es auch einen Parameter, dass ein neuer Prozess erzeugt wird, wenn ich aus der Konsole (cmd.exe in einem Pfad) eine Konsolenanwendung ausführe [also irgendwas bei "C:\test.exe" zb.]


Delphi-Quellcode:
  if not CreateProcess(pchar(pCmdDatei), nil, nil, nil, true,
      CREATE_NEW_CONSOLE, nil, nil {pChar(lStartOrdner)}, si, pi) then begin
  Mit Zitat antworten Zitat
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#4

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 23. Okt 2010, 23:12
Würde es helfen, wenn ihr euch die Unit mal ansehen könntet und selber im Debugger laufen lassen könntet?
Hab sie mal angehangen.

Einzubinden wie folgt:
Delphi-Quellcode:
//(...) Zusatzinfos
    Button1: TButton;
    Memo1: TMemo;
    dir: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
//(...)
procedure TForm1.Button2Click(Sender: TObject);
begin
syscmd.SendeZeile(dir.Text);
end;

procedure incoming(p: string);
begin
 Form1.Memo1.Lines.Add(p);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SysCmd := TSysCmd.Create('C:\Windows\System32\cmd.exe', Self.Caption, 'C:\');
syscmd.RC_LineOut := incoming;
end;
Bitte schauts' euch mal an, Vielen Dank!
Angehängte Dateien
Dateityp: pas mSysCmd.pas (6,1 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 24. Okt 2010, 00:23
Nanu, das hab ich glatt übersehen.

Gibt denn CreateProcess einen Fehler zurück?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
internetnavigator

Registriert seit: 13. Mai 2006
94 Beiträge
 
RAD-Studio 2010 Arc
 
#6

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 24. Okt 2010, 00:31
Nein, leider nicht. Es scheint alles normal. Auch wenn ich Step-by-Step durch die Routine laufe, alles wie es sollte. Bis auf den fehlenden Prozess.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: CreateProcess - Bei GUI geht's, bei Konsole tut sich nichts

  Alt 24. Okt 2010, 11:58
Klick die Konsolenanwendung mal doppelt im Explorer an und guck, was passiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 07:21 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