VBS調(diào)用Windows API函數(shù)的代碼
那天無意中搜索到一篇《WinCC VBS利用EXCEL調(diào)用Windows API函數(shù)》的文章,不知道WinCC是什么,Google了一下好像跟西門子自動化有關(guān)。WinCC是什么并不重要,重要的是這篇文章提供了VBS調(diào)用Windows API的一種思路——EXCEL VBA,一種傳說比VB還要VB的語言。
但是那篇文章中的例子都是使用已經(jīng)寫好的EXCEL VBA程序,即首先得存在一個EXCEL文件。我就想,能不能在VBS中通過excel.application對象創(chuàng)建一個包含VBA代碼的EXCEL文檔然后再調(diào)用它呢?Google來Google去,終于在微軟幫助和支持中找到了方法。
結(jié)合兩篇文章(請先閱讀這兩篇文章),寫了一個示例程序,效果是移動鼠標(biāo)至桌面左上角。如果你的EXCEL不是太盜版,雙擊這個VBS后應(yīng)該可以看到效果。
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中調(diào)用Windows API不屬于本文的討論范圍,請自己查閱資料。使用oExcel.Run "MyMacro",0,0調(diào)用我們寫入的VBA代碼。
原文:http://demon.tw/programming/vbs-excel-invoke-windows-api.html
- python調(diào)用windows api鎖定計(jì)算機(jī)示例
- C#中調(diào)用Windows API的技術(shù)要點(diǎn)說明
- 使用winapi安裝Windows服務(wù)示例程序
- 基于Windows API分解路徑問題的詳解
- Windows API函數(shù)大全(完整)
- windows服務(wù)器您試圖從目錄中執(zhí)行CGI、ISAPI 或其他可執(zhí)行程序,但該目錄不允許執(zhí)行程序
- Windows程序內(nèi)部運(yùn)行機(jī)制實(shí)例詳解
- 深入詳解C編寫Windows服務(wù)程序的五個步驟
- 使用WindowsAPI獲取錄音音頻的方法
相關(guān)文章
可以得到當(dāng)前系統(tǒng)信息的腳本sysinfo.vbs
可以得到當(dāng)前系統(tǒng)信息的腳本sysinfo.vbs...2007-02-02
VBScript 動態(tài) Array 的實(shí)現(xiàn)代碼
這篇文章主要介紹了VBScript 動態(tài) Array 的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
VBS教程:函數(shù)-GetObject 函數(shù)
使用 GetObject 函數(shù)可以訪問文件中的 Automation 對象,而且可以將該對象賦值給對象變量。使用 Set 語句將 GetObject 返回的對象賦值給對象變量。2006-11-11

