![]() |
Programm aus einem anderen starten und Werte übergeben
Hallo,
hab hier schon viele Beiträge über shellexecute und createprocess gelesen, konnte leider bisher keinen finden der mein Problem behandelt. Ich möchte mit Programm A Programm B starten und dabei Werte(Name, Vorname, Geburtsdatum) an Programm B übergeben. Mit shellexecute hab ich es probiert(ShellApi ist eingebunden), bekomme aber immer eine Fehlermeldung, da i kleiner 32 ist.
Delphi-Quellcode:
Auf der Empfängerseite lese ich den Wert unter FormCreate wie folgt ein:
. . .
Anwendung:= TUmgebungsvariablen.VLVerzeichnis + 'B.exe ' + Kunde.Nachname ; // + ' ' + Kunde.Vorname // + ' ' + Gebdat; i := ShellExecute(Application.Handle,'open',PChar(Anwendung),Nil, Nil, SW_NORMAL); if i <= 32 then ShowMessage('Es ist ein Fehler beim Starten von B aufgetreten'); . . .
Delphi-Quellcode:
Für ein paar verständliche Zeilen auf Sender und Empfängerseite wäre ich sehr dankbar, da ich noch nicht so lange mit Delphi programmiere.
procedure TB.FormCreate(Sender: TObject);
var datumswert : String; FText1 : String; FText2 : String; begin KdName:=paramstr(1); . . . okoeller |
Re: Programm aus einem anderen starten und Werte übergeben
Als Application-name kommt nur der Pfad zum Programm, also das Programm an sich rein. Du gibts da ja gleich noch den Parameter dazu, was dazu führt dass das Programm nicht gefunden wird und es somit auch nicht gestartete werden kann (daher auch die Fehlermeldung). Parameter musst du in einer der beiden NIL übergeben (ich glaube es ist das erste NIL).
Desweiteren ist es beim 2. programm besser zu prüfen ob du überhaupt Parameter hast, also
Delphi-Quellcode:
if ParamCount > 0 then..
|
Re: Programm aus einem anderen starten und Werte übergeben
Zitat:
Zitat:
|
Re: Programm aus einem anderen starten und Werte übergeben
Hallo,
mit der Hilfe von xX0815Xx bin ich weiter gekommen. Mit folgendem Code wird der Kundenname an das Programm B übergeben.
Delphi-Quellcode:
Wie muss ich denn jetzt PChar(Kunde.Nachname) im ShellExecute() ändern damit ich drei Werte(Name, Vorname und GebDatum) übergeben kann.
Anwendung:= TUmgebungsvariablen.VLVerzeichnis + 'B.exe ' ;
i := ShellExecute(Application.Handle,'open',PChar(Anwendung),PChar(Kunde.Nachname), Nil, SW_NORMAL); okoeller |
Re: Programm aus einem anderen starten und Werte übergeben
Du hängst die einfach an den Paramter ran, also
Delphi-Quellcode:
und wertest die Paramter dann in einer for-Schleife aus
Paramter := NachName + Vorname + Datum
Delphi-Quellcode:
if ParamCount = 4 then //damit es auch wirklich nur bei den 3 Parametern ausgeführt wird
begin Nachname := ParamStr(1); Vorname := ParamStr(2); Datum := ParamStr(3); end; |
Re: Programm aus einem anderen starten und Werte übergeben
Hallo,
hab es selbst herausgefunden. Programm A ruft auf und sendet:
Delphi-Quellcode:
Programm B wird gestartet und empfängt:
Anwendung:= TUmgebungsvariablen.VLVerzeichnis + 'Versorgungsluecke.exe ' ;
i := ShellExecute(Application.Handle, 'open', PChar(Anwendung), PChar(Kunde.Nachname + ' ' + Kunde.Vorname + ' ' + Datetostr(Kunde.Geburtsdatum)), Nil, SW_NORMAL);
Delphi-Quellcode:
Das funktioniert!
procedure TB.FormCreate(Sender: TObject);
begin if ParamCount > 0 then begin KdName:=paramstr(1); KdVorname:=paramstr(2); KdGebdatum:=paramstr(3); if KdName <> '' then edtName.text := KdName; if KdVorname <> '' then edtVorname.text := KdVorname; if KdGebdatum <> '' then edtGebDat.text := KdGebdatum; end; Das Programm muss auch ohne Parameter startbar sein. Danke für die Tipps okoeller |
Re: Programm aus einem anderen starten und Werte übergeben
Als Nebeninfo: Deklarierst du als Vorname z.b. 'Hans Martin' würde es Probleme geben, da das Programm dann einen 'Martin' als weiteren Parameter erkennt. Imho kann man das korrigieren indem man als String '"Hans Martin"' schreibt...
|
Re: Programm aus einem anderen starten und Werte übergeben
super !
danke für den Tipp, aber wie setze ich das denn auf der Senderseite konkret um?????? okoeller |
Re: Programm aus einem anderen starten und Werte übergeben
Lass dir per ShowMessage mal die Parameter ausgeben. Es kann sein dass dann '"Hans Martin"' schon als 'Hans Martin' ankommt (also ohne ""), in dem Fall brauchst du nichts weiteres mehr machen. Ansonsten müsstest du schauen ob am Anfang des Parameters ein " vorkommt und, wenn das so sein sollte, das erste und das letzte Zeichen des Strings löschen bzw. das dazwischen ausschneiden.
Ich weiß jetzt nicht aus dem Kopf wie das ganze erkannt wird^^ |
Re: Programm aus einem anderen starten und Werte übergeben
ok
werd mal was in der Richtung versuchen. Vielen Dank okoeller |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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 by Thomas Breitkreuz