------------ Дoбавленo:
pav, ну ты шутник ё-маё

andrestudio писал(а):
Усечённый вариант контекстного меню проводника для папокpav писал(а):
упрости код, что бы только выдавалось контекстое меню папок и файлов как в Winзнал бы прикуп, жил бы в сочи

для папок и файлов схема
Add(MainForm,2574047,133,133)
{
Width=424
Height=195
Position=1
}
Add(VBJScript,1375607,336,182)
{
WorkPoints=#13:doCreatePopup|8:doComand|
EventPoints=#8:onCreate|5:onAdd|7:onClear|
Script=#12:dim Str_menu|8:dim Temp|10:dim Folder|12:dim FileName|0:|28:Function doWork (Data,Index)|0:|17:Select Case Index|0:|24: Case "doCreatePopup"|4: |40: sys.onClear nil 'очистим список меню|4: |56: Set FSO = CreateObject("Scripting.FileSystemObject")|15: Temp = Data|4: |32: If FSO.FileExists(Temp) Then|36: FileName = FSO.GetFileName(Temp)|42: Folder = FSO.GetParentFolderName(Temp)|8: |52: Set objShell = CreateObject("Shell.Application")|47: Set objFolder = objShell.NameSpace(Folder) |59: Set objFolderItem = objFolder.ParseName(FileName) |38: Set colVerbs = objFolderItem.Verbs|4: |34: For i = 0 to colVerbs.Count -1|35: Str_menu = colVerbs.Item(i)|31: if Str_menu = nil then |22: Str_menu = "-"|14: end if|26: sys.onAdd Str_menu|8: Next|4: |4: |8: Else|0:|52: Set objShell = CreateObject("Shell.Application")|45: Set objFolder = objShell.NameSpace(Data) |44: Set objFolderItem = objFolder.Self |38: Set colVerbs = objFolderItem.Verbs|4: |34: For i = 0 to colVerbs.Count -1|35: Str_menu = colVerbs.Item(i)|31: if Str_menu = nil then |22: Str_menu = "-"|14: end if|26: sys.onAdd Str_menu|12: Next |4: |10: End if|0:|56: sys.onCreate nil 'разворачиваем контекстное меню |4: |4: |4: |67: Case "doComand" ' Процедура выполнит команду контекстного меню|4: |56: Set FSO = CreateObject("Scripting.FileSystemObject")|32: If FSO.FileExists(Temp) Then|4: |56: Set objShellApp = CreateObject ("Shell.Application")|50: Set objFolder = objShellApp.NameSpace(Folder) |53: Set objFolderItem = objFolder.ParseName(FileName)|37: Set objFIVs = objFolderItem.Verbs|32: For i=0 To objFIVs.Count - 1|36: Set objFIV = objFIVs.Item(i)|34: If objFIV.Name = Data Then|23: objFIV.DoIt|20: Exit For|14: End If|8: Next|4: |8: Else|4: |56: Set objShellApp = CreateObject ("Shell.Application")|56: Set objFolderItem = objShellApp.NameSpace(Temp).Self|39: Set objFIVs = objFolderItem.Verbs()|32: For i=0 To objFIVs.Count - 1|36: Set objFIV = objFIVs.Item(i)|34: If objFIV.Name = Data Then|23: objFIV.DoIt|20: Exit For|14: End If|12: Next |8: |10: End if|0:|10:End Select|2: |13:End Function |
UseName=0
link(onCreate,932408:doPopupHere,[])
link(onAdd,932408:doAddItem,[])
link(onClear,932408:doClear,[])
}
Add(Button,10991999,189,182)
{
Left=10
Top=15
Caption="File"
link(onClick,9680449:doExecute,[])
}
Add(PopupMenu,932408,392,175)
{
TranspIcon=1
Point(onSelectStr)
link(onSelectStr,1375607:doComand,[(440,188)(440,227)(324,227)(324,195)])
}
Add(Browse,8293395,238,133)
{
link(onBrowse,5874997:doWork1,[(291,139)])
}
Add(ODialog,9680449,238,182)
{
link(onExecute,5874997:doWork2,[])
}
Add(Button,15676343,189,133)
{
Left=10
Top=50
Caption="Folder"
link(onClick,8293395:doBrowse,[])
}
Add(HubEx,5874997,287,175)
{
link(onEvent,1375607:doCreatePopup,[])
}
------------ Дoбавленo:
pav, все примеры на VB которые мне попадались работают с API SHELL32.dll, делал пример я с ActiveX в схемах, там контекстное меню полностью функционально.