Also: Ich will von einem Programm aus ein anderes Starten. Dieses andere Program soll dem ersten Program etwas berechnen, das in einer Datei zwischengespeichert wird. (Dateiname ist vorher festgelegt) Das 2.te Program soll dem ersten Bescheidgeben wenn es fertig ist und dann ladet das erste Program die Ergebnisse aus der gelichen Datei heraus und löscht diese wieder.
Ich habe jetzt Probleme bei dem Starten des Zweiten Programms das
Handle so zu übergeben, dass das zweite Program eine Antwort zurücksenden kann.
Quelltext(Ohne Datei speichern, öffnen und löschen, des funktioniert ja einwandfrei!):
1. Program, dass das zweite Program started:
Delphi-Quellcode:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 =
class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WndProc(
var Msg: TMessage);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Params:
string;
begin
Params:=IntToStr(
Handle)+'
'+IntToStr(WM_USER+20);
//als Absenderadresse und identifier der eigenen nachrichten
ShellExecute(
Handle, '
open', '
start.exe', PChar(Params), PChar(ExtractFilePath(Application.ExeName)+'
DB/'), SW_SHOWNORMAL);
end;
procedure TForm1.WndProc(
var Msg: TMessage);
var
Point: TPoint;
begin
if Msg.Msg = WM_USER + 20
then
begin
case Msg.WParam
of
1:
begin
case Msg.LParam
of
1:
begin
Label1.Caption:='
Angekommen';
end;
//of 1
end;
//of LParam
end;
//of 1
end;
//of WParam
end {Wenn's keine Nachricht von mir war kriegts
die ursprüngliche Funktion}
else inherited;
end;
end.
2. Program, dass ne Nachricht an das erste zurückschickt
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamStr(1)<>'
'
then
begin
SendMessage(StrToInt(ParamStr(1)), StrToInt(ParamStr(2)), 1, 1);
end;
end;
end.