Objekty

NameSpace

Function NameSpace(vDir) As Folder

Tato funkce vrací objekt Složka ze zadané cesty. Je to, pokud vím, jediná cesta, jak vytvořit objekt Složka pro adresář. Například:

Set myfolder = ShellControl.NameSpace("C:")

Folder Object

Toto je objekt, který Explorer používá při práci s adresáři. Jedna z nejvíce použitelných funkcí je ParseName:

Function ParseName(bName As String) As FolderItem

Vrací objekt FolderItem, který odkazuje přímo na položku složky. Například:

Set myfolder = ShellControl.NameSpace("C:")
Set startfile = myfolder.ParseName("autoexec.bat")

Lze také zjistit seznam všech podadresářů a souborů pomocí kolekce Items. Například:

Dim myShell As New shell
Dim Fold As Folder
Dim FoldItem As FolderItem

Set Fold = myShell.NameSpace("C:")
For Each FoldItem In Fold.Items
   List1.AddItem FoldItem.Name
Next

FolderItem Object

Pomocí tohoto objektu lze použít funkce IsFolder a GetFolder. Například:

Dim myshell As New Shell
Dim fold As Folder

Set fold=myshell.NameSpace("C:")
If fold.ParseName("windows").IsFolder Then _
MsgBox ("C:\windows je adresář")

Také lze použít funkce IsLink a GetLink, které vrací objekt ShellLink, udávající, zda je položka odkazem. Lze použít funkce ModifyDate, Size, Name a Path pro zjištění více informací o položce. Jsou zde také verbální funkce - Open, Delete, Rename a Properties. Například:

Sub InvokeVerb([vVerb])

vVerb může být buď řetězec, který voláte v nabídce (např. "&Open"), nebo index polžky nabídky.

Zkusme nějaké příklady:

Dim myshell As New Shell
myshell.NameSpace("C:").ParseName("autoexec.bat").InvokeVerb("P&roperties")

Otevře dialog vlastností pro soubor "C:\AutoExec.Bat"

myshell.NameSpace("C:").ParseName("windows").InvokeVerb("&Open")
Otevře složku "C:\Windows"

Debug.Print myshell.NameSpace("C:").ParseName("autoexec.bat").ModifiedDate
Vrací datum, kdy byl soubor "C:\AutoExec.Bat" naposledy modifikován

Pro zjištění všech možných verbálních funkcí použijte následující kód:

Dim myShell As New shell
Dim Fold As Folder
Dim FoldItem As FolderItem
Dim myVerb As FolderItemVerb

Set Fold = myShell.NameSpace("C:")
Set FoldItem = Fold.ParseName("autoexec.bat")
For Each myVerb In FoldItem.Verbs
   List1.AddItem myVerb.Name
Next

ShellLink Object

Tento objekt Vám umožňuje zjišťovat a modifikovat  existující odkazy (*.lnk a *.pif). Odkaz na objekt ShellLinkObject je vracen pomocí funkce GetLink objektu FolderItem. Lze změnit vlastnost Path (co se má spustit), WorkingDirectory, Arguments a Description. Lze také přistupovat k vlastnosti ShowCommand. Je 1 pro normální okno, 3 pro maximalizované a 7  pro minimalizované okno.

Vlastnost Hotkey je daleko více komplikovaná. Nejnižších 8 bitů jsou ASCII kódy znaku (např A=65). 9 bit je indikátor klávesy Shift. 10 bit je Ctrl, a 11 bit je Alt. Takže, pro vytvoření nové HotKey:

newhotkey=IIf(bAlt = True, 1024, 0) + _
IIf(bCtrl = True, 512, 0) + IIf(bShift = True, _
256, 0) + Asc(keychar)

Zjištění znaku z HotKey:
keychar=Chr$(hotkey And 255)

Zjištění Shift, Ctrl a Alt:
bShift=(hotkey And 256)=256
bCtrl=(hotkey And 512)=512
bAlt=(hotkey And 1024)=1024

GetIconLocation vrací index ikony ze souboru. Index začíná na 0. SetIconLocation umožňuje nastavit lokaci souboru, ze kterého se má brát ikona a její index v souboru:

Dim mylink As New ShellLinkObject
mylink.SetIconLocation "c:windowssystempifmgr.dll",10

Toto zobrazí 11 ikonu v pifmgr.dll

Nezapomeňte, že po provedení všech těchto změn je nutné link uložit pomocí metody Save.

A jedna věc na závěr. Tyto funkce nepracují pro IE5.

Zpět

Autor: The Bozena