anchor.diff:  uses
     Classes, SysUtils, ExtCtrls,
     {$IFDEF WINDOWS}
  -  Windows,
  +  Windows, JwaTlHelp32,
     {$ENDIF}
     ActnList, dialogs, forms, process, asyncprocess;
   
  
positive.code:    * Ensures that the in/out process pipes are not redirected, that it has a console, if it waits on exit.
     *)
    procedure ensureNoPipeIfWait(aProcess: TProcess);
  
    (**
     * Returns the length of the line ending in aFilename;
  
negative.code:   end;
  end;
  
  {$IFDEF WINDOWS}
  function WindowsAppIsRunning(const ExeName: string): integer;
  var
    ContinueLoop: BOOL;
    FSnapshotHandle: THandle;
    FProcessEntry32: TProcessEntry32;
  begin
    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
    Result := 0;
    while integer(ContinueLoop) <> 0 do
      begin
      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
        UpperCase(ExeName)) or (UpperCase(FProcessEntry32.szExeFile) =
        UpperCase(ExeName))) then
        begin
        Inc(Result);
        // SendMessage(Exit-Message) possible?
        end;
      ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
      end;
    CloseHandle(FSnapshotHandle);
  end;
  {$ENDIF}
  {$IFDEF LINUX}
  function LinuxAppIsRunning(const ExeName: string): integer;
  var
    t: TProcess;
    s: TStringList;
  begin
    Result := 0;
    t := tprocess.Create(nil);
    t.CommandLine := 'ps -C ' + ExeName;
    t.Options := [poUsePipes, poWaitonexit];
      try
      t.Execute;
      s := TStringList.Create;
        try
        s.LoadFromStream(t.Output);
        Result := Pos(ExeName, s.Text);
        finally
        s.Free;
        end;
      finally
      t.Free;
      end;
  end;
  {$ENDIF}
  function AppIsRunning(const ExeName: string):Boolean;
  begin
  {$IFDEF WINDOWS}
    Result:=(WindowsAppIsRunning(ExeName) > 0);
  {$ENDIF}
  {$IFDEF LINUX}
    Result:=(LinuxAppIsRunning(ExeName) > 0);
  {$ENDIF}
  end;
  
  
  initialization
    RegisterClasses([TMRUList, TMRUFileList]);
  