vbscript,javascript 中调用 win32 API 的实现。
来源:互联网 发布:彩票在线关注源码 编辑:程序博客网 时间:2024/05/16 08:23
根据“脚本魔术师”的经验,发现用户只需要一种简单好用的脚本语言,并不需要很多语法的啰嗦。
“脚本魔术师”调用Win32 API 时只能做到传值的调用,对于要求用指针传递参数并未做合适的处理。
不过有上次的实现经验,这次写起来还是有一点信心。
先看一段vbscript 的代码:
dim Api
dim Param1
dim Param2
Set Api=NewObject("CCall") '获得CCall 实例
Set param1=NewObject("CMemory") '新增的内存管理对象
Set Param2=NewObject("CMemory") '参数2
Param1.NewStructMemory "lpName=s255" ' GetComputerName 函数 的第一个参数,分配255个字节
Param2.NewStructMemory "lpSize=p" ' GetComputerName 函数的第二个参数,该参数要求传指针
Param2.LetItemValue "lpSize",255 '赋值为255
dim addr
Api.LoadLib "Kernel32" 'GetComputerName 的库
addr=GetProcAddr("GetComputerNameA") '取得函数地址
Api.CallByAddress addr,Param1,Param2 '这样就完成了API的调用,其实可以用一个函数完成 CallApiByName(DllName,sFunctionName,Param....)
'取得计算机名
Computername=Param1.GetItemValue("lpName")'也可以用 0 作为参数,意指第一个参数,不过用伪名更可读
CMsgbox Computername 'NET-MANAGER
ComputernameLen=Param2.GetItemValue("lpSize")
CMsgbox ComputernameLen '11 接受到的实际长度
'清理现场
Set Param1=nothing
Set Param2=nothing
Set Api=nothing
'虽然还是麻烦点,但还是实现了,有了这个基础,再做一个 Wraper 或 CodeGen 不是难事
有人会问,那么对结构体的参数呢,比如:GetWindowRect
其实很容易,认真看上面的代码
Param2.NewStructMemory "Left=p","Top=p","Right=p","Bottom=p" '这样就完成了一个结构体的内存声明
我还是写写吧
dim Api
dim Param1
dim Param2
Dim Form1
Set Form=NewObject("Form","Form1")
Set Api=NewObject("CCall") '获得CCall 实例
Set param1=NewObject("CMemory") '新增的内存管理对象
Set Param2=NewObject("CMemory") '参数2
Param1.NewStructMemory "hwnd=l" ' 函数 的第一个参数,该参数使用值传递 类型指定为 "l"
Param2.NewStructMemory "Left=p","Top=p","Right=p","Bottom=p" 函数的第二个参数,该参数要求传结构体指针
Param1.LetItemValue "hwnd",Form1.hwnd '赋值为窗体的句柄
dim addr
Api.LoadLib "User32" 'GetWindowRect 的库
addr=GetProcAddr("'GetWindowRect ") '取得函数地址
Api.CallByAddress addr,Param1,Param2 '这样就完成了API的调用,其实可以用一个函数完成 CallApiByName(DllName,sFunctionName,Param....)
'取得计算机名
Left=Param2.GetItemValue("Left")'也可以用 0 作为参数,意指第一个参数,不过用伪名更可读
Top=Param2.GetItemValue("Top") '索引可用 1作为参数
......
CMsgbox "Left=" & Left & vbcrlf & "Top=" & Top
'清理现场
Set Param1=nothing
Set Param2=nothing
Set Api=nothing
Set Form1=nothing
EndApp true '结束程序
日出脚本现在版本为1.0 下载地址见:http://download.csdn.net/user/fupozsl
- vbscript,javascript 中调用 win32 API 的实现。
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、javascript等脚本的实现
- 在C#中调用VBScript、javascript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现
- 在C#中调用VBScript、JavaScript等脚本的实现 -工作流
- 在C#中调用VBScript和JavaScript等脚本的实现
- 在C#中调用VBScript和JavaScript等脚本的实现
- C#中调用WIN32的API
- c# 中调用win32的api函数
- C#中调用WIN32的API
- 实现vbscript和javascript互相调用方法
- javascript调用 vbscript的dateAdd函数
- QTP调用win32 API 实现窗口的最小最大化
- ASP的Blog Roll的代码
- "转角遇到爱"之经典对白与漫画文字
- 用变量来取得exec('')的标量返回值.
- 绕过IceSword文件检测的Trojan.Win32.Mnless.zpc/ojj6erv.sys
- Asp.Net(C#)页面件传值小总结 fly_thinking
- vbscript,javascript 中调用 win32 API 的实现。
- 陆克文专题
- cewolf中,使X轴上的标签倾斜45度
- I=I++
- 李开复:如何利用大学里充足的时间?
- ASP.net(c#) StringBuilder 类
- 学生各门课程成绩统计SQL语句大全
- .Net 最简单读取数据库内图片的方法
- asp.net 2.0 下设置和使用FCKeditor文本编辑器