100分 求 如何用 mshta 执行内存中的 代码 或者在程序内嵌入wsh解释器 如题,平时看到mshta执行的是 存在盘上的文件 因为我的脚本代码不一定是保存在磁盘上的 可能在内存中 请高手指点一下 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一个例子#import "msscript.ocx" no_namespace#include<iostream>#include<ctime>using namespace std;void func(){ srand((unsigned int)time(NULL)); IScriptControlPtr control; control.CreateInstance( __uuidof(ScriptControl) ); control->PutLanguage( "JScript" ); control->PutAllowUI( VARIANT_FALSE ); control->AddCode( "function test( arg1 , arg2 ) { return arg1+arg2; }" "function myFunc( arg1 , arg2 ) { return arg1+arg2; }" ); IScriptProcedureCollectionPtr ProcCollection = control->GetProcedures(); long mCount = ProcCollection->GetCount(); for( long x=0;x<mCount;x++){ IScriptProcedurePtr Proc = ProcCollection->GetItem( x+1 ); cout<<"Procedure Name="<<(const char*)Proc->Name<<"\n"; cout<<"Args Number="<<Proc->NumArgs<<"\n"; VARIANT var = {0}; var.vt = VT_I4 ; SAFEARRAYBOUND rgsabound[1]={0}; rgsabound[0].cElements = Proc->NumArgs; SAFEARRAY* psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound); for (long i = 0; i < Proc->NumArgs ; i ++){ var.lVal = rand() ; cout<<"param"<<i<<"="<<var.lVal<<" "; SafeArrayPutElement ( psa , &i , &var ); } cout<<"\n"; _variant_t Result = control->Run( Proc->Name , &psa ); if( VARIANT_FALSE != Proc->HasReturnValue ){ cout<<(const char*)_bstr_t(Result)<<endl; } SafeArrayDestroy( psa ); }}int main(int argc, char* argv[]){ ::CoInitialize(NULL); func(); ::CoUninitialize(); return 0;} 谢谢例子在vc6下执行了例子 GetItem( x+1 )处报错 说类型转换错误后改为 GetItem( _variant_t((long)(x+1)) ) 执行正确了但这个能解释方法不能生成类似hta的界面 也不能解释html标签 因为脚本里面可能有对标签的操作不知道还有没有更好的解决方法最想达到的效果是 和hta 一样的运行结果 但代码是从字符串载入 而不是.hta文件我记得 有个文章 命令行下:mshta 运行js vbsmshta javascript:window.execScript("msgBox('hello youniao'):window.close","vbs");mshta vbscript:window.execScript("alert('hello youniao');","javascript")但把通常的hta代码加入执行不成.......... 如何打印picture控件的内容???在线等。谢谢。 XML数据库速度! mfc的源码能否看到 扩展存储过程中如何执行我自己编的.exe文件? 如何给分割的VIEW各自配一个工具条 复选按钮??????????? 200分!!!CStatic与父窗口的关系,我麻烦大了! 怎么使光标变成手行啊,好像说只能WindowsNT5以上才支持 Help!....Vc++Ado连接Access数据库疑难? 为何数据库不能成功录入数据?(十万火急) 用MSComm控件进行串口通讯时,怎么发送和接收结构体数据? 谁能提供“DDOS攻击监视器”或者功能相近的程序的代码
#include<iostream>
#include<ctime>
using namespace std;void func()
{
srand((unsigned int)time(NULL));
IScriptControlPtr control;
control.CreateInstance( __uuidof(ScriptControl) ); control->PutLanguage( "JScript" );
control->PutAllowUI( VARIANT_FALSE );
control->AddCode(
"function test( arg1 , arg2 ) { return arg1+arg2; }"
"function myFunc( arg1 , arg2 ) { return arg1+arg2; }"
);
IScriptProcedureCollectionPtr ProcCollection = control->GetProcedures();
long mCount = ProcCollection->GetCount();
for( long x=0;x<mCount;x++){
IScriptProcedurePtr Proc = ProcCollection->GetItem( x+1 );
cout<<"Procedure Name="<<(const char*)Proc->Name<<"\n";
cout<<"Args Number="<<Proc->NumArgs<<"\n"; VARIANT var = {0};
var.vt = VT_I4 ;
SAFEARRAYBOUND rgsabound[1]={0};
rgsabound[0].cElements = Proc->NumArgs;
SAFEARRAY* psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound);
for (long i = 0; i < Proc->NumArgs ; i ++){
var.lVal = rand() ;
cout<<"param"<<i<<"="<<var.lVal<<" ";
SafeArrayPutElement ( psa , &i , &var );
}
cout<<"\n";
_variant_t Result = control->Run( Proc->Name , &psa );
if( VARIANT_FALSE != Proc->HasReturnValue ){
cout<<(const char*)_bstr_t(Result)<<endl;
}
SafeArrayDestroy( psa );
}
}
int main(int argc, char* argv[])
{
::CoInitialize(NULL);
func();
::CoUninitialize();
return 0;
}
GetItem( x+1 )处报错 说类型转换错误
后改为 GetItem( _variant_t((long)(x+1)) ) 执行正确了但这个能解释方法不能生成类似hta的界面 也不能解释html标签 因为脚本里面可能有对标签的操作
不知道还有没有更好的解决方法最想达到的效果是 和hta 一样的运行结果 但代码是从字符串载入 而不是.hta文件我记得 有个文章 命令行下:mshta 运行js vbs
mshta javascript:window.execScript("msgBox('hello youniao'):window.close","vbs");
mshta vbscript:window.execScript("alert('hello youniao');","javascript")但把通常的hta代码加入执行不成..........