AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetCurrentUrl in einem Service

Ein Thema von Thanatos81 · begonnen am 18. Feb 2009 · letzter Beitrag vom 19. Feb 2009
 
Thanatos81
(Gast)

n/a Beiträge
 
#1

GetCurrentUrl in einem Service

  Alt 18. Feb 2009, 09:32
Moin zusammen!

Ich versuche gerade die GetCurrentUrl-Prozedur aus diesem Beitrag in einem Service zu packen.

Hintergrund ist, dass ich überwachen möchte wann welche Internetseite aufgerufen wird. Idealerweise möchte ich URL und Title loggen, URL alleine würde aber auch gehen.

Das Problem ist ja, dass ich aus dem Service heraus auf den Desktop des Users (WinSta0\default) zugreifen muss. Der Desktop reicht, weil an dem entsprechenden Rechner nur ein Benutzer angemeldet ist, die schnelle Benutzerumschaltung aus und auch ein Autologon.

Nun, das Öffnen der WindowStation, des Desktops und ein EnumDesktopWindows funktionieren einwandfrei. Nur das GetCurrentUrl nicht. Habe auch schon versucht vorher SetProcessWindowStation und SetThreadDesktop aufzurufen, das hilft aber leider nichts.

Kann ich GetCurrentUrl in einem Service komplett vergessen, weil es DDE nutzt? Gibt es sonst eine Möglichkeit, z.B. per Handle des Browser, die aktuelle URL auszulesen?

Delphi-Quellcode:
wsHandle := OpenWindowStation('WinSta0', true, WINSTA_ACCESSCLIPBOARD or
  WINSTA_ENUMDESKTOPS or
  WINSTA_ENUMERATE or
  WINSTA_READATTRIBUTES or
  WINSTA_READSCREEN);

if wsHandle <> 0 then
begin
  dHandle := OpenDesktop('Default', 1, false,
    DESKTOP_ENUMERATE or
    DESKTOP_HOOKCONTROL or
    DESKTOP_READOBJECTS or
    DESKTOP_SWITCHDESKTOP);
  if dHandle <> 0 then
  begin
    sl := TStringList.Create;
    try
      sl.Duplicates := dupIgnore;
      EnumDesktopWindows(dHandle, @EnumWindowCallback, Integer(sl));
      sl.SaveToFile('c:\liste.txt');

      if SetProcessWindowStation(wsHandle) <> 0 then
        if SetThreadDesktop(dHandle) <> 0 then
          GetCurrentUrl(url, title); //< - -Hier steigt der Service aus
      

      if (trim(url) <> '') or (trim(title) <> '') then
      begin
        sl.Clear;
        sl.Add(url + ': ' + title);
        sl.SaveToFile('c:\urls.txt');
      end;
      sleep(5000);
    finally
      FreeAndNil(sl);
    end;
  end;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz