![]() |
GetCurrentUrl in einem Service
Moin zusammen!
Ich versuche gerade die GetCurrentUrl-Prozedur aus ![]() 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; |
Re: GetCurrentUrl in einem Service
Meine Glasskugel sagt mir:
Delphi-Quellcode:
schlägt vllt. fehl.
SetThreadDesktop(dHandle);
|
Re: GetCurrentUrl in einem Service
Komisch, das sagte meine Glaskugel auch schon. Selber Hersteller? :P
Deswegen habe ich zwischenzeitlich eine Überprüfung des Rückgabewertes auf ungleich 0 eingebaut. Hab das nur nich neu reingeschrieben, um nicht unnötig zu pushen. Aber ich werd mal gleich den ersten Beitrag dementsprechend editieren. |
Re: GetCurrentUrl in einem Service
Wo kommt die Funktion überhaupt her?
|
Re: GetCurrentUrl in einem Service
Zitat:
|
Re: GetCurrentUrl in einem Service
Nein:
GetCurrentUrl |
Re: GetCurrentUrl in einem Service
Zitat:
|
Re: GetCurrentUrl in einem Service
Verwendest du Vista/Windows 2008
|
Re: GetCurrentUrl in einem Service
Nein, Windows XP und 2000. Vista/Windows 7 sind nicht von Interesse und Server-Systeme eh nicht. Da sitzt niemand dran und surft ;-)
|
Re: GetCurrentUrl in einem Service
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 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