Imports System.ComponentModel
Imports System.Runtime.InteropServices
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Windows.NativeMethods

Public Class File
    Private _LogConfig As LogConfig
    Private _Logger As Logger

    Public Sub New(LogConfig As LogConfig)
        _LogConfig = LogConfig
        _Logger = LogConfig.GetLogger()
    End Sub

    Public Function OpenFileProperties(FilePath As String) As Boolean
        Try
            Dim oShellExecuteInfo As New ShellExecuteInfo()
            oShellExecuteInfo.cbSize = Marshal.SizeOf(oShellExecuteInfo)
            oShellExecuteInfo.lpVerb = "properties"
            oShellExecuteInfo.lpFile = FilePath
            oShellExecuteInfo.nShow = SW_SHOW
            oShellExecuteInfo.fMask = SEE_MASK_INVOKEIDLIST

            If Not ShellExecuteEx(oShellExecuteInfo) Then
                Dim oWin32Error = Marshal.GetLastWin32Error()
                Dim oException As New Win32Exception(oWin32Error)
                Throw oException
            End If

            Return True
        Catch ex As Exception
            _Logger.Error(ex)
            Return False
        End Try
    End Function
End Class
