- Код: Выделить всё
Public Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (ByRef SEI As SHELLEXECUTEINFO) As Integer
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Public Structure SHELLEXECUTEINFO
Dim cbSize As Integer
Dim fMask As Integer
Dim hwnd As Integer
Dim lpVerb As String
Dim lpFile As String
Dim lpParameters As String
Dim lpDirectory As String
Dim nShow As Integer
Dim hInstApp As Integer
Dim lpIDList As Integer
Dim lpClass As String
Dim hkeyClass As Integer
Dim dwHotKey As Integer
Dim hIcon As Integer
Dim hProcess As Integer
End Structure
Public Sub ShowProps(ByRef FileName As String, ByRef OwnerhWnd As Integer)
Dim SEI As SHELLEXECUTEINFO = Nothing
Dim r As Integer
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
r = ShellExecuteEX(SEI)
End Sub
'Вызов свойств файла
Dim MyPath As String = "C:\MyFile.txt"
Call ShowProps(MyPath, Me.Handle.ToInt32)
'работает, если в "дополнительных параметрах компилятора" установлен "конечный ЦП": x86
Но это только только для одного файла, а если выбрана группа файлов, то проводник отображает их совместные свойства (размер и т.п.) и Total Commander тоже. В Total Commander похоже прикрутили к items контекстное меню проводника, читал, что это можно как-то сделать в DELPHI, но вот как в VB.NET? Какую функцию API можно использовать?