VisualBasic DirectCast-Operator

Scindapsus

Cadet 3rd Year
Registriert
März 2011
Beiträge
58
Hallo,

ich muss einen sehr umfangreichen Programmcode (Visual Basic 6) in der Version Visual Basic 2010 überarbeiten.

Nun bekomme ich die Meldung:
HTML:
error BC42349: Die Umwandlung eines Werttyps in denselben Typ mithilfe eines DirectCast-Operators ist veraltet.

Was muss ich ändern?
 
HTML:
Private Shared Sub PrevInstance()
        Dim P As Process
        P = Diagnostics.Process.GetCurrentProcess
        Dim Processes As Process()
        Processes = Diagnostics.Process.GetProcessesByName(P.ProcessName)
        If UBound(Processes) > 0 Then
            Dim Hndl As System.IntPtr
            For i As Integer = 0 To UBound(Processes)
                Hndl = DirectCast(Processes(i).MainWindowHandle, System.IntPtr)
                If Hndl <> DirectCast(P.MainWindowHandle, System.IntPtr) Then
                    'es ist der alte Prozess
                    NativeMethods.NativeOpenIcon(Hndl) 'Restore the program.
                    NativeMethods.NativeSetForegroundWindow(Hndl) 'Activate the application.
                    End
                End If
            Next
        End If
 End Sub
Zeilen 9 und 10 verursachen die Fehler
 
Für wast verwendest du DirectCast?

Processes(i).MainWindowHandle gibt doch schon ein IntPtr-Wert zurück.

Code:
Private Shared Sub PrevInstance()
        Dim P As Process
        P = Diagnostics.Process.GetCurrentProcess
        Dim Processes As Process()
        Processes = Diagnostics.Process.GetProcessesByName(P.ProcessName)
        If UBound(Processes) > 0 Then
            Dim Hndl As System.IntPtr
            For i As Integer = 0 To UBound(Processes)
                Hndl = Processes(i).MainWindowHandle
                If Hndl <> P.MainWindowHandle Then
                    'es ist der alte Prozess
                    NativeMethods.NativeOpenIcon(Hndl) 'Restore the program.
                    NativeMethods.NativeSetForegroundWindow(Hndl) 'Activate the application.
                    End
                End If
            Next
        End If
    End Sub
End Class
 
@Simcrack:

Der Quellcode wurde urspünglich von einer anderen Person vor einigen Jahren verfasst.
Meine Aufgabe ist es nun, dass Programm im Visual Basic 2010 zum Laufen zu bekommen und dann später auf einem Server laufen zu lassen.

Danke für den Hinweis (Processes(i).MainWindowHandle gibt doch schon ein IntPtr-Wert zurück.)!
HTML:
Hndl = Processes(i).MainWindowHandle
If Hndl <> P.MainWindowHandle Then
Beide Zeilen sorgen nun dafür, dass ich zwei Fehler weniger zu beheben habe.
 
Zurück
Oben