IE.au3 bzw Internet Explorer Steuerung: POST-Befehle

  • Mit der IE.au3 können ja Formulare ausgefüllt und abgeschickt werden. Nun Frage ich mich Folgendes: Kann man nicht direkt den Browser anweisen, ein POST auszuführen? das wäre doch deutlich einfacher?!

    danke

  • du meinst "Automatisierung von Webseiten oder Tools, die das in ihren AGBs verbieten" ?

    in wie fern fällt das darunter? alles andere passt garnicht zu der Frage (Keylogger, spaßviren, Bots, Captchas ...)

  • Oh, ich seh grade: Das ist ja alles schon in der IE.au3 drinne! Schau dir mal die Funktion __IENavigate an. (Man beachte den doppelten Underline)

    Spoiler anzeigen
    [autoit]


    ; #INTERNAL_USE_ONLY# ===========================================================================================================
    ; Name...........: __IENavigate
    ; Description ...: ** Unsupported version of _IENavigate (note second underscore in function name)
    ; ** Last 4 parameters insufficiently tested.
    ; ** - Flags and Target can create new windows and new browser object - causing confusion
    ; ** - Postdata needs SAFEARRAY and we have no way to create one
    ; Directs an existing browser window to navigate to the specified URL
    ; Parameters ....: $o_object - Object variable of an InternetExplorer.Application, Window or Frame object
    ; $s_Url - URL to navigate to (e.g. "http://www.autoitscript.com")
    ; $f_wait - Optional: specifies whether to wait for page to load before returning
    ; 0 = Return immediately, not waiting for page to load
    ; 1 = (Default) Wait for page load to complete before returning
    ; $i_flags - URL to navigate to (e.g. "http://www.autoitscript.com")
    ; $s_target - target frame
    ; $spostdata - data for form method="POST", non-functional - requires safearray
    ; $s_headers - additional headers to be passed
    ; Return values .: On Success - Returns -1
    ; On Failure - Returns 0 and sets @ERROR
    ; @ERROR - 0 ($_IEStatus_Success) = No Error
    ; - 1 ($_IEStatus_GeneralError) = General Error
    ; - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
    ; - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
    ; - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
    ; - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
    ; - 9 ($_IEStatus_ClientDisconnected) = Client Disconnected
    ; @Extended - Contains invalid parameter number
    ; Author ........: Dale Hohm
    ; Remarks .......: AutoIt3 V3.2 or higher, flags for Tabs require IE7 or higher
    ; Additional information on the navigate2 method here: http://msdn.microsoft.com/en-us/library/aa752134.aspx
    ;
    ; Flags:
    ; navOpenInNewWindow = 0x1,
    ; navNoHistory = 0x2,
    ; navNoReadFromCache = 0x4,
    ; navNoWriteToCache = 0x8,
    ; navAllowAutosearch = 0x10,
    ; navBrowserBar = 0x20,
    ; navHyperlink = 0x40,
    ; navEnforceRestricted = 0x80,
    ; navNewWindowsManaged = 0x0100,
    ; navUntrustedForDownload = 0x0200,
    ; navTrustedForActiveX = 0x0400,
    ; navOpenInNewTab = 0x0800,
    ; navOpenInBackgroundTab = 0x1000,
    ; navKeepWordWheelText = 0x2000
    ;
    ; Additional documentation on the flags can be found here:
    ; http://msdn.microsoft.com/en-us/library/aa768360.aspx
    ; ===============================================================================================================================
    Func __IENavigate(ByRef $o_object, $s_Url, $f_wait = 1, $i_flags = 0, $s_target = "", $s_postdata = "", $s_headers = "")
    __IEErrorNotify("Warning", "__IENavigate", "Unsupported function called. Not fully tested.")
    If Not IsObj($o_object) Then
    __IEErrorNotify("Error", "__IENavigate", "$_IEStatus_InvalidDataType")
    Return SetError($_IEStatus_InvalidDataType, 1, 0)
    EndIf
    ;
    If Not __IEIsObjType($o_object, "documentContainer") Then
    __IEErrorNotify("Error", "__IENavigate", "$_IEStatus_InvalidObjectType")
    Return SetError($_IEStatus_InvalidObjectType, 1, 0)
    EndIf
    ;
    $o_object.navigate($s_Url, $i_flags, $s_target, $s_postdata, $s_headers)
    If $f_wait Then
    _IELoadWait($o_object)
    Return SetError(@error, 0, $o_object)
    EndIf
    Return SetError($_IEStatus_Success, 0, $o_object)
    EndFunc ;==>__IENavigate

    [/autoit]

    Du kannst, wie du siehst die Post Daten via Array bestimmen. Wie genau kann ich dir leider auch nciht sagen. Schau mal hier, da wird es für C++ und VB erklärt:
    http://support.microsoft.com/kb/167658/en-us/

  • letzteres war genau das, was ich auch gefunden habe!

    habe grade in der au3 folgenden hinweis bemerkt:
    Postdata needs SAFEARRAY and we have no way to create one

    Das klingt sehr ernüchternd....

  • Habe einige "Beispiele" ohne den IE gefunden. Sprich über TCP und WinInet Funktionen. Allerdings scheitern die oft (habe das allerdings nur grob überflogen) daran, den "Return" auszugeben, also den quelltext der "neuen" seite. Wenn du dich damit näher befassen möchtest, sollte Google und "AutoIt http POST" bestimmt eine gute Anlaufstelle sein. Vielleicht findest du bei näherer betrachtung ja genau das was du sucht ;)