Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Shell számos olyan automatizálási objektumot biztosít, amelyek lehetővé teszik a Shell programozását a Microsoft Visual Basic és a szkriptelési nyelvek, például a Microsoft JScript (az ECMA 262 nyelvi specifikációjával kompatibilis) és a Microsoft Visual Basic Scripting Edition (VBScript) használatával. Ezekkel az objektumokkal elérheti a Shell számos funkcióját és párbeszédpaneljét. Elérheti például a fájlrendszert, elindíthatja a programokat, és módosíthatja a rendszer beállításait.
Ez a szakasz bemutatja a szkriptelhető Shell-objektumokat.
Shell-verziók
Számos Shell-objektum elérhetővé vált a Shell 4.71-es verziójában . Mások az 5.00-s és újabb verziókban érhetők el. Az 5.00-s verzió elérhetővé vált a Windows 2000-ben. Az alábbi táblázat felsorolja az összes Shell-objektumot annak a Shell-verziónak a verziójában, amelyben az objektum elérhetővé vált.
Shell-objektumok példányosítása
Ha korai kötéssel szeretné példányosítani a Shell-objektumokat a Visual Basic-alkalmazásokban, adjon hozzá hivatkozásokat a projekt alábbi kódtáraihoz:
- Microsoft Internet Controls (SHDocVw)
- Microsoft Shell Controls and Automation (Shell32)
Késői kötés
Emellett számos Shell-objektumot is létrehozhat késői kötéssel. Ez a megközelítés Visual Basic-alkalmazásokban és szkriptekben is működik. Az alábbi példa bemutatja, hogyan példányosíthatja a Shell objektumot a JScriptben.
<SCRIPT LANGUAGE="JScript">
<!--
function fnCreateShell()
{
// Instantiate the Shell object and invoke its FileRun method.
var oShell = new ActiveXObject("shell.application");
oshell.FileRun;
}
-->
</SCRIPT>
Az alábbi példa bemutatja, hogyan példányosíthatja a Mappa objektumot a VBScriptben.
<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>
Az előző példában sDir az Mappa objektum elérési útja. Vegye figyelembe, hogy a ShellSpecialFolderConstants enumerálási értékek nem érhetők el a szkriptben.
Az egyes Shell-objektumok progID-azonosítója az alábbi táblázatban látható.
| Tárgy | ProgID |
|---|---|
| DIDiskQuotaUser | Microsoft.DiskQuota.1 |
| DiskQuotaControl | Nem lehet késői kötést létrehozni |
| mappa | héj. Shell_Application.NameSpace("...") |
| Folder2 | héj. Shell_Application.NameSpace("...") |
| FolderItem | héj. Shell_Application.NameSpace("..."). Self vagy Folder.Items.Item vagy Folder.ParseName |
| FolderItems | Folder.Items |
| FolderItems2 | Folder.Items |
| FolderItemVerb | Shell.NameSpace("..."). Self.Verbs.Item() |
| FolderItemVerbs | FolderItem.Verbs vagy Shell.NameSpace("..."). Self.Verbs |
| IShellDispatch2 | héj. Shell_Application |
| IShellLinkDual2 | Shell.NameSpace("..."). Self.GetLink vagy Shell.NameSpace("..."). Elemek(). GetLink |
| Shell- | héj. Shell_Application |
| ShellFolderItem | Shell.NameSpace("..."). Self or Shell.NameSpace("..."). Elemek() |
| ShellFolderView | Nem lehet késői kötést létrehozni |
| ShellFolderViewOC | Nem lehet késői kötést létrehozni |
| ShellLinkObject | Shell.NameSpace("..."). Self.GetLink vagy Shell.NameSpace("..."). Elemek(). GetLink |
| ShellUIHelper | Nem lehet késői kötést létrehozni |
| ShellWindows | héj. Shell_Windows vagy ShellWindows._NewEnum |
| WebViewFolderContents | Nem lehet késői kötést létrehozni |
HTML OBJECT Elem
Az OBJECT elemet is használhatja a Shell-objektumok HTML-oldalon való példányosításához. Ehhez állítsa az OBJECT elem azonosítójának attribútumát a szkriptekben használni kívánt változónévre, és azonosítsa az objektumot a regisztrált számával (CLASSID). Az alábbi HTML a ShellFolderItem objektum egy példányát hozza létre az OBJECT elem használatával.
<OBJECT ID="oShFolderItem"
NAME="Shell Folder Item Object"
CLASSID="clsid:2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e">
</OBJECT>
Az alábbi táblázat felsorolja az egyes Shell-objektumokat és a hozzájuk tartozó CLASSID azonosítót.
| Shell-objektum | CLASSID |
|---|---|
| DIDiskQuotaUser | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| DiskQuotaControl | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
| mappa | BBCBDE60-C3FF-11CE-8350-444553540000 |
| Folder2 | 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 |
| Shell- | 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 |
| ShellWindows | 9BA05972-F6A8-11CF-A442-00A0C90A8F39 |
| WebViewFolderContents | 1820FED0-473E-11D0-A96C-00C04FD705A2 |
Shell-objektum
A Shell objektum a Shell objektumait jelöli. A Shell-objektum által közzétett metódusokat a következő módokon használhatja:
- Mappák megnyitása, felfedezése és tallózása.
- Kis méretűre, visszaállításra, kaszkádoltra vagy csempére nyitott ablakok.
- Indítsa el a Vezérlőpult-alkalmazásokat.
- Rendszer párbeszédpanelek megjelenítése.
A felhasználók talán leginkább ismerik a Start menüből és a tálca helyi menüjéből elérhető parancsokat. A tálca helyi menüje akkor jelenik meg, amikor a felhasználók a jobb gombbal a tálcára kattintanak. A következő HTML-alkalmazás (HTA) létrehoz egy kezdőlapot olyan gombokkal, amelyek a Shell objektum metódusainak nagy részét implementálják. Ezen módszerek némelyike a Start menü és a tálca helyi menüjének funkcióit valósítja meg.
<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>
Biztonság
Alkalmazásként a HTA egy weblaptól eltérő biztonsági modellben fut. Ha olyan weblapot szeretne használni, amely megvalósítja a Shell-objektumok funkcióit, a felhasználóknak engedélyezniük kell a Az ActiveX-vezérlők inicializálása és szkriptje nincs megjelölve biztonságos beállításként ahhoz a biztonsági zónához, amelyben megtekintik a lapot.
Mappaobjektumok
A mappa objektum egy Shell-mappát jelöl. A Mappa objektum által közzétett metódusokat a következő módokon használhatja:
- Információk lekérése egy mappáról.
- Almappák létrehozása.
- Fájlobjektumok másolása és áthelyezése a mappába.
A FolderItem objektum egy Shell-mappában lévő elemet jelöl. A tulajdonságok lehetővé teszik az elem adatainak lekérését. Az objektum által közzétett metódusokkal futtathatja egy elem igéit, vagy lekérheti az elem FolderItemVerbs objektumával kapcsolatos információkat.
A FolderItems objektum egy Shell-mappa elemeinek gyűjteményét jelöli. A metódusok és tulajdonságok lehetővé teszik a gyűjtemény adatainak lekérését.
Az alábbi Visual Basic-példa a mappaobjektumok több objektuma közötti kapcsolatot és azok együttes használatát mutatja be. Amikor a felhasználó az cmdGetPathnevű parancsgombra kattint, a program egy párbeszédpanelt jelenít meg, amely lehetővé teszi, hogy a felhasználó kijelöljön egy mappát Saját számítógép, ahol az ssfDRIVES a ShellSpecialFolderConstantsSaját számítógépenumerálási értéke. Amikor a felhasználó kiválaszt egy mappát, a mappa elérési útja megjelenik a txtPathnevű szövegmezőben.
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
A VBScriptben ez a függvény kissé eltérő, mert a ShellSpecialFolderConstants enumerálási értékek nem érhetők el a szkriptben. Az alábbi példa az előző példa VBScript-ekvivalensét mutatja be.
<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>
Az alábbi JScript-példában, amely az előző VBScript-példa közvetlen fordítása, figyelje meg, hogy az üres zárójelek ()" hogyan hívják meg az Elemek és Elem metódusokat.
<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>