Also Ich bin dran einen "PageAnalyzer" zu schreiben, der dir für Diverse Objekte in IE die richtige oder bestmögliche ansprechvariante liefert.
nun häng ich aber gerade an einer Obtischen Feinheit, ich möchte ja auch das man bei klick auf die Obj sieht welches Obj gerade gewählt wurd, aus diesemgrund habe ich mich gerade mit Gdiplus auseinandergesetzt mit mehr oder weniger grossen Erfolg
Z.B., wird nun das Obj auch dann markiert wenn es eigendlich schon gelöscht sein sollt
Die Funktion die das Problem auslösst
[autoit]Func _ItemMark()
AdlibUnRegister("_ItemMark")
_GDIPlus_Startup()
If IsDeclared($hGraphic) Then _GDIPlus_GraphicsDispose($hGraphic)
$id = GUICtrlRead($oGUI_List)
$oObj = $iItems[$id]
$iScreenX = _IEPropertyGet($oObj, "screenx")
$iScreenY = _IEPropertyGet($oObj, "screeny")
$iWidth = _IEPropertyGet($oObj, "width")
$iHeight = _IEPropertyGet($oObj, "height")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($oIE)
$hPen = _GDIPlus_PenCreate()
_GDIPlus_PenSetColor($hPen, 0xFFFF0000)
_GDIPlus_GraphicsDrawRect($hGraphic, $iScreenX, $iScreenY, $iWidth, $iHeight, $hPen)
Do
Sleep(100)
_GDIPlus_GraphicsDrawRect($hGraphic, $iScreenX, $iScreenY, $iWidth, $iHeight, $hPen)
Until not (GUICtrlRead($oGUI_List) = $id)
_GDIPlus_Shutdown()
AdlibRegister("_ItemMark", 100)
EndFunc
Das gesamte Script (bis jetzt)
Spoiler anzeigen
#include <IE.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $oIE
Global $iItems
Global $id = 0, $hGraphic = 0
Dim $iItems[200000]
$oGui = GUICreate("InfoTool 4 IE", 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")
$oGui_Button_AttachStart = GUICtrlCreateButton("Verbinden", 465, 5, 230, 21, $WS_GROUP)
GUICtrlSetOnEvent(-1, "_AttachStart")
Global $oGUI_List = GUICtrlCreateTreeView(5, 30, 200, 560, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
$oGui_List_Menu = GUICtrlCreateContextMenu($oGUI_List)
GUICtrlCreateMenuItem("Untersuchen", $oGui_List_Menu)
GUICtrlSetOnEvent(-1, "_ItemCheck")
GUICtrlCreateMenuItem("Markieren", $oGui_List_Menu)
GUICtrlSetOnEvent(-1, "_ItemMark")
Global $oGUI_List_Links = GUICtrlCreateTreeViewItem("Links", $oGUI_List)
Global $oGUI_List_Inputs = GUICtrlCreateTreeViewItem("Inputs", $oGUI_List)
GUISetState(@SW_SHOW)
AdlibRegister("_ItemMark", 100)
While 1
Sleep(100)
WEnd
Func _Gui_Close()
Exit
EndFunc ;==>_Gui_Close
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")
Else
WinSetTitle($oGui, "", 'IE-Informer: Verbunden zu : " ' & _IEPropertyGet($oIE, "locationname") & ' "')
EndIf ;==>_AttachStart
_Search_All_Links($oIE)
_Search_All_Inputs($oIE)
EndFunc ;==>_AttachStart
Func _Search_All_Links($oObj)
$oObjekts = $oObj.document.getElementsByTagName('A')
For $oObjekt In $oObjekts
$uID = GUICtrlCreateTreeViewItem($oObjekt.InnerHTML, $oGUI_List_Links)
$iItems[$uID] = $oObjekt
Next
EndFunc ;==>_Search_All_Links
Func _Search_All_Inputs($oObj)
$oObjekts = $oObj.document.getElementsByTagName('Input')
For $oObjekt In $oObjekts
$uID = GUICtrlCreateTreeViewItem($oObjekt.Name, $oGUI_List_Inputs)
$iItems[$uID] = $oObjekt
Next
EndFunc ;==>_Search_All_Inputs
Func _ItemCheck()
MsgBox(0, "Listview", "angeklickt=" & $iItems[GUICtrlRead($oGUI_List)].outerHTML)
EndFunc ;==>_ItemCheck
Func _ItemMark()
AdlibUnRegister("_ItemMark")
_GDIPlus_Startup()
If IsDeclared($hGraphic) Then _GDIPlus_GraphicsDispose($hGraphic)
$id = GUICtrlRead($oGUI_List)
$oObj = $iItems[$id]
$iScreenX = _IEPropertyGet($oObj, "screenx")
$iScreenY = _IEPropertyGet($oObj, "screeny")
$iWidth = _IEPropertyGet($oObj, "width")
$iHeight = _IEPropertyGet($oObj, "height")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($oIE)
$hPen = _GDIPlus_PenCreate()
_GDIPlus_PenSetColor($hPen, 0xFFFF0000)
_GDIPlus_GraphicsDrawRect($hGraphic, $iScreenX, $iScreenY, $iWidth, $iHeight, $hPen)
Do
Sleep(100)
_GDIPlus_GraphicsDrawRect($hGraphic, $iScreenX, $iScreenY, $iWidth, $iHeight, $hPen)
Until not (GUICtrlRead($oGUI_List) = $id)
_GDIPlus_Shutdown()
AdlibRegister("_ItemMark", 100)
EndFunc ;==>_ItemMark