Code Generator 4 Internetexplorer

  • Dies ist eine Absolute beta und kann noch nicht besonders viel aber ist bereits eingeschränkt nutzbar

    Was Macht das Tool ?
    Kann für IE Links und Buttons sowie Editfeldern das Objekt ermitteln für die weitere verarbeitung

    Bisslang wird nur die "Obj Rückgabe" Funktionieren
    Und auch nur für Objekte die per ID NAME oder HREF zu finden sind

    Geplant ist die Rückgabe aller in IE befindlichen objekte und die Interaggierung mit diesen Objekten

    Anleitung:
    Internetexplorer Öffnen
    Gewünschte Seite Aufrufen
    Tool Starten und mit diesem InternetExplorerfenster verbinden lassen ( z.B. über URL oder Titel )

    Mit der Maus über einen Link, Button oder Input Fahren und am Numpad " + " drücken

    Danach sollte in der der html des Objektes auftauchen, danach einfach auf Code generrieren

    Es wird eine Func ( die immer gleich bleibt ) und ein aufruf dieser Funktion welcher das Objet zurückgiebt gennerriert welcher in ein Script eingefügt werden kann

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <Array.au3>
    #include <String.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{NUMPADADD}", "_ItemMark")

    [/autoit] [autoit][/autoit] [autoit]

    Global $oIE
    Global $iItems
    Global $id = 0, $hGraphic = 0, $uID = 0
    Dim $iItems[300000]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oGui = GUICreate("InfoTool 4 IE by Ezzora", 700, 600, @DesktopWidth - 710, 10)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Gui_Close")
    $oGui_Input_AttachString = GUICtrlCreateInput("Google", 5, 5, 300, 21)
    $oGui_Combo_AttachMode = GUICtrlCreateCombo("", 310, 5, 150, 21)
    GUICtrlSetData(-1, "Titel|WindowTitle|URL|Text|HTML|", "Text")
    GUICtrlSetTip(-1, _
    "Title = Teil des Titels des Hauptdokuments" & @CRLF & _
    "WindowTitle = Teil des gesamten Fenstertitels (anstelle des Dokumenttitels)" & @CRLF & _
    "URL = (Standard) Teilstring oder URL der aktuellen Internetadresse" & @CRLF & _
    "Text = Teilstring im Text des Bodys der aktuellen Seite" & @CRLF & _
    "HTML = Teilstring im HTML des Bodys der aktuellen Seite")

    [/autoit] [autoit][/autoit] [autoit]

    $oGui_Button_AttachStart = GUICtrlCreateButton("Verbinden", 465, 5, 230, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "_AttachStart")

    [/autoit] [autoit][/autoit] [autoit]

    $Gui_Obj_Beschreibung = GUICtrlCreateEdit("", 5, 30, 690, 100)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $oGui_Button_Generate_Code = GUICtrlCreateButton("Code Generieren", 465, 375, 230, 21, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "_Create_Code")
    $Gui_Obj_Code = GUICtrlCreateEdit("", 5, 400, 690, 195)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Gui_Close()
    Exit
    EndFunc ;==>_Gui_Close

    [/autoit] [autoit][/autoit] [autoit]

    Func _AttachStart()
    $oIE = _IEAttach(GUICtrlRead($oGui_Input_AttachString), GUICtrlRead($oGui_Combo_AttachMode))
    If $oIE = 0 Then
    MsgBox(0, "", "Konnte leider nicht zu dem Broser verbinden und starte ihn deshalb")
    $oIE = _IECreate("www.google.de")
    WinSetTitle($oGui, "", 'IE-Informer: Verbunden zu : " ' & _IEPropertyGet($oIE, "locationname") & ' "')
    Else
    WinSetTitle($oGui, "", 'IE-Informer: Verbunden zu : " ' & _IEPropertyGet($oIE, "locationname") & ' "')
    EndIf ;==>_AttachStart
    $iItems = ""
    Dim $iItems[300000]
    _Search_All_Links($oIE)
    _Search_All_Inputs($oIE)
    EndFunc ;==>_AttachStart

    [/autoit] [autoit][/autoit] [autoit]

    Func _Search_All_Links($oObj)
    $oObjekts = ""
    $oObjekts = $oObj.document.getElementsByTagName('A')
    For $oObjekt In $oObjekts
    $iItems[$uID] = $oObjekt
    $uID += 1
    Next
    EndFunc ;==>_Search_All_Links

    [/autoit] [autoit][/autoit] [autoit]

    Func _Search_All_Inputs($oObj)
    $oObjekts = ""
    $oObjekts = $oObj.document.getElementsByTagName('Input')
    For $oObjekt In $oObjekts
    $iItems[$uID] = $oObjekt
    $uID += 1
    Next
    EndFunc ;==>_Search_All_Inputs

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _ItemMark()
    GUICtrlSetData($Gui_Obj_Beschreibung, "Suche Objekt")
    $MousePos = MouseGetPos()
    GUISetState()
    If IsArray($MousePos) Then
    For $i = 0 To UBound($iItems) - 1
    If IsObj($iItems[$i]) Then
    If _IEPropertyGet($iItems[$i], "screenx") < $MousePos[0] And _IEPropertyGet($iItems[$i], "width") + _IEPropertyGet($iItems[$i], "screenx") > $MousePos[0] And _IEPropertyGet($iItems[$i], "screeny") < $MousePos[1] And _IEPropertyGet($iItems[$i], "height") + _IEPropertyGet($iItems[$i], "screeny") > $MousePos[1] Then
    GUICtrlSetData($Gui_Obj_Beschreibung, $iItems[$i] .outerHTML)
    Return
    EndIf
    EndIf
    Next
    EndIf
    EndFunc ;==>_ItemMark

    [/autoit] [autoit][/autoit] [autoit]

    Func _Create_Code()
    $sObj = GUICtrlRead($Gui_Obj_Beschreibung)
    $sObjekt = StringTrimRight(StringTrimLeft($sObj, 1), 1)
    $s1 = StringSplit($sObjekt, " ")
    $xTag = $s1[1]
    For $i = 1 To $s1[0]

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($s1[$i], "name=") Then
    $xSearch = $s1[$i]
    Else
    If StringInStr($s1[$i], "id=") Then
    $xSearch = $s1[$i]
    Else
    If StringInStr($s1[$i], "href=") Then
    $xSearch = $s1[$i]
    Else
    EndIf
    EndIf
    EndIf
    Next
    $Code = ""
    $Code &= "_IEEzzora($oIE,'" & $xTag & "','" & $xSearch & "','Return','0')" & @CRLF & @CRLF
    $Code &= ";~~~~~ Funktion _IEEzzora muss nur 1 mal am ende des Scripts eingebunden werden" & @CRLF & @CRLF
    $Code &= "Func _IEEzzora($_Obj, $_TagName, $_String, $_Aktion,$_newValue)" & @CRLF
    $Code &= " $_Objekts = $_Obj.document.getElementsByTagName($_TagName)" & @CRLF
    $Code &= " For $_Objekt In $_Objekts" & @CRLF
    $Code &= " If StringInStr($_Objekt.outerHTML, $_String) Then" & @CRLF
    $Code &= " If $_Aktion = 'Return' Then Return $_Objekt" & @CRLF
    $Code &= " If $_Aktion = 'Click' Then" & @CRLF
    $Code &= " $_Objekt.click" & @CRLF
    $Code &= " _IELoadWait($_Obj)" & @CRLF
    $Code &= " Return True" & @CRLF
    $Code &= " EndIf" & @CRLF
    $Code &= " If $_Aktion = 'SetValue' Then" & @CRLF
    $Code &= " _IEFormElementSetValue($_Objekt,$_newValue)" & @CRLF
    $Code &= " Return True" & @CRLF
    $Code &= " EndIf" & @CRLF
    $Code &= " EndIf" & @CRLF
    $Code &= " Next" & @CRLF
    $Code &= "EndFunc " & @CRLF
    GUICtrlSetData($Gui_Obj_Code, $Code)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Create_Code

    [/autoit] [autoit][/autoit] [autoit]

    Func _IEEzzora($_Obj, $_TagName, $_String, $_Aktion, $_newValue)
    $_Objekts = $_Obj.document.getElementsByTagName($_TagName)
    For $_Objekt In $_Objekts
    If StringInStr($_Objekt.outerHTML, $_String) Then
    If $_Aktion = "Return" Then Return $_Objekt
    If $_Aktion = "Click" Then
    $_Objekt.click
    _IELoadWait($_Obj)
    Return True
    EndIf
    If $_Aktion = "SetValue" Then
    _IEFormElementSetValue($_Objekt, $_newValue)
    Return True
    EndIf
    EndIf
    Next
    EndFunc ;==>_IEEzzora

    [/autoit]

    Suche noch einen Fähigen mitarbeiter
    meine Schwächen sind
    Regexp und GDI+ welche beide noch benötigt werden

    Sollte sich ein Fähiger finden bitte bei mir melden ( PN danach übergebe ich ICQ oder Skypedaten )

    Wenn Ihr Fehler findet bitte melden damit ich es verbessern kann, vorschläge sind natürlich auh immer gerne gesehen obwhl die Todo noch Sehr lang ist ^^