function checkrouter():
string;
var
rhost,ehost, eport, protocol, iport, iclent, enable, pdes, leasd: olevariant;
UPnPDeviceFinder : IUPnPDeviceFinder;
UPnpDevices : IUPnpDevices;
EnumVariant, EnumVariant2 : IEnumVariant;
rgvar, rgvar2 : OleVariant;
celtFetched, celtFetched2 : Cardinal;
UPnpDevice : IUPnpDevice;
Counter, Counter2 : Integer;
Erg : HResult;
UPnpService : IUPnpService;
begin
message('
Einen Moment bitte. Suche nach Router im Netzwerk läuft...');
Counter := 0;
UPnPDeviceFinder := CoUPnPDeviceFinder.Create;
UPnpDevices := UPnPDeviceFinder.FindByType('
urn:schemas-upnp-org:service:WANIPConnection:1', 0);
message(IntToStr(UPnpDevices.Count) + '
UPnP Geräte gefunden!');
try
EnumVariant := IEnumVariant(UPnpDevices._NewEnum);
while (EnumVariant.Next(1, rgvar, celtFetched) = S_OK)
do
begin
UPnpDevice := IUPnpDevice(IUnknown(rgvar));
Inc(Counter);
irc('
Device ' + IntToStr(Counter)+ '
: ' + UPnpDevice.FriendlyName + '
: ' + UPnpDevice.PresentationURL);
irc(UPnpDevice.UniqueDeviceName);
// UPnpDevice.Services.Item[].
EnumVariant2 := IEnumVariant(UPnpDevice.Services._NewEnum);
Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
Counter2 := 0;
GetPortlist(IUPnPService(IDispatch(rgvar)), form1.ListBox1);
// Hier möchte ich die Liste der Ports anzeigen
AddPortclick(IUPnPService(IDispatch(rgvar)));
// Hier möchte ich den Port 1000 freigaben;
// message('Listing und Portfreigabe erfolgreich');
while (Erg = S_OK)
do
begin
message('
erg ist noch S_OK');
UPnpService := IUPnPService(IDispatch(rgvar2));
inc(counter2);
message('
Service: ' + IntToStr(Counter2));
message('
ServiceID: ' + UPnpService.Id);
Erg := EnumVariant2.Next(1, rgvar2, celtFetched2);
end;
end;
except
message('
Fehler');
end;
end;