VBS调用Windows API函数的代码_vbs

那天无意中搜索到一篇《WinCC VBS利用EXCEL调用Windows API函数》的文章,不知道WinCC是什么,Google了一下好像跟西门子自动化有关。WinCC是什么并不重要,重要的是这篇文章提供了VBS调用Windows API的一种思路——EXCEL VBA,一种传说比VB还要VB的语言。

但是那篇文章中的例子都是使用已经写好的EXCEL VBA程序,即首先得存在一个EXCEL文件。我就想,能不能在VBS中通过excel.application对象创建一个包含VBA代码的EXCEL文档然后再调用它呢?Google来Google去,终于在微软帮助和支持中找到了方法。

结合两篇文章(请先阅读这两篇文章),写了一个示例程序,效果是移动鼠标至桌面左上角。如果你的EXCEL不是太盗版,双击这个VBS后应该可以看到效果。

复制代码 代码如下:

Dim WshShell
set WshShell = CreateObject("wscript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM",1,"REG_DWORD"
Dim oExcel, oBook, oModule
Set oExcel = CreateObject("excel.application")
Set oBook = oExcel.Workbooks.Add
Set oModule = obook.VBProject.VBComponents.Add(1)
strCode = _
"Private Declare Function SetCursorPos Lib ""user32"" (ByVal x As Long, ByVal y As Long) As Long" & vbCr & _
"Sub MyMacro(x as Long, y as Long)" & vbCr & _
"SetCursorPos x, y" & vbCr & _
"End Sub"
oModule.CodeModule.AddFromString strCode
oExcel.Run "MyMacro",0,0
oExcel.DisplayAlerts = False
oBook.Close
oExcel.Quit

前面3-5行的修改注册表是为了让VBS能够完全控制EXCEL,strCode即为写入EXCEL中的VBA代码,至于怎样在VBA中调用Windows API不属于本文的讨论范围,请自己查阅资料。使用oExcel.Run "MyMacro",0,0调用我们写入的VBA代码。
原文:http://demon.tw/programming/vbs-excel-invoke-windows-api.html

时间: 2024-09-20 01:07:44

VBS调用Windows API函数的代码_vbs的相关文章

用Visual C#调用Windows API函数(转)

visual|window|函数 用Visual C#调用Windows API函数 北京机械工业学院研00级(100085)冉林仓       Api函数是构筑Windws应用程序的基石,每一种Windows应用程序开发工具,它提供的底层函数都间接或直接地调用了Windows API函数,同时为了实现功能扩展,一般也都提供了调用WindowsAPI函数的接口, 也就是说具备调用动态连接库的能力.Visual C#和其它开发工具一样也能够调用动态链接库的API函数..NET框架本身提供了这样一种

用Visual C#调用Windows API函数

visual|window|函数 Api函数是构筑Windws应用程序的基石,每一种Windows应用程序开发工具,它提供的底层函数都间接或直接地调用了Windows API函数,同时为了实现功能扩展,一般也都提供了调用WindowsAPI函数的接口, 也就是说具备调用动态连接库的能力.Visual C#和其它开发工具一样也能够调用动态链接库的API函数..NET框架本身提供了这样一种服务,允许受管辖的代码调用动态链接库中实现的非受管辖函数,包括操作系统提供的Windows API函数.它能够定

用c#开发wince调用windows api函数的问题?

问题描述 WINCE平台下可以调用WINDOWSAPI函数吗?usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;namespaceWindowsApplication_haha

C#调用windows api的要点

window     在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希望给未在C#中使用过API的朋友一点帮助.另外如果安装了Visual Studio .net的话,在C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\Interop\P

C#中调用Windows API的要点

window 在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希望给未在C#中使用过API的朋友一点帮助.另外如果安装了Visual Studio .net的话,在C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\Interop\Platf

Windows API 函数列表 附帮助手册

原文:Windows API 函数列表 附帮助手册 所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了.   帮助手册:700多个Windows API的函数手册 免费下载   API之网络函数 API之消息函数 API之文件处理函数 API之打印函数 API之文本和字体函数 API之菜单函数 API之位图.图标和光栅运算函数 API之绘图函数 API之设备场景函数 API之硬件与系统函数 API之进程和线程函数 API之控件与消息函数     1. API

在python中用ctypes模块调用Windows API的问题

问题描述 在python中用ctypes模块调用Windows API的问题 用python做一个windows平台的工具,纯python缺乏接口,因此想用ctypes模块调用Windows API来实现,碰到了下列问题: 用python封装Windows 中的SystemTimeToFileTime,调用过程中提示参数不对. Windows API 原型 BOOL WINAPI SystemTimeToFileTime( __in const SYSTEMTIME* lpSystemTime,

Windows API函数大全(完整)_其它相关

1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconne

c#调用Win32 Api函数

在c#中可以通过互操作性服务using System.Runtime.InteropServices来调用window api函数.并且通过属性来指定api函数的位置,以及调用方式,比如,我们要调用User32.dll里的函数MessageBox(HWnd hwnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT type) 首先引入名字空间 using System.Runtime.InteropServices; 其次定义一个静态方法,并且指定调用的方式.其中用关