Bagikan melalui


Menggunakan Objek Desktop Aktif

[Fitur ini hanya didukung di bawah Windows XP atau yang lebih lama. ]

Artikel ini berisi informasi tentang objek ActiveDesktop yang merupakan bagian dari Windows Shell API. Objek ini, melalui antarmuka IActiveDesktop-nya , memungkinkan Anda menambahkan, menghapus, dan mengubah item di desktop.

Gambaran Umum Antarmuka Desktop Aktif

Active Desktop adalah fitur yang diperkenalkan dengan Microsoft Internet Explorer 4.0 yang memungkinkan Anda menyertakan dokumen dan item HTML (seperti Kontrol Microsoft ActiveX dan applet Java) langsung ke desktop Anda. Antarmuka IActiveDesktop , yang merupakan bagian dari Windows Shell API, digunakan untuk menambahkan, menghapus, dan memodifikasi item di desktop secara terprogram. Item Active Desktop juga dapat ditambahkan menggunakan file Format Definisi Saluran (CDF).

Mengakses Desktop Aktif

Untuk mengakses Active Desktop, aplikasi klien perlu membuat instans objek ActiveDesktop (CLSID_ActiveDesktop) dengan fungsi CoCreateInstance dan mengambil pointer ke antarmuka IActiveDesktop objek.

Contoh berikut menunjukkan cara mengambil pointer ke antarmuka IActiveDesktop .

HRESULT hr;
IActiveDesktop *pActiveDesktop;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

//Insert code to call the IActiveDesktop methods

// Call the Release method
pActiveDesktop->Release();

Menambahkan Item Desktop

Ada tiga metode yang dapat Anda gunakan untuk menambahkan item desktop: IActiveDesktop::AddDesktopItem, IActiveDesktop::AddDesktopItemWithUI, dan IActiveDesktop::AddUrl. Setiap item desktop yang ditambahkan ke Active Desktop harus memiliki URL sumber yang berbeda.

Metode IActiveDesktop::AddDesktopItemWithUI dan IActiveDesktop::AddUrl keduanya menyediakan opsi untuk menampilkan berbagai antarmuka pengguna yang dapat ditampilkan sebelum menambahkan item desktop ke Active Desktop. Antarmuka memverifikasi apakah pengguna ingin menambahkan item desktop ke Active Desktop mereka. Antarmuka juga memberi tahu pengguna tentang risiko keamanan apa pun yang dijadai oleh pengaturan zona keamanan URL, dan mereka bertanya kepada pengguna apakah mereka ingin membuat langganan untuk item desktop ini. Kedua metode ini juga menyediakan cara menekan antarmuka pengguna. Metode IActiveDesktop::AddDesktopItem memerlukan panggilan ke IActiveDesktop::ApplyChanges untuk memperbarui registri. Untuk IActiveDesktop::AddDesktopItemWithUI, aplikasi klien harus segera merilis antarmuka IActiveDesktop dan kemudian menggunakan fungsi CoCreateInstance untuk mengambil antarmuka ke instans objek ActiveDesktop yang menyertakan item desktop yang baru ditambahkan.

Metode IActiveDesktop::AddDesktopItem menambahkan item desktop yang ditentukan ke Active Desktop tanpa antarmuka pengguna apa pun, kecuali pengaturan zona keamanan URL mencegahnya. Jika pengaturan zona keamanan URL tidak mengizinkan item desktop ditambahkan tanpa meminta pengguna, metode gagal. IActiveDesktop::AddDesktopItem juga memerlukan panggilan ke IActiveDesktop::ApplyChanges untuk memperbarui registri.

Contoh berikut menunjukkan cara menambahkan item desktop dengan metode IActiveDesktop::AddDesktopItem .

HRESULT hr;
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

// Initialize the COMPONENT structure
compDesktopItem.dwSize = sizeof(COMPONENT);

// Insert code that adds the information about the desktop item 
// to the COMPONENT structure

// Add the desktop item
pActiveDesktop->AddDesktopItem(&compDesktopItem,0);

// Save the changes to the registry
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);

Menghitung Item Desktop

Untuk menghitung item desktop yang saat ini diinstal di Active Desktop, aplikasi klien perlu mengambil jumlah total item desktop yang diinstal menggunakan metode IActiveDesktop::GetDesktopItemCount lalu membuat perulangan yang mengambil struktur COMPONENT untuk setiap item desktop dengan memanggil metode IActiveDesktop::GetDesktopItem menggunakan indeks item desktop.

Contoh berikut menunjukkan salah satu cara untuk menghitung item desktop.

HRESULT hr;
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;
int intCount;
int intIndex = 0;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

pActiveDesktop->GetDesktopItemCount(&intCount,0);

compDesktopItem.dwSize = sizeof(COMPONENT);

while(intIndex<=(intCount-1))
{
    //get the COMPONENT structure for the current desktop item
    pActiveDesktop->GetDesktopItem(intIndex, &compDesktopItem,0);

    //Insert code that processes the structure

    //Increment the index
    intIndex++;

    //Insert code to clean-up structure for next component
}

// Call the Release method
pActiveDesktop->Release();