我的VBS/Jscript脚本引擎是MSscript.ocx。
请问大侠我如何在脚本语言里调用C/C++写的带指针参数的函数呢?(已实现了自动化接口)。希望C/C++函数能修改脚本语言传入参数的值,返回给脚本语言。好像VBS有ByRef的参数类型,但我试了没成功。JScripte又能怎样实现呢?脚本代码:
slinyin m_linyin;pScriptControl->Language = "VBScript"; //setup1
pScriptControl->AllowUI = TRUE; //setup2
pScriptControl->AddObject("linyin", m_linyin.GetIDispatch(1), 1);
pScriptControl->AddCode("Function my(Argu1) \n dim b\n b=10 \n linyin.GetValue(b) \n my=b \n End Function ");
_variant_t outpar = pScriptControl->Run("MyStringFunction", &psa);//setup4函数定义:
void slinyin ::GetValue( Long * plValue ){*plValue = 100;}
请问大侠我如何在脚本语言里调用C/C++写的带指针参数的函数呢?(已实现了自动化接口)。希望C/C++函数能修改脚本语言传入参数的值,返回给脚本语言。好像VBS有ByRef的参数类型,但我试了没成功。JScripte又能怎样实现呢?脚本代码:
slinyin m_linyin;pScriptControl->Language = "VBScript"; //setup1
pScriptControl->AllowUI = TRUE; //setup2
pScriptControl->AddObject("linyin", m_linyin.GetIDispatch(1), 1);
pScriptControl->AddCode("Function my(Argu1) \n dim b\n b=10 \n linyin.GetValue(b) \n my=b \n End Function ");
_variant_t outpar = pScriptControl->Run("MyStringFunction", &psa);//setup4函数定义:
void slinyin ::GetValue( Long * plValue ){*plValue = 100;}
解决方案 »
- 哪里有比较好的windows API编程的论坛
- 问一个有关继承的基本问题
- 有关Toolbar的一个小问题
- 高分求助:在InstallShield for VC中能不能设置应用程序的运行的起始位置?
- 问一个低级问题??欢迎光临!!
- 如何检测并口打印时的打印错误(如无联机,打印机电源没接口)
- VC编写的DLL在VB调用的问题
- ===================== 超级酷的浏览器Myborswer的病毒!详细特征及解决方案讨论。=====================
- 关于CCheckListBox的几个问题!
- 气死人,请高手指点
- 写WinSocket程序的时候要引进WS2_32.LIB和MSWSOCK.DLL,请问在VS2005中怎么引入?
- MFC中通过HWND找CWnd的问题,FromHandle是如何找到CWnd的
必须是
GetValue([out,retval]long* plValue);
在VBS中就是一个 无参的返回值为long的函数.
[id(5)] void GetValue(long* plvalue);在类文件中:
BEGIN_DISPATCH_MAP(linyin, CCmdTarget)
//{{AFX_DISPATCH_MAP(linyin)
DISP_FUNCTION(linyin, "GetValue", GetValue, VT_EMPTY, VTS_PI4)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()void linyin::GetValue(long FAR* plvalue)
{
// TODO: Add your dispatch handler code here
*plvalue = 100;
}我要怎样才能做到在脚本程序中调用 linyin.GetValue(pValue)之后,pValue的值为GetValue所赋的值呢?是否要把参数定义成别的特殊的类型才能支持像C/C++中的指针操作?
改成
[id(5)] HRESULT GetValue([out,retval]long* plValue);
我在VBS脚本里要怎么调用它呢?直接用Dim a, linyin.GetValue(a)的格式吗?其实我的目的是脚本在调用C/C++函数的过程中,参数的值会被所调用的函数改变。请问要实现这个目的我要怎么设计C函数,和在脚本中使用什么样的调用方式呢?脚本的引擎是MSscript.ocx
改成
[id(5)] HRESULT GetValue([out,retval]long* plValue);改成这样都不行么?
a = linyin.GetValue();这样调用
-----------------
Dim a
a = linyin.GetValue();这样调用
-----------------
这样调用的话plvalue传入哪个变量的指针呢?a的吗?