Programme mit Delphi bedienen

Hi,
wie kann ich von Delphi aus nachfragen, ob
ein Programm schon gestartet ist, bzw. diesem dann neue Paramter uebergeben, oder dort Funktionen ausfuehren.
Szenario:
Mein Programm macht eine HTML Seite. Per Klick soll sie auf dem Standartbrowser (z.B. IE) angezeigt werden, ohne das der Browser neu gestartet wird.
Mit CreateProcess wird jedesmal ein neues Fenster gestartet (Nicht gut)

Danke im voraus!
Gruss Bernd

Ich kenne mehrere Funktionen dazu, aber die öffnen alle eine neue Instanz des Browser.

Ich denke mal, dass du mit der API-Proc FindWindow (EnumWindows wenn’s mehrere Instanzen gibt) ein Handle auf das Fenster holen musst und es darüber navigieren.
type
PFindWindowStruct = ^TFindWindowStruct;
TFindWindowStruct = record
Caption : string;
ClassName : string;
WindowHandle : THandle;
end;

function EnumWindowsProc(hWindow : hWnd;
lParam : LongInt) : Bool
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var
lpBuffer : PChar;
WindowCaptionFound : bool;
ClassNameFound : bool;

begin
GetMem(lpBuffer, 255);
Result := True;
WindowCaptionFound := False;
ClassNameFound := False;

try
if GetWindowText(hWindow, lpBuffer, 255) > 0 then
if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer)) > 0
then WindowCaptionFound := true;

if PFindWindowStruct(lParam).ClassName = ‚‘ then
ClassNameFound := True else
if GetClassName(hWindow, lpBuffer, 255) > 0 then
if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer))
> 0 then ClassNameFound := True;

if (WindowCaptionFound and ClassNameFound) then begin
PFindWindowStruct(lParam).WindowHandle := hWindow;
Result := False;
end;

finally
FreeMem(lpBuffer, sizeof(lpBuffer^));
end;
end;

function FindAWindow(Caption : string;
ClassName : string) : THandle;
var
WindowInfo : TFindWindowStruct;

begin
with WindowInfo do begin
Caption := Caption;
ClassName := ClassName;
WindowHandle := 0;
EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
FindAWindow := WindowHandle;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
TheWindowHandle : THandle;
begin
TheWindowHandle := FindAWindow('Netscape - ', ‚‘);
if TheWindowHandle = 0 then
ShowMessage(‚Window Not Found!‘) else
BringWindowToTop(TheWindowHandle);
end;

Wow, Danke. Echt klasse.

Gruss Bernd

Hallo!
Also das funktioniert richtig gut.
Ist das Fenster da, hole ich es in den Vordergrund, ansonsten erzeuge ich einen
neuen Process.
Am Beispiel des Browsers, kann ich durch
den neuen Process auch den HTML-Dateinamen
uebergeben. Das wird dann auch angezeigt.
Aber wenn das Fenster nur in den Vordergrund
geholt wird, muesste ich doch jetzt via
SendMessage dort etwas ausfuehren (z.B.
Refresh).
Die Message ist aber UnsignedInteger.
Wie kommt man an die „Befehle“/Messages?