Solved

Management.ManagementObjectSearcher is not defined in VB 2005

Posted on 2009-03-31
5
974 Views
Last Modified: 2013-11-26
Each time I reference the code below in VB 2005 I get an error saying that Management.ManagementObjectSearcher is not defined can anyone suggest anything. This code works in Vb 2003
'API Declarations

    Public Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

    Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

    Public Structure SECURITY_ATTRIBUTES

        Dim nLength As Long

        Dim lpSecurityDescriptor As Long

        Dim bInheritHandle As Long

    End Structure

    'API constants

    Public Const FILE_SHARE_READ = &H1

    Public Const FILE_SHARE_WRITE = &H2

    Public Const OPEN_EXISTING = 3

    Public Const FILE_ATTRIBUTE_NORMAL = &H80

    'Return TRUE if the COM exists, FALSE if the COM does not exist

    Public Function COMAvailable(ByVal COMNum As Integer) As Boolean

        Dim hCOM As Long

        Dim ret As Long

        Dim sec As SECURITY_ATTRIBUTES
 

        'try to open the COM port

        hCOM = CreateFile("COM" & COMNum & "", 0, FILE_SHARE_READ + FILE_SHARE_WRITE, sec, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)

        If hCOM = -1 Then

            COMAvailable = False

        Else

            COMAvailable = True

            'close the COM port

            ret = CloseHandle(hCOM)

        End If

    End Function

    Public Sub DiscoverIndicatorCOMPort()

        Dim result As MsgBoxResult

        Dim strMessage As String
 

        Try

            Dim myWMIClassSearcher As New Management.ManagementObjectSearcher("root\cimv2", "SELECT * FROM Win32_PnPEntity WHERE Name LIKE '%(COM%'") 'Get all Serial Ports

            Dim myPorts As Management.ManagementObjectCollection = myWMIClassSearcher.Get()

            'Cycle throug all COM ports on local PC

            For Each myPort As Management.ManagementObject In myPorts

                If myPort.GetPropertyValue("Name") = "Communications Port (COM1)" Then

                    Exit For

                End If
 

                IndicatorCOMPort = myPort.GetPropertyValue("Name")

                Dim myStrings()

                myStrings = Strings.Split(IndicatorCOMPort)

                IndicatorCOMPort = myStrings(3).Trim("("c, ")"c, Chr(34))

                IndicatorCOMPort = IndicatorCOMPort.Trim("C", "O", "M")

                ActiveCOM.Add(IndicatorCOMPort)

                'Exit For

            Next

            Me.IndicatorCOM.Text = "Indicator COM Port: " & IndicatorCOMPort

            Me.mnuSetupIndicatorCOM.Enabled = False

        Catch ex As Exception

            Me.IndicatorCOM.Text = "Status: " & "No Active COM Port Discovered"
 

            strMessage = "No COM Ports Discovered:" & vbCrLf & vbCrLf & "Select [ Yes ] rediscover COM Ports:" & vbCrLf & vbCrLf & "Select [ No ] To exit" & vbCrLf

            result = MsgBox(strMessage, MsgBoxStyle.Information + MsgBoxStyle.YesNo, "")

            If result = MsgBoxResult.Yes Then

                DiscoverIndicatorCOMPort()

            ElseIf result = MsgBoxResult.No Then

                Me.Close()

            End If

        End Try

    End Sub

Open in new window

0
Comment
Question by:cmdolcet
  • 3
5 Comments
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24037167
Have you added the references properly?
0
 

Author Comment

by:cmdolcet
ID: 24038141
What reference????
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24038180
Project menu -> Properties -> References tab. Check to make sure that a valid reference exists for the directoryservices and if not then add it using the add button.
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 24038741
For WMI, you would need a reference to the System.Management.dll, which is not added by default to the project.
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24040941
Brilliant!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now