mfemenel
Nov 5th, 2000, 12:35 PM
I'm trying to figure out how, from VB to get a folder's menu options. I'm trying to simulate a right click on the folder and be able to select one of the menu items that would show up there. I'm 90% sure I have to use API's but have no idea where to start. Help help help. Even a point to the right API calls would be useful.
Thanks
Berthil
Nov 6th, 2000, 07:39 AM
I assume you mean teh properties form of a folder? Just use this for any properties form you want to pop up. It;s from VB net, it also works with folders:
Using using this simple routine, the SHELLEXECUTEINFO type structure and the ShellExecuteEx() API, 32 bit Visual Basic applications can display the file property page for any passed file on Windows 95, 98 or NT4. As long as the path to the file is known, this routine can be invoked. It works for both registered and unregistered Windows file types, as well as bringing up the DOS property sheet for DOS applications or files (try pointing the app to autoexec.bat).
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
Form Code
To a project form add two command buttons (cmdProperties and cmdEnd) and a text box (Text1). Add the following to the form:
Option Explicit
Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
End Sub
Private Sub cmdEnd_Click()
Unload Me
End Sub
Public Sub ShowProperties(filename As String, OwnerhWnd As Long)
'open a file properties property page for
'specified file if return value
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 to display the property sheet
r = ShellExecuteEX(SEI)
End Sub
Private Sub cmdProperties_Click()
Dim fname As String
'get the path/filename from Text1
fname = (Text1)
'show the properties dialog, passing the filename
'and the owner of the dialog
Call ShowProperties(fname, Me.hwnd)
End Sub