|
Option Explicit
Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long lpIDList As Long 'Optional parameter lpClass As String 'Optional parameter hkeyClass As Long 'Optional parameter dwHotKey As Long 'Optional parameter hIcon As Long 'Optional parameter hProcess As Long 'Optional parameter End Type Public Const SEE_MASK_INVOKEIDLIST = &HC Public Const SEE_MASK_NOCLOSEPROCESS = &H40 Public Const SEE_MASK_FLAG_NO_UI = &H400 Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" _ (SEI As SHELLEXECUTEINFO) As Long Public Function ShowProperties(filename As String, OwnerhWnd As Long) As Long 'open a file properties property page for specified file if return value '<=32 an error occurred 'From: Delphi code provided by "Ian Land" (iml@dircon.co.uk) Dim SEI As SHELLEXECUTEINFO Dim r As Long 'Fill in the SHELLEXECUTEINFO structure With SEI .cbSize = Len(SEI) .fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI .hwnd = OwnerhWnd .lpVerb = "properties" .lpFile = filename .lpParameters = vbNullChar .lpDirectory = vbNullChar .nShow = 0 .hInstApp = 0 .lpIDList = 0 End With 'call the API r = ShellExecuteEX(SEI) 'return the instance handle as a sign of success ShowProperties = SEI.hInstApp End Function Add the following routines to Form1. Private Sub cmdProperties_Click() Dim r As Long Dim fname As String 'get the filename and path from Text1 fname = (Text1) 'show the properties dialog, passing the filename 'and the owner of the dialog r = ShowProperties(fname, Me.hwnd) 'Display an error message if things didn't go as planned If r <= 32 Then MsgBox "Error" End Sub |