Seite 1 von 1

Re: Vorhandene COM-Schnittstellen ermitteln

Verfasst: 15.11.2009 22:48
von HeX0R
Ich könnte wetten, ich habe das hier schon mal irgendwo so ähnlich gepostet, aber ich finde nix mehr.

Egal:

Code: Alles auswählen

Global NewList AvailableComs()

Procedure GetAvailableComPorts()
	Protected hKey, lpcbName, lpName.s, a$, 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

;-------
GetAvailableComPorts()
ForEach AvailableComs()
	Debug "COM" + Str(AvailableComs())
Next

Re: Vorhandene COM-Schnittstellen ermitteln

Verfasst: 15.11.2009 23:14
von Kiffi
hier die WMI-Variante:

Code: Alles auswählen

; dieses Beispiel benötigt COMatePLUS von srod:
; http://www.purecoder.net/comate.htm

IncludePath #PB_Compiler_Home + "srod\COMatePLUS\" ; Pfad anpassen!
XIncludeFile "COMatePLUS.pbi" 

Define objWMIService.COMateObject
Define colItems.COMateEnumObject 
Define objItem.COMateObject
Define strComputer.s

strComputer = "." 

objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "") 
If objWMIService 
  colItems = objWMIService\CreateEnumeration("ExecQuery('Select * FROM Win32_SerialPort')") 
  If colItems
    objItem = colItems\GetNextObject() 
    While objItem
      
      Debug objItem\GetStringProperty("DeviceID")
      
      objItem\Release() 
      objItem = colItems\GetNextObject() 
    Wend 
    colItems\Release() 
  EndIf 
  objWMIService\Release()  
EndIf
Grüße ... Kiffi

Re: Vorhandene COM-Schnittstellen ermitteln

Verfasst: 16.11.2009 21:10
von Hein
@Crawler

Diese Methode habe ich schon probiert aber genau diese wollte ich eigentlich vermeiden.
Sie liefert mir nur die "freien" Ports.





@Kiffi

Danke, werde ich probieren.
Muß mir noch comateplus besorgen.
Geht doch mit der Demo oder ?



@Hexor

Ja die Reg abzufragen war auch einer meiner ersten Ideen und gefällt mir am besten aber geht leider in der Demo nicht.





@All

Erstmal danke für die Anregungen

Ich überlege mir eh ob ich mir Purebasic zulege.

Re: Vorhandene COM-Schnittstellen ermitteln

Verfasst: 16.11.2009 21:25
von Kiffi
Hein hat geschrieben:Muß mir noch comateplus besorgen.
Geht doch mit der Demo oder ?
nee, mit der Demo funktioniert das nicht.
Hein hat geschrieben:Ich überlege mir eh ob ich mir Purebasic zulege.
mach das! Bis dahin bitte in Deine Signatur eintragen,
dass Du nur die Demo hast.

Grüße ... Kiffi