@Der_Unwissende:
Hi lange nix voneinander gehört
mich interessieren hierbei nur die Comports, die die Windows
API auch wirklich öffnen kann.
D.h. es kann ja noch eine virtuelle Comport Leiche in der Registry stehen z.B.: Com10,
diese aber gar nicht mehr im System ist (USB auf RS232 ist ausgesteckt), dann wäre es nicht sinvoll diese anzuzeigen.
Bzw. wenn ein Programm die Schnittstelle belegt, dann brauch diese auch nicht in meiner Liste.
Ich habe es jetzt so gelöst:
Ich filtere die Liste und gucke ob die
API darauf zugreifen kann, wenn nicht, dann entferne ich den Por aus der Liste.
Delphi-Quellcode:
for I := 0 to _PList.Count - 1 do // Stringlist mit zB.['COM1','COM3',...]
begin
hPort := CreateFile( PChar( _PList.Strings[i] ),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
0,
0 );
if ( hPort = INVALID_HANDLE_VALUE ) then
_PList.Delete(i);
CloseHandle( hPort );
end;
Ich denke so kann man es machen, oder?
Gruß
DelphiManiac