Dom 在VBScript中捕获事件
伙计们。这是一个VBS脚本,可以打开google、填写表单并单击搜索按钮Dom 在VBScript中捕获事件,dom,scripting,vbscript,Dom,Scripting,Vbscript,伙计们。这是一个VBS脚本,可以打开google、填写表单并单击搜索按钮 set ie = CreateObject("InternetExplorer.Application") ie.navigate("www.google.com") ie.visible = true while ie.readystate <> 4 wscript.sleep 100 WEnd set fields = ie.document.getelementsbyname("q") s
set ie = CreateObject("InternetExplorer.Application")
ie.navigate("www.google.com")
ie.visible = true
while ie.readystate <> 4
wscript.sleep 100
WEnd
set fields = ie.document.getelementsbyname("q")
set buttons = ie.document.getelementsbyname("btnG")
fields(0).value = "some query"
buttons(0).click
ie.quit
Sub OnClickSub()
MsgBox "button clicked!", 0
End Sub
set ie=CreateObject(“InternetExplorer.Application”)
ie.navigate(“www.google.com”)
可见=真实
而ie.readystate 4
wscript.sleep 100
温德
设置字段=ie.document.getelementsbyname(“q”)
设置按钮=ie.document.getelementsbyname(“btnG”)
字段(0)。value=“一些查询”
按钮(0)。单击
不干了
Sub OnClickSub()
MsgBox“已单击按钮!”,0
端接头
显然,按钮(0)。单击
会触发按钮的onclick事件,我需要在脚本中捕获该事件,并为其提供一些处理,如启动OnClickSub()
有人知道该怎么做吗?使用函数获取指向事件处理程序的指针并将其绑定到事件,如下所示:
buttons(0).onclick = GetRef("OnClickSub")
(显然,当从网页外部调用时不起作用。)下面是一个非常简单的方法来捕获Excel中发生的事件。必须打开Excel才能使其工作。将其复制并粘贴到新的VBScript中,然后运行它。然后进入Excel,更改单元格的值。将弹出一个消息框,显示您更改的单元格
'/////////////////////////////////////////////////Event Constant Definitions/////////////////////////////////////////////////////
EVENT_CELL_CHANGE = 1 '//////////////////////////////////////////////////////////////////////
EVENT_SELECTED_CELL_CHANGE = 2 '/////////////////////////////////////////////////////
EVENT_SELECTED_SHEET_CHANGE = 3 '///////////////////////////////////////////////////
EVENT_SELECTED_WORKBOOK_CHANGE = 4 '///////////////////////////////////////
'/////////////////////////////////////////////////Event Constant Definitions/////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////Global Program/////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
set O = getObject( , "Excel.Application")
Call WaitUntil_Event(EVENT_CELL_CHANGE, O.Selection, RtnVar, "BLANK")
msgbox RtnVar.address
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////End of Global Program//////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////Start of Main Sub Program/////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////This program was written by///////////////////////////////////////////////////////
'///////////////////////////////////////////Ben Ahrens (April 5th, 2019///////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sub WaitUntil_Event(EventType, CheckVal, ByRef ReturnVariable, RunVBScript_FileName)
On Error Resume Next
LoopedCycleTime = 50
WaitUntil_SelectionChange = False
'msgbox EVENT_CELL_CHANGE
select case EventType
Case EVENT_CELL_CHANGE
Set CheckVal = O.Selection
Do
Set CheckVal = O.Selection
Val= CheckVal.Value
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Address <> CheckVal.Address
Loop While CheckVal.Value = Val
Set RtnVar = CheckVal
Case EVENT_SELECTED_CELL_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Address <> CheckVal.Address
Case EVENT_SELECTED_SHEET_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Worksheet.Name <> CheckVal.Worksheet.Name
Case EVENT_SELECTED_WORKBOOK_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Worksheet.Parent.Name <> CheckVal.Worksheet.Parent.Name
End Select
'WaitUntil_Event = True
'Include RunVBScript_FileName
End Sub
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////End of Main Sub Program//////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
事件常量定义/////////////////////////////////////////////////////
事件\单元\更改=1'//////////////////////////////////////////////////////////////////////
事件\选定\单元格\更改=2'/////////////////////////////////////////////////////
事件\所选\工作表\更改=3'///////////////////////////////////////////////////
事件\选定\工作簿\更改=4'///////////////////////////////////////
事件常量定义/////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
“//全球计划”/////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
set O=getObject(,“Excel.Application”)
调用WaitUntil_事件(事件单元格更改,O.选择,RtnVar,“空白”)
msgbox RtnVar.address
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
全球计划的结束//////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
主要子计划的开始/////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这个程序是由///////////////////////////////////////////////////////
“//本·阿伦斯(2019年4月5日)///////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
子WaitUntil_事件(EventType、CheckVal、ByRef ReturnVariable、RunVBScript_文件名)
出错时继续下一步
LoopedCycleTime=50
WaitUntil_SelectionChange=False
'msgbox事件\单元\更改
选择案例事件类型
案例事件\单元\变更
设置CheckVal=O。选择
做
设置CheckVal=O。选择
Val=检查Val.值
做
WScript.Sleep LoopedCycleTime
循环直到O.Selection.Address CheckVal.Address
当CheckVal.Value=Val时循环
设置RtnVar=CheckVal
案例事件\u选定\u单元格\u更改
做
WScript.Sleep LoopedCycleTime
循环直到O.Selection.Address CheckVal.Address
案例事件\u选定\u工作表\u更改
做
WScript.Sleep LoopedCycleTime
循环直到O.Selection.Worksheet.Name CheckVal.Worksheet.Name
案例事件\u选定\u工作簿\u更改
做
WScript.Sleep LoopedCycleTime
循环直到O.Selection.Worksheet.Parent.Name CheckVal.Worksheet.Parent.Name
结束选择
'WaitUntil_Event=True
'包括RunVBScript\u文件名
端接头
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
“/////////////End of Main Sub Program//////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我认为不可能将VBS函数/Sub附加到网页中某个按钮的单击事件,我认为最好的方法是调用该按钮的单击所附加的任何内容。