WIP
This commit is contained in:
61
app/DD_Clipboard_Searcher/ClassWindowsAPI.vb
Normal file
61
app/DD_Clipboard_Searcher/ClassWindowsAPI.vb
Normal file
@@ -0,0 +1,61 @@
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Public Class ClassWindowsAPI
|
||||
Private Const SEE_MASK_INVOKEIDLIST = &HC
|
||||
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
|
||||
Private Const SEE_MASK_FLAG_NO_UI = &H400
|
||||
Private Const SW_SHOW As Short = 5
|
||||
|
||||
Private _LogConfig As LogConfig
|
||||
Private _Logger As Logger
|
||||
|
||||
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)>
|
||||
Public Shared Function ShellExecuteEx(ByRef lpExecInfo As ShellExecuteInfo) As Boolean
|
||||
End Function
|
||||
|
||||
Public Structure ShellExecuteInfo
|
||||
Public cbSize As Integer
|
||||
Public fMask As Integer
|
||||
Public hwnd As IntPtr
|
||||
<MarshalAs(UnmanagedType.LPTStr)> Public lpVerb As String
|
||||
<MarshalAs(UnmanagedType.LPTStr)> Public lpFile As String
|
||||
<MarshalAs(UnmanagedType.LPTStr)> Public lpParameters As String
|
||||
<MarshalAs(UnmanagedType.LPTStr)> Public lpDirectory As String
|
||||
Dim nShow As Integer
|
||||
Dim hInstApp As IntPtr
|
||||
Dim lpIDList As IntPtr
|
||||
<MarshalAs(UnmanagedType.LPTStr)> Public lpClass As String
|
||||
Public hkeyClass As IntPtr
|
||||
Public dwHotKey As Integer
|
||||
Public hIcon As IntPtr
|
||||
Public hProcess As IntPtr
|
||||
End Structure
|
||||
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
_LogConfig = LogConfig
|
||||
_Logger = LogConfig.GetLogger()
|
||||
End Sub
|
||||
|
||||
Public Sub ShowFileProperties(FilePath As String)
|
||||
If FilePath = String.Empty OrElse Not IO.File.Exists(FilePath) Then
|
||||
Logger.Warn("Could not show file properties. FilePath '{0}' is invalid or does not exist.", FilePath)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim oInfo As New ShellExecuteInfo With {
|
||||
.cbSize = Marshal.SizeOf(oInfo),
|
||||
.lpVerb = "properties",
|
||||
.lpFile = FilePath,
|
||||
.nShow = SW_SHOW,
|
||||
.fMask = SEE_MASK_INVOKEIDLIST
|
||||
}
|
||||
|
||||
If Not ShellExecuteEx(oInfo) Then
|
||||
Dim ex As New ComponentModel.Win32Exception(Marshal.GetLastWin32Error())
|
||||
Logger.Warn("Could not show file properties. Reason: {0}", ex.Message)
|
||||
Logger.Error(ex)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user