Objek Shell yang Dapat Ditulis
Windows Shell menyediakan sekumpulan objek otomatisasi canggih yang memungkinkan Anda memprogram Shell dengan Microsoft Visual Basic dan bahasa pembuatan skrip seperti Microsoft JScript (kompatibel dengan spesifikasi bahasa ECMA 262) dan Microsoft Visual Basic Scripting Edition (VBScript). Anda dapat menggunakan objek ini untuk mengakses banyak fitur dan kotak dialog Shell. Misalnya, Anda dapat mengakses sistem file, meluncurkan program, dan mengubah pengaturan sistem.
Bagian ini memperkenalkan objek Shell yang dapat ditulis.
Versi Shell
Banyak objek Shell tersedia di Shell versi 4.71 . Lainnya tersedia di versi 5.00 dan yang lebih baru. Versi 5.00 tersedia dengan Windows 2000. Tabel berikut mencantumkan setiap objek Shell di bawah versi Shell tempat objek tersedia.
Membuat Instans Objek Shell
Untuk membuat instans objek Shell di aplikasi Visual Basic dengan pengikatan awal, tambahkan referensi ke pustaka berikut dalam proyek Anda:
- Kontrol Internet Microsoft (SHDocVw)
- Microsoft Shell Controls and Automation (Shell32)
Pengikatan Terlambat
Anda juga dapat membuat instans banyak objek Shell dengan pengikatan terlambat. Pendekatan ini berfungsi dalam aplikasi Visual Basic dan dalam skrip. Contoh berikut menunjukkan cara membuat instans objek Shell di JScript.
<SCRIPT LANGUAGE="JScript">
<!--
function fnCreateShell()
{
// Instantiate the Shell object and invoke its FileRun method.
var oShell = new ActiveXObject("shell.application");
oshell.FileRun;
}
-->
</SCRIPT>
Contoh berikut menunjukkan cara membuat instans objek Folder di 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>
Dalam contoh sebelumnya, sDir adalah jalur ke objek Folder . Perhatikan bahwa nilai enumerasi ShellSpecialFolderConstants tidak tersedia dalam skrip.
ProgID untuk setiap objek Shell diperlihatkan dalam tabel berikut.
Object | ProgID |
---|---|
DIDiskQuotaUser | Microsoft.DiskQuota.1 |
DiskQuotaControl | Tidak dapat terlambat mengikat |
Folder | Shell. Shell_Application.NameSpace("...") |
Folder2 | Shell. Shell_Application.NameSpace("...") |
FolderItem | Shell. Shell_Application.NameSpace("..."). Self atau Folder.Items.Item atau Folder.ParseName |
FolderItems | Folder.Item |
FolderItems2 | Folder.Item |
FolderItemVerb | Shell.NameSpace("..."). Self.Verbs.Item() |
FolderItemVerbs | FolderItem.Verbs atau Shell.NameSpace("..."). Self.Verbs |
IShellDispatch2 | Shell. Shell_Application |
IShellLinkDual2 | Shell.NameSpace("..."). Self.GetLink atau Shell.NameSpace("..."). Item(). GetLink |
Shell | Shell. Shell_Application |
ShellFolderItem | Shell.NameSpace("..."). Self atau Shell.NameSpace("..."). Item() |
ShellFolderView | Tidak dapat terlambat mengikat |
ShellFolderViewOC | Tidak dapat terlambat mengikat |
ShellLinkObject | Shell.NameSpace("..."). Self.GetLink atau Shell.NameSpace("..."). Item(). GetLink |
ShellUIHelper | Tidak dapat terlambat mengikat |
ShellWindows | Shell. Shell_Windows atau ShellWindows._NewEnum |
WebViewFolderContents | Tidak dapat terlambat mengikat |
Elemen OBJEK HTML
Anda juga dapat menggunakan elemen OBJECT untuk membuat instans objek Shell di halaman HTML. Untuk melakukan ini, atur atribut ID elemen OBJECT ke nama variabel yang akan Anda gunakan dalam skrip Anda, dan identifikasi objek menggunakan nomor terdaftarnya (CLASSID). HTML berikut membuat instans objek ShellFolderItem menggunakan elemen OBJECT .
<OBJECT ID="oShFolderItem"
NAME="Shell Folder Item Object"
CLASSID="clsid:2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e">
</OBJECT>
Tabel berikut mencantumkan setiap objek Shell dan CLASSID masing-masing.
Objek shell | CLASSID |
---|---|
DIDiskQuotaUser | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
DiskQuotaControl | 7988B571-EC89-11cf-9C00-00AA00A14F56 |
Folder | 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 |
Objek Shell
Objek Shell mewakili objek di Shell. Anda dapat menggunakan metode yang diekspos oleh objek Shell untuk:
- Buka, jelajahi, dan telusuri folder.
- Minimalkan, pulihkan, kaskade, atau buka jendela petak peta.
- Luncurkan aplikasi Panel Kontrol.
- Tampilkan kotak dialog sistem.
Pengguna mungkin paling akrab dengan perintah yang mereka akses dari menu Mulai dan menu pintasan taskbar. Menu pintasan taskbar muncul saat pengguna mengklik kanan taskbar. Aplikasi HTML (HTA) berikut menghasilkan halaman mulai dengan tombol yang mengimplementasikan banyak metode objek Shell . Beberapa metode ini mengimplementasikan fitur pada menu Mulai dan menu pintasan taskbar.
<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>
Keamanan
Sebagai aplikasi, HTA berjalan di bawah model keamanan yang berbeda dari halaman web. Untuk berinteraksi dengan halaman web yang mengimplementasikan fungsionalitas objek Shell, pengguna harus mengaktifkan Inisialisasi dan skrip Kontrol ActiveX yang tidak ditandai sebagai opsi aman untuk zona keamanan tempat mereka melihat halaman.
Objek Folder
Objek Folder mewakili folder Shell. Anda dapat menggunakan metode yang diekspos oleh objek Folder untuk:
- Mendapatkan informasi tentang folder.
- Buat subfolder.
- Salin dan pindahkan objek file ke dalam folder.
Objek FolderItem mewakili item dalam folder Shell. Propertinya memungkinkan Anda untuk mengambil informasi tentang item. Anda dapat menggunakan metode yang diekspos oleh objek ini untuk menjalankan kata kerja item, atau untuk mengambil informasi tentang objek FolderItemVerbs item.
Objek FolderItems mewakili kumpulan item dalam folder Shell. Metode dan propertinya memungkinkan Anda untuk mengambil informasi tentang koleksi.
Contoh Visual Basic berikut ini memperlihatkan hubungan antara beberapa objek folder dan bagaimana mereka dapat digunakan bersama-sama. Ketika pengguna mengklik tombol perintah yang disebut cmdGetPath, program menampilkan kotak dialog yang memungkinkan pengguna untuk memilih folder dari Komputer Saya, di mana ssfDRIVES adalah nilai enumerasi ShellSpecialFolderConstants untuk Komputer Saya. Saat pengguna memilih folder, jalur folder ditampilkan dalam kotak teks yang disebut 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
Dalam VBScript, fungsi ini sedikit berbeda karena nilai enumerasi ShellSpecialFolderConstants tidak tersedia dalam skrip. Contoh berikut menunjukkan VBScript yang setara dengan contoh sebelumnya.
<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>
Dalam contoh JScript berikut, yang merupakan terjemahan langsung dari contoh VBScript sebelumnya, perhatikan bagaimana tanda kurung kosong '()' digunakan untuk memanggil metode Item dan Item .
<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>
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk