前面已经讨论过利用VBS的CreateObject方法来干很多以前不敢想象的事情,但Windows API却没有办法,虽有DynmicWrapper.dll这样的东西,毕竟使用起来不方便,而且功能也有限。如果利用EXCEL作为突破口,VBS调用EXCEL的宏,而由EXCEL的宏来调用Windows API正可以很好的解决这一问题。
1. 简单举例
在API.XLS的Sheet1中加入如下代码:
Private Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal
YourGuess As Long) As Long
Public Sub ShowShutDownDlg() '显示关机界面
SHShutDownDialog 0
End Sub
在WinCC调用之前先用EXCEL运行一下,效果如下:
接下来由WinCC的VBS调用如下:
Dim oExcelFile,oExcel,oWorkBook,oSheet
oExcelFile= HMIRuntime.ActiveProject.Path + "\APIXLS\API.XLS"
Set oExcel = CreateObject("Excel.Application")
Set oWorkBook = oExcel.workbooks.OPen(oExcelFile)
Set oSheet = oWorkBook.Sheets("Sheet1")
oExcel.run "Sheet1.ShowShutDownDlg"
oWorkBook.Close
Set oWorkBook = Nothing
oExcel.quit
Set oExcel = nothing