Ich habs mal folgendermaßen gelöst (gut das programm schickt sich quasi selbst ne message - also einer bereits laufenden instanz):
Starten des 2. Programms,
das erste Programm wartet bis das 2. gestartet ist -> danach schickt es ne windows message mit daten dran an das 2. proggi. dabei kann man dann nen record mit übergeben was in den meisten fällen auch ausreicht.
Delphi-Quellcode:
// Meldung ausgeben, wenn Programm schon mal gestartet!
hMutex := CreateMutex(
nil,
// pointer to security attributes
True,
// flag for initial ownership
csAppName );
// pointer to mutex-object name
if ( GetLastError = ERROR_ALREADY_EXISTS )
then
begin
if s <> '
'
then
begin
wnd := FindWindow('
xxx', '
xxx');
if wnd <> 0
then
begin
// Daten vorbereiten
with ACopyDataStruct
do
begin
dwData := 0;
cbData := StrLen(PChar(s)) + 1;
lpData := PChar(s);
end;
// Und wech damit..
SendMessage(wnd, WM_COPYDATA, 0, Longint(@ACopyDataStruct));
end;
if ( hMutex <> 0 )
then
CloseHandle( hMutex );
end;
Exit;
end;