Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Nachricht an anderes Programm senden


stiftmaster - Do 30.08.12 16:21
Titel: Nachricht an anderes Programm senden
Hallo,

ich habe zwei Programme in Delphi 7 geschrieben. Das Programm 1 ruft via ShellExecute() das Programm 2 auf und setzt dann die eigene Form auf Hide. Das klappt problemlos.

Nun soll bei einem Buttonklick in Program 2 eine Nachricht an Programm 1 geschickt werden und sich dieses dann wieder mit Form.Show() melden.

Leider raffe ich nicht, was ich Program 2 als Startparameter übergeben muss, damit es weiß, an wen eine Nachricht geschickt wird.

Kann mir da jemand helfen?

Danke und Gruß

Stefan


bummi - Do 30.08.12 17:19


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Shellapi;

type
  TForm5 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FCallerHandle:integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
begin
  Shellexecute(handle,'OPEN',PChar(Application.ExeName),Pchar(IntToStr(Handle)),'',sw_Show);
  Hide;
end;

procedure TForm5.Button2Click(Sender: TObject);
begin
  ShowWindow(FCallerHandle,sw_Restore);
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
   if not TryStrToInt(Paramstr(1),FCallerHandle) then FCallerHandle := 0;
end;

end.