how to close the old Session

Question:

 want to close the old Session - if the same username starts a new Session

Any ideas how i can do this? - one user should not be able to start the Software unlimited in his company - every user should buy a licence .

Answer:

var
  ASessionList: TList;
  I : Integer;
  M : TUniMainModule;
  USession : TUniGUISession;
begin
  ASessionList := UniServerModule.SessionManager.Sessions.SessionList.LockList;
  try
    for I := 0 to ASessionList.Count -1 do
    begin
      USession := TUniGUISession(ASessionList[i]);
      M := USession.UniMainModule as TUniMainModule;
      if M.username = 'ThisUserName' then
      begin
        USession.TerminateAfterSecs(0);
        Break;
      end;
    end;
  finally
    UniServerModule.SessionManager.Sessions.SessionList.UnlockList;
  end;
end;

Question:
 If I want to send a message to another session of the same user before I kill it,how do I do?
Answer:
begin USession := TUniGUISession(ASessionList[i]);
  M := USession.UniMainModule as TUniMainModule;
  if M.username = 'ThisUserName' then
  begin
   M.LMessageStr := 'Your Session will Terminate after 10 Sec !!!';////// <---
   USession.TerminateAfterSecs(10); Break;
   end;
end;

// And in the MainForm. a Timer With this code:
procedure TMainFrm.UniTimer1Timer(Sender: TObject);
begin
 if UniMainModule.LMessageStr <> '' then
 begin
  ShowMessage(UniMainModule.LMessageStr);
  UniMainModule.LMessageStr := '';
 end;
end;
 
原文地址:https://www.cnblogs.com/wxb-km/p/4051456.html