ловить событие в VBScript - PullRequest
3 голосов
/ 19 марта 2010

ребята. Это сценарий 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")
set buttons = ie.document.getelementsbyname("btnG")

fields(0).value = "some query"
buttons(0).click

ie.quit

Sub OnClickSub()
    MsgBox  "button clicked!", 0
End Sub

Очевидно, buttons(0).click запускает событие onclick кнопки, которое мне каким-то образом нужно отлавливать в моем скрипте, и обеспечивает его некоторой обработкой, такой как запуск OnClickSub().

У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

3 голосов
/ 19 марта 2010

Используйте функцию GetRef, чтобы получить указатель на ваш обработчик событий и привязать его к событию onclick, например:

buttons(0).onclick = GetRef("OnClickSub")

(Очевидно, attachEvent не работает при вызове извне веб-страницы.)

0 голосов
/ 05 апреля 2019

Вот очень простой способ отловить события, которые происходят в 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//////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...