Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Anzahl der Terminal Server Sessions auslesen (https://www.delphipraxis.net/116283-anzahl-der-terminal-server-sessions-auslesen.html)

sh030169 26. Jun 2008 10:12


Anzahl der Terminal Server Sessions auslesen
 
Hallo zusammen,

ich würde gerne die Anzahl der laufenden Sessions von einem MS Terminal Server auslesen.
Optimal wäre, wenn dies remote ginge, lokal macht aber auch nichts.
Hat jemand eine Idee wie das gehen könnte?

Gruß,
Alexander

Leonard 26. Jun 2008 10:34

Re: Anzahl der Terminal Server Sessions auslesen
 
Hi,

ich denke WTSEnumerateSessions könnte dir weiterhelfen.

Edit:
Über Delphi kannst du mit Hilfe der JEDI API Library darauf zugreifen. Die Funktion selber findest du in der Datei JwaWtsApi32.pas.

mfg Leonard

sh030169 26. Jun 2008 11:12

Re: Anzahl der Terminal Server Sessions auslesen
 
bin leider Anfänger :-( wie binde ich dies ein?

Leonard 26. Jun 2008 11:35

Re: Anzahl der Terminal Server Sessions auslesen
 
Zitat:

Zitat von sh030169
bin leider Anfänger :-( wie binde ich dies ein?

Keine Panik, angefangen haben alle einmal...

Die JEDI API Library hast du dir ja sicher schon geladen und entpackt. Such am besten mal nach der Datei JwaWTSApi32.pas um zu prüfen, ob du auch das richtige hast. Dann sorg dafür, dass Delphi die Dateien finden kann (Tools -> Umgebungsoptionen -> Bibliothek -> Suchpfad).
Nun musst du die Datei in deine uses Klausel aufnehmen.

Delphi-Quellcode:
uses
...
JwaWTSApi32;
Wenn das alles geht, dann kannst du mit der Funktion WTSEnumerateSessions die Sessioninformationen abfragen. Hier überlasses ich es dir noch ein bissel zu basteln ;-)
Falls es nicht funktioniert, dann schreib mal was du versucht hast und wir sehen weiter...

mfg Leonard

sh030169 26. Jun 2008 11:38

Re: Anzahl der Terminal Server Sessions auslesen
 
super hab ich soweit alles gemacht, jedoch sagt er dann beim kompilieren:
JwaWindows.dcu nicht gefunden

Leonard 26. Jun 2008 11:41

Re: Anzahl der Terminal Server Sessions auslesen
 
Zitat:

Zitat von sh030169
super hab ich soweit alles gemacht, jedoch sagt er dann beim kompilieren:
JwaWindows.dcu nicht gefunden

Diese Datei sollte sich aber im gleichen Verzeichnis befinden.

sh030169 26. Jun 2008 11:44

Re: Anzahl der Terminal Server Sessions auslesen
 
Da befinden sich nur:
*.inc
*.pas
*.html

Leonard 26. Jun 2008 12:34

Re: Anzahl der Terminal Server Sessions auslesen
 
Zitat:

Zitat von sh030169
Da befinden sich nur:
*.inc
*.pas
*.html

Da war ich bei der letzten Antwort auch ein bissel schnell und habe das dcu überlesen.
Trag das Verzeichnis in dem die Dateien liegen mal noch unter Tools -> Umgebungsoptionen -> Bibliothek -> Bibliothekspfad ein. Dann sollte es aber gehen.

mfg Leonard

sh030169 26. Jun 2008 12:37

Re: Anzahl der Terminal Server Sessions auslesen
 
hab ich, delphi findet auch dann die pas will aber beim kompilieren die dcu!

Leonard 26. Jun 2008 12:49

Re: Anzahl der Terminal Server Sessions auslesen
 
Das sollte so nicht sein...

Versuch mal Projekt erzeugen, ob das hilft. Sonst könnte ich noch das hier empfehlen: http://www.delphipraxis.net/internal...nicht+gefunden

Remko 26. Jun 2008 19:07

Re: Anzahl der Terminal Server Sessions auslesen
 
You have to choose between using JwaWindows (which is really a single unit containing all other Jwa units) or using JwaWtsApi32. I recommend using JwaWindows in your case.
Note that the Jedi security library (Jwscl) contains a Terminal Server unit that wraps all Terminal Server API's. This makes your question really simple:

Delphi-Quellcode:
uses JwsclTerminalServer;
...

var
   TS: TJwTerminalServer;
   TS := TJwTerminalServer.Create;
   // You should check for errors and/or exceptions (see [url=http://jwscldoc.delphi-jedi.net/JwsclTerminalServer.TJwTerminalServer.html]documentation[/url]) but left out here to shorten code
   TS.EnumerateSessions;
   ShowMessageFmt('%d Terminal Sessions', TS.Sessions.Count);
   TS.Free;
The Connectstate property can be used to filter specific sessions (eg only active ones), from the docs:
ConnectState returns the connection state of the session. Which can be one of the following values:

Session State Description
WTSActive The session is connected, and a user is logged on to the server.
WTSConnected The session is connected, but there is no user logged on to the server.
WTSConnectQuery The session is in the process of connecting. If this state continues, it indicates a problem with the connection.
WTSShadow The session is in the process of remotely controlling another session.
WTSDisconnected The user is disconnected from the session, but the session is still attached to the server and can be reconnected at any time.
WTSIdle The session is initialized and ready to accept a connection. To optimize the performance of a server, two default (idle) sessions are initialized before any client connections are made.
WTSReset The session failed to initialize correctly or could not be terminated, and is not available. If this state continues, it indicates a problem with the connection of the session.
WTSInit The session is in the process of initializing.

Dezipaitor 26. Jun 2008 21:47

Re: Anzahl der Terminal Server Sessions auslesen
 
JwaWindows erfordert etwas Vorarbeit. Damit JwaWindows.dcu erstellt wird solltest du diesem Tutorial folgen.
Die JWSCL erdordert dann nur noch den Quelltextpfad anzugeben : http://blog.delphi-jedi.net/2008/03/...o-setup-jwscl/

JwaWTSAPI32 einzubinden erfordert aber nicht JwaWindows. Denn JwaWindows bindet automatisch alle JwaXXX Units ein. Man sollte jedoch JwaWindows.dcu erstellen, da das Erstellen von JwaWindows.pas einige Zeit braucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz