各位大虾,俺有个问题,javascript的数组如何传到dll里面,我如何在dll里面处理呀,急
分不够在加,我现在有4000多可用的分。哈哈哈。
分不够在加,我现在有4000多可用的分。哈哈哈。
解决方案 »
- 设置了CREATE_SUSPENDED,为什么还是程序运行的时候一开始就执行了线程呢?
- CListCtrl 插入第11列 ?
- [100分,照书抄的,居然运行不了。天热,请帮忙看完] 关 于 全 局 钩 子
- vc 如何实现 不弹出一个警告窗口
- edit垂直居中
- VC新手請教:我有一個靜態庫的源碼,如何把它編繹成動態庫?
- 请教:微软tts,如何让发声半道停止。我查了开发包的文档,始终没有找到,只有pause,resume,speak。谢谢
- 如何将包含了图片,文字,表格等等之类的多个网页保存在一个文件里,然后读出来显示。
- 增样得到并口的状态,比如打印机是否就绪,打印机是否缺纸
- 谁能帮忙介绍介绍自己定义的简单协议的实现?
- 问一个乱码问题!急,高分求教!
- 如何定制CSpinButtonCtrl空间,是上下两个距离拉长,水知道,谢谢!来这有分
而且
vVal.vt == (VT_VARIANT | VT_ARRAY)
所以
SAFEARRAY* pSA = vVal.parray;
从这里面取值就可以了。我也是刚刚学习,不知道对不对?
即有一个IDispatch接口,
它有一个属性length,表示数组元素的个数
还有length个属性,名字分别是0,1,.....length-1下面是一个例子
为简单化用VB做
用VB做一个ActiveX Dll,比如工程名TestJScript,类名JScriptArray
有如下方法
Public Sub ShowArray(arr As Object)
'取数组元素的长度
length = arr.length
'循环输出第个元素
For i = 0 To length - 1
'CallByName一个对象的属性,第二个参数是属性名
MsgBox "Element " & i & " " & CallByName(arr, CStr(i), VbGet)
Next
End Sub编译后,用javascript测试
写一个.js文件,可以双击直接运行
var obj = WScript.CreateObject("TestJScript.JScriptArray");var arr = new Array();arr[0] = "Hello from JScript!";
arr[1] = 1.234;
arr[2] = new Date();obj.ShowArray(arr);
我是用vc开发的atl控件,是用在客户端的不是用在服务器的。
我在msdn上看了很多但是没有一篇是关于dll在客户端应用的例子。
请指教
STDMETHODIMP CTestArray::Test(VARIANT* Array, BSTR *pVal)
{
*pVal = NULL;
if (Array->vt != (VT_VARIANT | VT_ARRAY | VT_BYREF))
return E_INVALIDARG; SAFEARRAY* pSa = *Array->pparray;
LONG Count = pSa->rgsabound[0].cElements;
_bstr_t Msg = BSTR(NULL);
VARIANT* pvData = NULL;
::SafeArrayAccessData(pSa, (VOID**)&pvData);
for (LONG i=0; i<Count; i++)
Msg += _bstr_t(pvData[i]);
::SafeArrayUnaccessData(pSa); *pVal = Msg.copy();
return S_OK;
}如下使用(VBScript):
dim a(2)
a(0) = "Hello"
a(1) = " World"
a(2) = "!"
Dim obj
set obj = CreateObject("Test.TestArray")
If not (obj is nothing) Then
MsgBox obj.test(a)
End if
1.即然是DLL,那么在客户端用大概有三种方法,我想得起来的两种是:
一、newActiveObject
二、作为object插入<object></object>
2.使用方法
一、前提,如果你的DLL可以改写的,那么最好把接口改得干净点,Assenble的工作放到DLL里面去作,必竟功能强,调试更方便
二、我以前做的一个项目用的是这种方法:前提,DLL是作为object插到页面里的,<object>id="XXX"</object>,所以我可以利用id真接调用方法传数组参数进去,没发生什么问题。