Einzelnen Beitrag anzeigen

Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Beliebiges Objekt mit Befehlszeile übergeben?

  Alt 24. Jan 2008, 07:59
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;
  Mit Zitat antworten Zitat