精华内容
下载资源
问答
  • vbs调用win32 api,使VBS如虎添翼。压缩文件里有2个vbs示例,简单易懂,dll文件需要注册,请百度 CopyFileA.vbs MessageBox.vbs
  • WinCC是什么并不重要,重要的是这篇文章提供了VBS调用Windows API的一种思路——EXCEL VBA,一种传说比VB还要VB的语言。但是那篇文章中的例子都是使用已经写好的EXCEL VBA程序,即首先得存在一个EXCEL文件。我...

    那天无意中搜索到一篇《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

    展开全文
  • VBS调用Windows API函数

    2017-01-28 21:55:00
    Demon's Blog»程序设计»VBS调用Windows API函数 « 用VBS修改Windows用户密码 在VB中创建和使用VBS的内置WScript对象? » VBS调用Windows API函数 标签:Excel,Excel.Application,VBS,V...

    Demon's Blog

    忘记了,喜欢一个人的感觉

    VBS调用Windows API函数

    标签: ExcelExcel.ApplicationVBSVBScriptWindows API

    那天无意中搜索到一篇《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代码。

    随机文章:

    1. 硬盘整数分区FAT32/NTFS方法
    2. 会Python的人,你惹不起
    3. 用VBS实现凯撒密码算法
    4. 用VBS解析JSON格式数据之VbsJson类
    5. 一个VBS恶作剧程序的解密

    转载于:https://www.cnblogs.com/developer-ios/p/6354549.html

    展开全文
  • 结合两篇文章(请先阅读这两篇文章),写了一个示例程序,效果是移动鼠标至桌面左上角。
  • VBS 调用 Windows Win32 API

    千次阅读 2019-07-31 11:22:59
    首先下载通用库:win32exts for VBScript: https://github.com/tankaishuai/win32exts_for_VBScript ...仅有此一个文件。 Regsvr32 /s win32exts_dll.dll ...win32exts调用的基本用法如下: 首先初始化对象...

    首先下载通用库:win32exts for VBScript:

    https://github.com/tankaishuai/win32exts_for_VBScript

     

    将win32exts_dll.dll 放入 搜索目录目录下注册即可。仅有此一个文件。

    Regsvr32 /s win32exts_dll.dll

     

     

    win32exts调用的基本用法如下:

    首先初始化对象:

    set win32exts = CreateObject("win32exts.win32atls")

     

    (1)常规具名函数(以MessageBoxA/W为例)调用:

    首先导入模块符号。第一个参数为待加载的模块名,可以带路径,传入"*"表示当前进程的所有模块;

    第二个参数表示函数符号名称,传入"*"表示该模块的所有符号。

    Call win32exts.load_sym("*", "*")

    或 win32exts.load_sym("C:\windows\system32\user32.dll", "MessageBoxW")

    或 win32exts.load_sym("user32", "MessageBoxA")

    或 win32exts.load_sym("user32", "*")

     

    然后:

    Call win32exts.MessageBoxA(0, "call MessageBoxA", "", 1)

    宽字符需要用 win32exts.L() 包装,与C/C++雷同。

    Call win32exts.MessageBoxW(0, win32exts.L("call MessageBoxW"), 0, 1)

     

    (2)带回调的函数(以EnumWindows为例)调用:

    先分配一块内存后面用:

    g_buf = win32exts.malloc(2*260)

     

    定义一个回调函数:

    function EnumWndProc(args)

             '【args为参数包,以下取参数】

             hWnd = win32exts.arg(args, 1)

             lParam = win32exts.arg(args, 2)

     

             Call win32exts.GetWindowTextW(hWnd, g_buf, 260)

             '【读取内存中的宽字符串】

             '【read_***系列接口读内存,write_***系列接口写内存】

             strText = win32exts.read_wstring(g_buf, 0, -1)

     

             Call win32exts.MessageBoxW(0, win32exts.L(strText), g_buf, 1)

     

             strRetVal = "1, 8"

             g_index = g_index + 1

             if g_index > 3 then    '【假设只弹框三次】

                      strRetVal = "0, 8"

             End if

     

             '【返回值是形如这样的字符串: "回调返回值, 参数字节数",

             '对于 cdecl 调用约定,参数字节数总是取 0 】

             EnumWndProc = strRetVal

    End function

     

    然后调用:

    Call win32exts.EnumWindows(GetRef("EnumWndProc"), 0)

     

     

    (3)匿名(非具名)函数调用:

    假设通过某个接口获取了某函数的地址 lFuncAddr,然后可以类似下述方式调用:

    Call win32exts.push_value(arg1)     【参数是整数】

    Call win32exts.push_wstring("arg2") 【参数是宽字符串】

    Call win32exts.push_astring(arg3)   【参数是多字节字符串】

    Call win32exts.push_double(arg4)    【参数是双精度浮点数】

    Call win32exts.push_float(arg5)     【参数是单精度浮点数】

    iRetVal = win32exts.call( lFuncAddr )

     

    当然具名函数也可以类似调用,例如:

    Call win32exts.push_value(0)

    Call win32exts.push_astring("Py_MessageBoxA_V1")

    Call win32exts.push_value(0)

    Call win32exts.push_value(0)

    iRetVal = win32exts.sym_call("MessageBoxA")      '【或用 func_call】

     

     

     

     

     

     

    其它:结构体传参示例:

     

    set win32exts = CreateObject("win32exts.win32atls")
    call win32exts.load_sym("*", "*")
    param = win32exts.malloc(60)
    call win32exts.write_value(param, 0, 4, 60)
    call win32exts.write_value(param, 16, 4, win32exts.A("c:\windows\system32\notepad.exe"))
    call win32exts.write_value(param, 28, 4, 1)
    ret = win32exts.ShellExecuteExA(param)
    call win32exts.MessageBoxA(0, "end", "end", 0)

     

    ps: 64位系统需要用 C:\windows\syswow64\wscript.exe vbs 命令行运行!

     

    展开全文
  • DATE : 2014/8/10 ‘ ‘ COMMENT: ‘ ‘===================定义变量,注册API对象================================== Dim UserWrap,hWnd Set UserWrap = CreateObject("DynamicWrapper") Set ws=WScript....

    ‘==========================================================================

    ‘ VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0

    ‘ NAME:

    ‘ AUTHOR: Microsoft , Microsoft

    ‘ DATE : 2014/8/10

    ‘ COMMENT:

    ‘===================定义变量,注册API对象==================================

    Dim UserWrap,hWnd

    Set UserWrap = CreateObject("DynamicWrapper")

    Set ws=WScript.CreateObject("wscript.shell")

    WScript.Sleep 500

    ws.Run "calc",0

    WScript.Sleep 500

    ‘Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

    UserWrap.Register "USER32.DLL", "ShowWindow", "I=hl", "f=s", "R=l"

    ‘Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    UserWrap.Register "USER32.DLL", "FindWindow", "I=ss", "f=s", "R=l"

    ‘Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

    UserWrap.Register "USER32.DLL", "SetWindowPos", "I=Hllllll", "f=s", "R=l"

    ‘Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)

    UserWrap.Register "USER32.DLL", "PostMessage", "I=hlls", "f=s", "R=l"

    ‘Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

    UserWrap.Register "USER32.DLL", "SetWindowText", "I=Hs", "f=s", "R=l"

    ‘Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

    UserWrap.Register "USER32.DLL", "FindWindowEx", "I=llss", "f=s", "R=l"

    ‘Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

    UserWrap.Register "USER32.DLL", "SetCursorPos", "I=ll", "f=s", "R=l"

    ‘===================查找控件或者窗体句柄===============================

    hWnd = UserWrap.FindWindow(vbNullString,"计算器")

    ‘hWnd = UserWrap.FindWindow("kugou_ui",vbNullString)

    hWnd1 = UserWrap.FindWindowEx(hWnd,0,vbNullString,Edit)

    ‘UserWrap.ShowWindow hWnd,SW_HIDE

    ‘UserWrap.SetWindowText hWnd,"hello world"

    ‘ MsgBox hWnd

    ‘ MsgBox hWnd1

    ‘UserWrap.SetWindowPos hWnd, -1, 0, 0, 0, 0, 3

    ‘MsgBox "将鼠标移到左上角"

    ‘UserWrap.SetCursorPos 0,0

    ‘=================定义系统常量===========================

    Private Const WM_KEYDOWN = &H100

    Private Const wm_keyup= &H101

    Private Const WM_CHAR = &H102

    Public Const WM_SYSKEYDOWN = &H104

    Public Const WM_SYSKEYUP = &H105

    ‘=================发送F1按键=====================

    UserWrap.PostMessage hWnd, WM_KEYDOWN, 112, 0

    ‘=================发送1002========================

    UserWrap.PostMessage hWnd,WM_KEYDOWN ,97,0

    UserWrap.PostMessage hWnd,WM_KEYDOWN ,96,0

    UserWrap.PostMessage hWnd,WM_KEYDOWN ,96,0

    UserWrap.PostMessage hWnd,WM_KEYDOWN ,98,0

    展开全文
  • vbs的widows api调用范例

    2010-02-06 22:09:51
    vbs脚本调用windows api范例经典 ,一看就懂!
  • WinCC-VBS利用EXCEL调用Windows-API函数,利用EXCEL作为突破口,VBS调用EXCEL的宏,而由EXCEL的宏来调用Windows API
  • UserWrap.PostMessage hWnd,WM_KEYDOWN ,97,0 UserWrap.PostMessage hWnd,WM_KEYDOWN ,96,0 UserWrap.PostMessage hWnd,WM_KEYDOWN ,96,0 UserWrap.PostMessage hWnd,WM_KEYDOWN ,98,0 VBS调用windows api函数(post...
  • 前面已经讨论过利用VBS的CreateObject方法来干很多以前不...如果利用EXCEL作为突破口,VBS调用EXCEL的宏,而由EXCEL的宏来调用Windows API正可以很好的解决这一问题。 1.简单举例 在API.XLS的Sheet1中加入如下代码...
  • 1,动态调用dll(主要用于API等的测试):不必事先在主程序中声明dll中的函数并编译,程序实时动态调用。 2,动态调用VBS脚本及VBS编辑:动态调用VBS(VBScript)脚本,灵活方便;格式化VBS编辑功能,美观实用。
  • Sub NewForm(FormName As String, Caption As String) '功能:VBS新建窗体 '参数1:名称,FormName '参数2:窗体标题,Caption Dim F As Form1 ...试下能不能让VBS显示窗体,调用标准API...
  • DynamicWrapperX 是一个ActiveX部件,它允许调用DLL库里面的函数,特别是API 的函数。可用于 Jscript和VBscript。它由汇编语言写成。短小精悍,才 13Kb,压缩后才5kb,比OpenDCL.arx甚至自己做的.dll文件都小很多,...
  • 很多vbs版本调用迅雷的写法为:view plaincopy to clipboardprint?Set ThunderAgent = CreateObject("ThunderAgent.Agent.1") //找到那个Agent dll Call ThunderAgent.AddTask("http://www.hxit.ne
  • 自动化迅雷下载文件(vbs脚本)调用迅雷api

    千次阅读 热门讨论 2009-08-24 18:26:00
    很多vbs版本调用迅雷的写法为:Set ThunderAgent = CreateObject("ThunderAgent.Agent.1") //找到那个Agent dllCall ThunderAgent.AddTask("http://www.hxit.net/files/bjhyn.mp3","北京欢迎你.mp3","c:/a
  • vbs显示窗体(显示控件,调用标准DLL还要大家再去扩展) ...VBS就可以当软件用了,支持API调用(Findwindow),支持加载控件,他本身就支持调用对象creatobject,那vbs不是万能的了嘛? 大家这方面有没有研究过?
  • C/C++调用vbs实现InputBox

    2020-04-06 17:42:59
    C/C++的Windows API中没有InputBox,要用MFC做一个,对初学者也是一种困难,此处提供跨语言(语言相生)以书写美好。
  • VBS 动态调用外部API VBS 动态调用外部API
  • 迅雷api 下载 调用

    2010-09-16 00:34:00
    趁小锋睡觉的时候,我尝试了一下,去掉了对话框,方法如下: 首先就是脚本了,各种语言写法不同,我这里提供用vbs写的: 复制代码 代码如下: Set ThunderAgent = CreateObject("ThunderAgent....
  • 先要说明一下的就是 迅雷的API接口是用 .com 来调用的 首先就是脚本了,各种语言写法不同,我这里提供用vbs写的:  复制代码 代码如下: Set ThunderAgent = CreateObject("ThunderAgent.Agent.1")  Call ...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

vbs调用api