请教高手,如果用vbs调用dll提供的函数

helloitworld 2009-11-28 04:04:38
我用C++(MFC)完成的一个dll,该dll提供函数int helloworld(),请问如何用vbs调用啊?
...全文
1238 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Microogle 2009-11-29
  • 打赏
  • 举报
回复
Set oShell = CreateObject("WScript.Shell")
oShell.Run "notepad" 'commandline,可以指定是否显示窗口
oShell.Exec "regedit" '可以返回WshScriptExec对象,对进程进行一些简单的操作
helloitworld 2009-11-28
  • 打赏
  • 举报
回复
我用这条命令执行了一下自己的dll,成功完成任务。但是,如果实现用vbs的调用呢?在下vbs初学者,还请赐教。
[Quote=引用 2 楼 microogle 的回复:]
2. 如何实现能被rundll32.exe调用的DLL函数

rundll32.exe的语法是:rundll32.exe dllfile.dll,function_name param1 param2 ...

其中function_name的定义必须要符合下面这样:

void CALLBACK function_name(HWND hwnd, HINSTANCE hinst,  LPTSTR lpCmdLine, int nCmdShow)
该函数必须在DLL中导出。

然后CreateObject("WScript.Shell").Run "cmd /c rundll32 xxxx.dll,xxx,xxx,xxx"
[/Quote]
helloitworld 2009-11-28
  • 打赏
  • 举报
回复
dim obj
set obj = CreateObject("Test.TestClass")
obj.HelloWorld()
我的dll是Test,输出函数包含在TestClass中,类不是输出类,仅输出个别函数,HelloWorld就是其中一个函数。我用命令regsvr32 Test.dll 提示注册成功
弹出对话框提示“Test.dll中的DllRegisterServer注册成功”,没有提示HelloWorld注册成功。
然后运行vbs文件,弹出错误对话框,错误:ActiveX 部件不能创建对象:‘ScheduledTasks.CSTManagement’
[Quote=引用 1 楼 net_lover 的回复:]
Set x = CreateObject("工程名.类名")
x.helloworld

你的dll先注册一下
[/Quote]
Microogle 2009-11-28
  • 打赏
  • 举报
回复
2. 如何实现能被rundll32.exe调用的DLL函数

rundll32.exe的语法是:rundll32.exe dllfile.dll,function_name param1 param2 ...

其中function_name的定义必须要符合下面这样:

void CALLBACK function_name(HWND hwnd, HINSTANCE hinst, LPTSTR lpCmdLine, int nCmdShow)
该函数必须在DLL中导出。

然后CreateObject("WScript.Shell").Run "cmd /c rundll32 xxxx.dll,xxx,xxx,xxx"
孟子E章 2009-11-28
  • 打赏
  • 举报
回复
Set x = CreateObject("工程名.类名")
x.helloworld

你的dll先注册一下

4,008

社区成员

发帖
与我相关
我的任务
社区描述
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。
社区管理员
  • vbScript社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧