Scrip control VB и C++
у меня есть управление скриптами в vb, и там у нас есть несколько функций, таких как Run:
SCR.Timeout = 10000
ЮКЖД.Запуск "Основной"
то же самое я делаю в c+, где у нас есть scrip control object ocx, я пытался использовать его таким же образом в vb, но у меня возникла проблема.
потому что я не знаю, как передать safeparamter в функции run, так как в vb только один параметр передается:
я попробовал приведенный ниже код, он разбивается в invoke helper . пожалуйста, дайте мне знать, как мы можем это сделать ?
Что я уже пробовал:
teststt.put_Language(_T("VBScript")); LPSAFEARRAY psa; SAFEARRAYBOUND rgsabound[] = { 1, 0 }; // 3 elements, 0-based int i; psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound); if (!psa) { return ; } VARIANT vFlavors[1]; for (i = 0; i < 1; i++) { VariantInit(&vFlavors[i]); V_VT(&vFlavors[i]) = VT_BSTR; } V_BSTR(&vFlavors[0]) = SysAllocString(OLESTR("")); //V_BSTR(&vFlavors[1]) = SysAllocString(OLESTR("")); //V_BSTR(&vFlavors[2]) = SysAllocString(OLESTR("")); long lZero = 0; //long lOne = 1; //HRESULT hr; //long lTwo = 2; //// Put Elements to the SafeArray: HRESULT hr = SafeArrayPutElement(psa, &lZero, &vFlavors[0]); //hr = SafeArrayPutElement(psa, &lOne, &vFlavors[1]); //hr = SafeArrayPutElement(psa, &lTwo, &vFlavors[2]); //// Free Elements from the SafeArray: for (i = 0; i < 1; i++) { SysFreeString(vFlavors[i].bstrVal); } /*teststt.AddCode( _T("function Main()"));*/ teststt.put_AllowUI(TRUE); CString lsCode = _T("Sub Main()") + CString("\r\n") + " Dim WshShell" + "\r\n" + " Set WshShell = CreateObject(\"Wscript.Shell\")" + "\r\n" + " WshShell.Run \"c:\\windows\\calc.exe\"" + "\r\n" + "End Sub";// JUST FOR TEST PURPOSE teststt.AddCode(lsCode); teststt.put_Timeout(10000); VARIANT l = teststt.Run(_T("Main"), &psa);