Habt ihr was gegen [
msdn]"InternetCrackUrl"[/
msdn] (WinInet-
Unit, wenn ich das noch richtig im Kopf habe). Damit habe ich Verknüpfungen in meinem
Startmenu Cleaner auf Gültigkeit überprüft. Man kann einen
URL komplett zerlegen und sich bspw. nur die Angabe des Servers zurückgeben lassen. Das Protokoll (http,
ftp, ...) kann ebenfalls ermittelt werden.
Mal ein Beispielauszug:
Delphi-Quellcode:
// Protokollschema und Host mit Hilfe von "InternetCrackUrl"
// ermitteln
ZeroMemory(@
url,sizeof(
url));
url.dwStructSize := sizeof(
url);
url.lpszHostName := buf;
url.dwHostNameLength := sizeof(buf);
url.lpszScheme := scheme;
url.dwSchemeLength := sizeof(scheme);
if(InternetCrackUrl(pchar(lnk),
length(lnk),0,
url))
then
begin
{ ... }
end;
"buf" wäre der Name des Servers (etwa "delphipraxis.net"), "scheme" würde das Protokoll (http) enthalten. Auf die Weise habe ich bspw. geprüft, ob das benutzte Protokoll auf dem Rechner bekannt ist (sprich: ob es einen passenden Registryeintrag gibt), und dann habe ich mir die
IP des Servers geholt und wusste, ob der
URL gültig ist.