Thema: Delphi User einer WindowStation

Einzelnen Beitrag anzeigen

Thanatos81
(Gast)

n/a Beiträge
 
#1

User einer WindowStation

  Alt 14. Aug 2008, 08:13
Moin zusammen!

Wir haben hausintern ein Programm, welches alle Fenstertitel auflistet, mit einer vorher angelegten Liste vergleicht und bei Übereinstimmung die Laufzeit des Programms protokolliert. Diese Anwendung liegt bei fast jedem Mitarbeiter im Autostart und "läuft als Symbol in der TNA im Hintergrund".

Nun möchte ich als Fingerübung das Programm in einen Service umschreiben. Die ersten Schritte waren auch alle von Erfolg gekrönt. Ich iteriere durch alle WindowStations, öffnen den Standard-Desktop der WindowStation und enummeriere alle Fenstertitel. Nun kann es vorkommen, dass ein PC von mehreren Mitarbeitern genutzt wird. Deswegen soll nur aufgezeichnet werden, wenn die Anwendung von einem vorher definierten Benutzer ausgeführt wird.

Also würde ich gerne raus finden, welcher Benutzer in der jeweiligen WindowStation angemeldet ist. Mein bisheriger Code sieht folgendermaßen aus:
Delphi-Quellcode:
wsList := TWindowList.Create; //Liste aller WindowStations
wiList := TWindowList.Create; //Liste der Fenster einer WindowStation
try
  wsList.EnumWindowStations;
  for k := 0 to wsList.Count - 1 do
  begin
    wWnd := 0;
    dWnd := 0;
    wWnd := OpenWindowStation(wiList[k], FALSE, MAXIMUM_ALLOWED); //WindowStation öffnen
    if wWnd <> 0 then
      if SetProcessWindowStation(wWnd) then //Zur WindowStation verbinden
        dWnd := OpenDesktop('Default', 0, FALSE, MAXIMUM_ALLOWED); //Desktop öffnen
    if dWnd <> 0 then
      if SetThreadDesktop(dWnd) then //Zum Desktop verbinden
      begin
        wiList.EnumTopLevelWindows; //Fenster des Dekstops suchen
        for l := 0 to wiList.Count - 1 do
          if IsMainAppWindow(wiList.Handles[l]) then
            s := s + wiList[l] + ';';
      end;
  end;
  protIt(s);
finally
  FreeAndNil(wsList);
  FreeAndNil(wiList);
end;
Kennt jemand eine Möglichkeit anhand des Handles einer WindowStation oder eines Desktops den zugehörigen Benutzer zu finden?

Vielen Dank im Vorraus!
  Mit Zitat antworten Zitat