Objekty skriptovatelného prostředí
Prostředí Windows Poskytuje výkonnou sadu automatizačních objektů, které umožňují programovat prostředí pomocí jazyka Microsoft Visual Basic a skriptovací jazyky, jako je Microsoft JScript (kompatibilní se specifikací jazyka ECMA 262) a Microsoft Visual Basic Scripting Edition (VBScript). Tyto objekty můžete použít pro přístup k mnoha funkcím a dialogovým oknem prostředí. Můžete například přistupovat k systému souborů, spouštět programy a měnit nastavení systému.
Tato část představuje skriptovatelné objekty prostředí.
- verze prostředí
- vytváření instancí objektů prostředí
- objektu prostředí
- objektů složek
Verze prostředí
V verze 4.71 prostředí se stala dostupná řada objektů Shellu. Ostatní jsou k dispozici ve verzi 5.00 a novější. Verze 5.00 byla dostupná v systému Windows 2000. Následující tabulka uvádí jednotlivé objekty shellu ve verzi prostředí, ve které byl objekt k dispozici.
Verze 4.71 | Verze 5.00 |
---|---|
složky | DIDiskQuotaUser |
FolderItemVerb | DiskQuotaControl |
folderItemVerbs | složka2 |
prostředí | FolderItem |
ShellFolderView | FolderItems |
ShellUIHelper | FolderItems2 |
prostředí ShellWindows | IShellDispatch2 |
WebViewFolderContents | IShellLinkDual2 |
ShellFolderItem | |
ShellFolderViewOC | |
ShellLinkObject |
Vytváření instancí objektů prostředí
Pokud chcete vytvořit instanci objektů Prostředí v aplikacích jazyka Visual Basic s ranou vazbou, přidejte do projektu odkazy na následující knihovny:
- Microsoft Internet Controls (SHDocVw)
- Ovládací prvky a automatizace prostředí Microsoft Shell (Shell32)
Pozdní vazba
Můžete také vytvořit instanci mnoha objektů Prostředí s pozdní vazbou. Tento přístup funguje v aplikacích jazyka Visual Basic a ve skriptu. Následující příklad ukazuje, jak vytvořit instanci objektu Shell v JScriptu.
<SCRIPT LANGUAGE="JScript">
<!--
function fnCreateShell()
{
// Instantiate the Shell object and invoke its FileRun method.
var oShell = new ActiveXObject("shell.application");
oshell.FileRun;
}
-->
</SCRIPT>
Následující příklad ukazuje, jak vytvořit instanci objektu Folder v jazyce VBScript.
<SCRIPT LANGUAGE="VBScript">
<!--
function fnCreateFolder()
dim oShell
dim oFolder
dim sDir
sDir = "C:\SomePath"
set oShell = CreateObject("shell.application")
set oFolder = oShell.NameSpace(sDir)
end function
-->
</SCRIPT>
V předchozím příkladu sDir je cesta k objektu Folder. Všimněte si, že ShellSpecialFolderConstants hodnoty výčtu nejsou ve skriptu k dispozici.
Identifikátor ProgID pro každý objekt prostředí je uveden v následující tabulce.
Objekt | ID progID |
---|---|
DIDiskQuotaUser | Microsoft.DiskQuota.1 |
DiskQuotaControl | Nelze pozdní vazbu |
složky | lastura. Shell_Application.NameSpace("...") |
složka2 | lastura. Shell_Application.NameSpace("...") |
FolderItem | lastura. Shell_Application.NameSpace("..."). Self nebo Folder.Items.Item nebo Folder.ParseName |
FolderItems | Folder.Items |
FolderItems2 | Folder.Items |
FolderItemVerb | Shell.NameSpace("..."). Self.Verbs.Item() |
folderItemVerbs | FolderItem.Verbs nebo Shell.NameSpace("..."). Self.Slovesa |
IShellDispatch2 | lastura. Shell_Application |
IShellLinkDual2 | Shell.NameSpace("..."). Self.GetLink nebo Shell.NameSpace("..."). Items(). GetLink |
prostředí | lastura. Shell_Application |
ShellFolderItem | Shell.NameSpace("..."). Self nebo Shell.NameSpace("..."). Items() |
ShellFolderView | Nelze pozdní vazbu |
ShellFolderViewOC | Nelze pozdní vazbu |
ShellLinkObject | Shell.NameSpace("..."). Self.GetLink nebo Shell.NameSpace("..."). Items(). GetLink |
ShellUIHelper | Nelze pozdní vazbu |
prostředí ShellWindows | lastura. Shell_Windows nebo ShellWindows._NewEnum |
WebViewFolderContents | Nelze pozdní vazbu |
HTML OBJECT Element
Pomocí elementu OBJECT můžete také vytvořit instanci objektů prostředí na stránce HTML. Uděláte to tak, že nastavíte OBJECT elementu ID atributu na název proměnné, kterou použijete ve skriptech, a identifikujte objekt pomocí jeho registrovaného čísla (CLASSID). Následující kód HTML vytvoří instanci objektu ShellFolderItem pomocí elementu OBJECT.
<OBJECT ID="oShFolderItem"
NAME="Shell Folder Item Object"
CLASSID="clsid:2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e">
</OBJECT>
Následující tabulka uvádí jednotlivé objekty prostředí a příslušné ID TŘÍDY.
Objekt prostředí | CLASSID |
---|---|
DIDiskQuotaUser | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
DiskQuotaControl | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
složky | BBCBDE60-C3FF-11CE-8350-444553540000 |
složka2 | f0d2d8ef-3890-11d2-bf8b-00c04fb93661 |
FolderItem | 744129E0-CBE5-11CE-8350-444553540000 |
FolderItems | 744129E0-CBE5-11CE-8350-444553540000 |
FolderItems2 | C94F0AD0-F363-11d2-A327-00C04F8EEC7F |
FolderItemVerb | 08EC3E00-50B0-11CF-960C-0080C7F4EE85 |
folderItemVerbs | 1F8352C0-50B0-11CF-960C-0080C7F4EE85 |
IShellDispatch2 | A4C6892C-3BA9-11d2-9DEA-00C04FB16162 |
IShellLinkDual2 | 317EE249-F12E-11d2-B1E4-00C04F8EEB3E |
prostředí | 13709620-C279-11CE-A49E-444553540000 |
ShellFolderItem | 2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e |
ShellFolderView | 62112AA1-EBE4-11cf-A5FB-0020AFE7292D |
ShellFolderViewOC | 4a3df050-23bd-11d2-939f-00a0c91eedba |
ShellLinkObject | 11219420-1768-11d1-95BE-00609797EA4F |
ShellUIHelper | 64AB4BB7-111E-11D1-8F79-00C04FC2FBE1 |
prostředí ShellWindows | 9BA05972-F6A8-11CF-A442-00A0C90A8F39 |
WebViewFolderContents | 1820FED0-473E-11D0-A96C-00C04FD705A2 |
Objekt shellu
Objekt Shell představuje objekty v prostředí. Metody vystavené objektem Prostředí můžete použít k:
- Otevřete, prozkoumejte a vyhledejte složky.
- Minimalizovat, obnovit, kaskádovat nebo otevřít okna dlaždic.
- Spusťte aplikace ovládacích panelů.
- Zobrazení systémových dialogových oken
Uživatelé jsou možná obeznámeni s příkazy, ke kterým přistupují z nabídky Start a místní nabídky hlavního panelu. Místní nabídka hlavního panelu se zobrazí, když uživatelé kliknou pravým tlačítkem myši na hlavní panel. Následující aplikace HTML (HTA) vytvoří úvodní stránku s tlačítky, která implementují mnoho metod Shell objektu. Některé z těchto metod implementují funkce v nabídce Start a místní nabídce hlavního panelu.
<HTML>
<HEAD>
<TITLE>Start Page</TITLE>
<OBJECT ID="oShell"
CLASSID="clsid:13709620-C279-11CE-A49E-444553540000">
</OBJECT>
<STYLE>
INPUT {width: 200}
</STYLE>
<SCRIPT LANGUAGE="VBScript">
<!--
function fnStart(sMethod)
select case sMethod
case 0
'Minimizes all windows on the desktop
oshell.Shell_MinimizeAll
case 1
'Displays the Run dialog box
oshell.FileRun
case 2
'Displays the Shut Down Windows dialog box
oshell.Shell_ShutdownWindows
case 3
'Displays the Find dialog box
oshell.Shell_FindFilesr
case 4
'Displays the Date/Time dialog box
oshell.Shell_SetTime
case 5
'Displays the Internet Properties dialog box
oshell.Shell_ControlPanelItem "INETCPL.cpl"
case 6
'Explores the My Documents folder
oshell.Shell_Explore "C:\My Documents"
case 7
'Enables user to select folder from Program Files
oshell.Shell_BrowseForFolder 0, "My Programs", 0, "C:\Program Files"
case 8
'Opens the Favorites folder
oshell.Shell_Open "C:\WINDOWS\Favorites"
case 9
'Displays the Taskbar Properties dialog box
oshell.Shell_TrayProperties
end select
end function
-->
</SCRIPT>
</HEAD>
<BODY>
<H1>Start...</H1>
<INPUT type="button" value="Edit Taskbar Properties" onclick="fnStart(9)"><br>
<INPUT type="button" value="Open Favorites Folder" onclick="fnStart(8)"><br>
<INPUT type="button" value="Browse Program Files" onclick="fnStart(7)"><br>
<INPUT type="button" value="Explore My Documents" onclick="fnStart(6)"><br>
<INPUT type="button" value="Modify Internet Properties" onclick="fnStart(5)"><br>
<INPUT type="button" value="Set System Time" onclick="fnStart(4)"><br>
<INPUT type="button" value="Find a File or Folder" onclick="fnStart(3)"><br>
<INPUT type="button" value="Shut Down Windows" onclick="fnStart(2)"><br>
<INPUT type="button" value="Run" onclick="fnStart(1)">
<INPUT type="button" value="Minimize All Windows" onclick="fnStart(0)">
</BODY>
</HTML>
Bezpečnost
Jako aplikace běží HTA pod jiným modelem zabezpečení než na webové stránce. Aby uživatelé mohli pracovat s webovou stránkou, která implementuje funkce objektů Prostředí, musí povolit Inicializovat a skriptovat ovládací prvky ActiveX, které nejsou označené jako bezpečné pro zónu zabezpečení, ve které si stránku prohlížejí.
Objekty složek
Objekt Folder představuje složku Prostředí. Metody vystavené objektem Folder můžete použít k:
- Získejte informace o složce.
- Vytvořte podsložky.
- Zkopírujte a přesuňte objekty souboru do složky.
Objekt FolderItem představuje položku ve složce Shell. Její vlastnosti umožňují načíst informace o položce. Pomocí metod vystavených tímto objektem můžete spustit příkazy položky nebo načíst informace o FolderItemVerbs objektu položky.
Objekt FolderItems představuje kolekci položek ve složce Shell. Jeho metody a vlastnosti umožňují načíst informace o kolekci.
Následující příklad jazyka Visual Basic ukazuje vztah mezi několika objekty složky a způsobem jejich použití společně. Když uživatel klikne na příkazové tlačítko s názvem cmdGetPath, program zobrazí dialogové okno, které umožňuje uživateli vybrat složku z Můj počítač, kde ssfDRIVES je ShellSpecialFolderConstants výčtu pro Můj počítač. Když uživatel zvolí složku, cesta ke složce se zobrazí v textovém poli s názvem txtPath.
Private Sub cmdGetPath_Click()
Dim oShell As New Shell
Dim oFolder As Folder
Dim oFolderItem As FolderItem
Set oFolder = oshell.Shell_BrowseForFolder(Me.hWnd, "Select a Folder", 0, ssfDrives)
Set oFolderItem = oFolderItems.Item
txtPath.Text = oFolderItem.Path
End Sub
V jazyce VBScript se tato funkce mírně liší, protože ShellSpecialFolderConstants hodnoty výčtu nejsou ve skriptu k dispozici. Následující příklad ukazuje ekvivalent jazyka VBScript předchozího příkladu.
<SCRIPT LANGUAGE="VBScript">
<!--
function fnGetMyPathVB()
dim oShell
dim oFolder
dim oFolderItem
set oShell = CreateObject("shell.application")
set oFolder = oshell.Shell_BrowseForFolder(0, "Choose a Folder", 0)
set oFolderItem = oFolder.Items.Item
document.all.item("myPath").innerText = oFolderItem.Path
end function
-->
</SCRIPT>
V následujícím příkladu jazyka JScript, což je přímý překlad předchozího příkladu jazyka VBScript, všimněte si, jak se prázdné závorky () používají k vyvolání metod Items a Item metody.
<SCRIPT LANGUAGE="JavaScript">
<!--
function fnGetMyPathJ()
{
var oShell = new ActiveXObject("shell.application");
var oFolder = new Object;
oFolder = oshell.Shell_BrowseForFolder(0, "Choose a folder", 0);
var oFolderItem = new Object;
oFolderItem = oFolder.Items().Item();
document.all.item("myPath").innerText = oFolderItem.Path;
}
-->
</SCRIPT>