VBS调用系统API
如Beep的API声明为
Public Declare Function Beep Lib “kernel32″ Alias “Beep” (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
则使用方法如下
'创建对象
Set Wrap = CreateObject("DynamicWrapper")
'注册API
Wrap.Register "KERNEL32.DLL", "Beep", "i=ll", "f=s", "r=l"
'调用API
Wrap.Beep(500, 100)
其中注册API中, “i=ll”是API的参数类型, “f=s”是调用方式, “r=l”是返回类型
这些可以参考下面的说明。
REM i: (Argument Type)
REM 'a', sizeof(IDispatch*), VT_DISPATCH} // a IDispatch*
REM 'c', sizeof(unsigned char), VT_I4} // c signed char
REM 'd', sizeof(double), VT_R8} // d 8 byte real
REM 'f', sizeof(float), VT_R4} // f 4 byte real
REM 'k', sizeof(IUnknown*), VT_UNKNOWN} // k IUnknown*
REM 'h', sizeof(long), VT_I4} // h HANDLE
REM 'l', sizeof(long), VT_I4} // l long
REM 'p', sizeof(void*), VT_PTR} // p pointer
REM 's', sizeof(BSTR), VT_LPSTR} // s string
REM 't', sizeof(short), VT_I2} // t short
REM 'u', sizeof(UINT), VT_UINT} // u unsigned int
REM 'w', sizeof(BSTR), VT_LPWSTR} // w wide string REM f: (Call Method)
REM 'm' - DC_MICROSOFT 0x0000, Default
REM 'b' - DC_BORLAND 0x0001, Borland compat
REM 's' - DC_CALL_STD 0x0020, __stdcall
REM 'c' - DC_CALL_CDECL 0x0010, __cdecl
REM '4' - DC_RETVAL_MATH4 0x0100, Return value in ST
REM '8' - DC_RETVAL_MATH8 0x0200, Return value in ST REM r: (Return Type)
REM Same as i
示例:
'用机箱内的蜂鸣器播放音乐
Sub BeepMusic()
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "KERNEL32.DLL", "Beep", "i=ll", "f=s", "r=l"
res = Wrap.Beep(500, 100)
res = Wrap.Beep(550, 100)
res = Wrap.Beep(600, 100)
res = Wrap.Beep(650, 100)
res = Wrap.Beep(700, 700)
WScript.Sleep 200
res = Wrap.Beep(700, 100)
res = Wrap.Beep(650, 100)
res = Wrap.Beep(600, 100)
res = Wrap.Beep(550, 100)
res = Wrap.Beep(500, 700)
End Sub
BeepMusic
'取前景窗体标题
Sub GetForeWindowCaption()
Const WM_GETTEXT = &HD
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "USER32.DLL", "GetForegroundWindow", "f=s", "r=l"
Wrap.Register "USER32.DLL", "SendMessage", "i=lllr", "f=s", "r=l"
Title = Space(100)
res = Wrap.SendMessage(Wrap.GetForegroundWindow(), WM_GETTEXT , 100, Title)
GetForeWindowCaption = Title
End Sub
MsgBox GetForeWindowCaption
'发送键盘消息,显示桌面
Sub ShowDesktop()
Const VK_LWIN = &H5B
Const VK_D = &H44
Public Const KEYEVENTF_KEYUP = &H2
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "USER32.DLL", "keybd_event", "i=ccll", "f=s"
Wrap.keybd_event VK_LWIN, 0, 0, 0
Wrap.keybd_event VK_D, 0, 0, 0
Wrap.keybd_event VK_D, 0, KEYEVENTF_KEYUP, 0
Wrap.keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
End Sub
ShowDesktop
VBS调用系统API的更多相关文章
- VBS调用Windows API函数
Demon's Blog 忘记了,喜欢一个人的感觉 Demon's Blog » 程序设计 » VBS调用Windows API函数 « 用VBS修改Windows用户密码 在VB中创建和使用 ...
- 调用系统api修改系统时间
一:截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- C# 调用系统API 内核 简单样例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- VBS调用windows api函数(postmessage)实现后台发送按键脚本
'=========================================================================='' VBScript Source File - ...
- C#调用系统API
API简介 1) C#中的简单数据类型与API中的数据类型对应关系 2) 如何在调用API时传递复杂参数:封装类.结构和联合 3) 如何调用API 4) 如何确保成功调用API
- 调用系统API还是很高效的,不必担心性能
代码如下: void MainWindow::on_pushButton_2_clicked() { QTime total; total.start(); ; ; i<=*; i++) { Q ...
- Android连接wifi,调用系统API【转】
本文转载自:http://blog.csdn.net/aaa1050070637/article/details/54136472 直接上代码,简单粗暴,一看就懂 import android.con ...
- C#在winform中调用系统控制台输出
在Winform程序中有时候调试会通过Console.Write()方式输出一些信息,这些信息是在Visual Studio的输出窗口显示. 所以就会想,能不能调用系统的Cmd窗口输出呢,经过一番查阅 ...
- Android原生系统API自带dp、px、sp单位转换
Android系统中自带的Api中可以使用TypedValue进行单位转换 1,调用系统api转换单位 // 获得转换后的px值 float pxDimension = TypedValue.appl ...
随机推荐
- iis无法加载样式
- workerman简单例子
workerman下载地址 http://www.workerman.net/ html <!DOCTYPE html> <html> <head> <tit ...
- Java代码之输出参数和(强制类型转换)
说明(因为Java中java Application的参数都是默认的字符型的数据,所以需要强制类型转换这一步骤) 设计思想: 向系统里输入若干个参数,计算出参数个数,利用for语句计算出参数的和.(程 ...
- 用VB把xlsx转换为xls
Sub Test()Dim wb As Workbook, mPath As String, f As StringApplication.DisplayAlerts = FalseApplicati ...
- HDU 5829 Rikka with Subset
快速数论变换ntt. 早上才刚刚接触了一下FFT,然后就开始撸这题了,所以要详细地记录一下. 看了这篇巨巨的博客才慢慢领会的:http://blog.csdn.net/cqu_hyx/article/ ...
- 新项目引入gulp
1:安装npm:官网下载nodejs--https://nodejs.org/en/.进行安装npm;--http://jingyan.baidu.com/article/a17d528506d7f5 ...
- 实验吧Web-天网管理系统
笔记 == : 比较运算符号 不会检查条件式的表达式的类型 ===: 恒等计算符 , 同时检查表达式的值与类型.(会检查表达式类型,如bool) PHP序列化与反序列化serialize() 对输 ...
- 第九十四节,html5+css3移动手机端流体布局,旅游部分,媒体查询
html5+css3移动手机端流体布局,旅游部分,媒体查询 媒体查询 媒体查询是手机网站和自适应网站的重要部分,媒体查询可以根据不同的屏幕大小,做响应的处理,如文字的大小,区块隐藏等等 媒体查询,这里 ...
- 第五十四节,socketserver通讯模块实现并发操作,真多线程并发
socketserver通讯模块实现并发操作,基于select.epoll.socket.多线程,实现的正真多线程多并发 socketserver通讯模块底层调用的socket模块,只是它作了处理基于 ...
- 整体认识flume:Flume介绍、分布式安装、常见问题及解决方案
问题导读 1.什么是flume? 2.flume包含哪些组件? 3.Flume在读取utf-8格式的文件时会出现解析不了时间戳,该如何解决? Flume是一个分布式.可靠.和高可用的海量日志采集.聚合 ...