;Autor: HeX0R Global NewList AvailableComs() Procedure GetAvailableComPorts() Protected hKey Protected lpcbName Protected lpName.s Protected a$ Protected lType, i If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", 0, #KEY_QUERY_VALUE, @hKey) = #ERROR_SUCCESS lpName = Space(255) Repeat lpcbName = 255 If RegEnumValue_(hKey, i, @lpName, @lpcbName, 0, 0, 0, 0) = #ERROR_SUCCESS a$ = Left(lpName, lpcbName) If a$ = "" Break EndIf lpcbName = 255 lType = 0 If RegQueryValueEx_(hKey, a$, 0, @lType, @lpName, @lpcbName) = #ERROR_SUCCESS a$ = Left(lpName, lpcbName - 1) If LCase(Left(a$, 3)) = "com" AddElement(AvailableComs()) AvailableComs() = Val(RemoveString(a$, "COM", 1)) EndIf EndIf i + 1 Else Break EndIf ForEver RegCloseKey_(hKey) EndIf EndProcedure If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) ListViewGadget(1,10,10,480,230,0) GetAvailableComPorts() ForEach AvailableComs() AddGadgetItem(1,-1,"COM"+Str(AvailableComs())) Next Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf