Cara Mengembalikan Array of Strings dari Objek ActiveX ke JScript dengan Benar

Jika Anda bekerja dengan API Win32 dan perlu mengembalikan array string dari objek ActiveX ke JScript, Anda mungkin akan menghadapi beberapa tantangan. Masalah ini biasanya muncul ketika string tampak ‘hilang’ selama transfer. Memahami hubungan antara objek COM, ActiveX, dan JScript sangat penting untuk penanganan data yang sukses di lingkungan ini. Dalam postingan blog ini, kita akan melalui pendekatan yang benar untuk mencapai hal ini.

Masalah

Anda telah mendefinisikan antarmuka dalam file IDL (Interface Definition Language) Anda untuk objek COM yang mencakup metode yang mengembalikan array string. Secara spesifik, tanda tangan fungsinya muncul sebagai berikut:

HRESULT GetArrayOfStrings([out, retval] SAFEARRAY(BSTR) * rgBstrStringArray);

Sementara fungsi itu sendiri beroperasi dengan benar, masalah muncul ketika string ditugaskan ke variabel di JavaScript, menghasilkan string yang tampaknya hilang. Kita perlu memastikan data ditransfer dengan benar.

Solusi

Untuk secara tepat mentransfer array string dari objek ActiveX Anda ke JScript, ikuti langkah-langkah rinci berikut:

Langkah 1: Bungkus SAFEARRAY dalam VARIANT

Untuk memfasilitasi komunikasi antara objek COM dan JScript, Anda perlu membungkus SAFEARRAY dalam VARIANT sebelum mengembalikannya. Ini memungkinkan penanganan array yang tepat dan memastikan tidak terjadi kehilangan data. Di bawah ini adalah kode fungsi yang dimodifikasi untuk mencapai hal ini:

HRESULT GetArrayOfStrings(/*[out, retval]*/ VARIANT* pvarBstrStringArray)
{
   // Deklarasikan variabel untuk menampung array.
   _variant_t ret;
   // Tetapkan tipe variabel menjadi array dari variabel.
   ret.vt = VT_ARRAY | VT_VARIANT;
   ret.parray = rgBstrStringArray; // Tugaskan SAFEARRAY.
   *pvarBstrStringArray = ret.Detach(); // Lepaskan untuk mengembalikan.
   return S_OK; // Kembalikan sukses.
}

Langkah 2: Gunakan VBArray di JScript

Setelah data dibungkus dalam VARIANT dan berhasil dikembalikan dari ActiveX, Anda dapat memanfaatkan objek VBArray dalam kode JScript Anda untuk mengurai data dengan benar. Baris kode yang Anda butuhkan adalah:

var jsFriendlyStrings = new VBArray(axOb.GetArrayOfStrings()).toArray();

Baris tunggal ini secara efektif mengonversi VARIANT yang dikembalikan menjadi array string yang ramah JavaScript, memungkinkan Anda untuk menangani data sesuai kebutuhan.

Kesimpulan

Menangani transfer array string dari objek ActiveX ke JScript bergantung pada pemahaman cara memanipulasi objek COM dan interaksi JavaScript. Dengan membungkus SAFEARRAY Anda dalam VARIANT dan menggunakan VBArray untuk mengurai data tersebut, Anda dapat memastikan bahwa semua data diteruskan dengan benar tanpa kehilangan.

Sekarang, Anda harus dilengkapi dengan pendekatan yang tepat untuk secara sukses mengembalikan dan memanfaatkan array string dalam skrip administratif Anda. Selamat coding!