문제

내 호출해야 하는 Win32API 를 얻는 일련의 문자열을 전하고 싶다 돌아의 배열을 그 문자열을 자바 스크립트.이를 위해 실행하는 스크립트 로컬 컴퓨터의 관리를 위한 스크립트,하지 웹 브라우저입니다.

내 IDL 파일에 대한 COM 체는 인터페이스가 나는 전화로:

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

반환이 올바르게,그러나 문자열을 얻고 있는'잃어버린'때 할당되는 변수에서 JavaScript.

질문입니다:는 무엇입 적절한 방법으로 배열을 가져오의 반환되는 문자열을 자바스크립트 변수?

도움이 되었습니까?

해결책

만약 내가 정확하게 기억해야 합 포장 SAFEARRAYVARIANT 기 위해서 그것을 얻을 통해 다음 사용 VBArray 체 짐을 풀고 그것에 JS 면의 것:

HRESULT GetArrayOfStrings(/*[out, retval]*/ VARIANT* pvarBstrStringArray)
{
   // ...

   _variant_t ret;
   ret.vt = VT_ARRAY|VT_VARIANT;
   ret.parray = rgBstrStringArray;
   *pvarBstrStringArray = ret.Detach();
   return S_OK;
}

다음

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

다른 팁

Shog9 올바른 것입니다.COM 스크립팅을 필요로하는 모든 출력이 될 변형이 있습니다.

사실,그것은 또한 모든 입력 이 변형 될 뿐 아니라-볼한 IDispatch 에서 당신의 마음에 드는 도움말 파일입니다.그것은 단지 생각의 마법 듀얼 인터페이스에 의해 구현 ATL 및 이와 유사한 레이어이(가장 가능성이 높은 무엇을 사용하여)을 걱정할 필요가 없다.입력 개 전달해 코드로 변환되어와 일치하는 방법 서명하기 전에 실제적인 방법이라고합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top