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
Beiträge von SEuBo
-
-
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]
[/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 ;==>__IENavigateDu 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/ -
Schau dir mal die Internet Explorer Objekt Referenz auf MSDN an. (Google!)
Wenn du es dort findest, kannst du den browser mit sicherheit anweisen direkt ein Post zu senden. -
[autoit]
$edit = GUICtrlCreateEdit ("", 0, 0, 500, 600,BitOR($ES_WANTRETURN,$SS_LEFT))
[/autoit]$ES_WANTRETURN -> Enter Taste wird zu einem @CRLF
$SS_LEFT -> Text wird automatisch umgebrochen -
Benutz mal den Style 0x0000 ($SS_LEFT)
-
Wenn du das als funktion machen willst dann macst du einfach ner schleife die alle tasten mit _ispressed abfrägt und wenn sie das ist, dann spielst du einfach nen beep ab
-
Geht mit sicherheit nochmal 50 Zeilen kürzer, würd ich alles in ein Array schreiben, aber mir reicht das so erstmal
-
Hättest mir ja mal vorher sagen können, dass du sowas gecoded hast
Das wird gleich mal integriert - dann kann ich endlcih eine "setupgui" mit Switch statt Select machen
-
[autoit]
Do
[/autoit]
$adlibmsg = GUIGetMsg()
If $adlibmsg = $StopButton Then ExitLoop
$pixel = PixelSearch(95,44, 95,44,0xAD6100)
until IsArray($pixel)Oder halt im OnEvent mode wo das sicherlich einfacher geht.
-
Nicht dass ich wüsste. Jedenfalls nicht mit den Standard-AutoIt Funktionen.
-
An der stelle wo du das AdlibDisable aufrufst kannst du doch einfach noch eine Variable deklarieren
[autoit]Do
[/autoit]
$pixel = PixelSearch(95,44, 95,44,0xAD6100)
until IsArray($pixel) Or ($go = False) -
_restart -> _restart()
AdLibRegister("CheckWin") direkt am Anfang? Wenn das Fenster nicht sofort existiert wird sich dein Script ein einem ewigen Neustarten aufhängen.
Wann soll genau überprüft werden ob das fenster noch existiert?
-
Spoiler anzeigen
[autoit]HotKeySet("{+}","_start")
[/autoit] [autoit][/autoit] [autoit]
Global $GO = FalseWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _start()
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{+}","_stop")
$GO = True
While $GO
Send("Hallo")
Sleep(1000)
WEnd
EndFuncFunc _stop()
[/autoit]
HotKeySet("{+}","_start")
$GO = False
EndFunc -
Spoiler anzeigen
[autoit]#include <_MultiWrite.au3>
[/autoit] [autoit][/autoit] [autoit]
$Multiwrite = FalseGUICreate("")
[/autoit] [autoit][/autoit] [autoit]
$button = GUICtrlCreateButton("On/Off",50,50)
GUISetState()While 1 * Sleep(10)
[/autoit]
$msg = GUIGetMsg()
Switch $msg
Case $button
If $Multiwrite Then
_MultiWrite(0)
TrayTip("MultiWrite","Multiwrite beendet.",3)
$Multiwrite = False
Else
_MultiWrite(1)
TrayTip("MultiWrite","Multiwrite gestartet.",3)
$Multiwrite = True
EndIf
Case -3
Exit
EndSwitch
WEnd -
Oh Gott! Das ist ja schon ewig her o.o
Ich les mich da nachher mal rein (ich bin mir sicher, der Code kann um 300% gekürzt werden).. aber jetzt werd ich erstmal was essen.
In diesem Sinne
PS:
Übrigens solltest du, da es ja offensichtlich um einen Bot geht, dir vielleicht überlegen ob das hier nicht das Falsche Forum ist, bzw. ob du mir nicht lieber ne pm geschickt hättest.
Jetzt sieht jeder diesen 2km langen Code, und weiß was für nen stuss ich mir damals zusammengeproggt habe//EDIT:
ZitatWow, waren die vielen Hotkeysets wirklich nötig???
Ich kann dir mit 100%iger Sicherheit sagen, dass Sie es nicht sind
Damals wusst ich es halt noch nicht besser. -
Das kommt ganz darauf an, welche Version du jetzt meinst. Die von Raupi oder die von mir?
-
<-- Analog. Mein monitor ist ein ganz altes Röhrending.
-
war10ck: Wahrscheinlich die neuste, 3.3.2.0
Win Vista x86, Home Premium. UAC ist aus.
-
Das Control Handling hab ich jetzt mal größtenteils verändert, ich hoffe du blickst da jetzt noch durch:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <guitab.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <array.au3>Global $tabGui[1000], $Tab_ID = 1, $Aktiver_Tab = -1
[/autoit] [autoit][/autoit] [autoit]
Global $tab_name = "Makro"
Dim $TabItem[2][4] = [["TabItem","Tab_Close","NameInput","Letzer Text"],[0,0,0,0]] ; Und hier die dazugehörigen Inputfelder#Region #GUI
[/autoit] [autoit][/autoit] [autoit]
$main_gui = GUICreate("Makro Manager", 405, 150, 437, 143)$new_tab = GUICtrlCreateButton("Neuer Tab", 19, 90, 101, 21, $WS_GROUP)
[/autoit] [autoit][/autoit] [autoit]
$Tab = GUICtrlCreateTab(5, 10, 396, 130)
$TabItem[$Tab_ID][0] = GUICtrlCreateTabItem($tab_name & " " & $Tab_ID)
$TabItem[$Tab_ID][1] = GUICtrlCreateButton("X", 380, 110, 16, 16, $WS_GROUP)
$TabItem[$Tab_ID][2] = GUICtrlCreateInput($tab_name & " " & $Tab_ID, 60, 50, 321, 21)
$TabItem[$Tab_ID][3] = $tab_name&" "&$Tab_IDGUICtrlSetColor(-1, 0xC0C0C0)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0x800000)ConsoleWrite("Erstelle: " & @TAB & "$name["&$Tab_ID&"][0]"&@CRLF&@CRLF)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Name:", 20, 52, 35, 17)GUICtrlCreateTabItem("")
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
#EndRegion #GUIFunc InsertTab()
[/autoit] [autoit][/autoit] [autoit]
$Tab_ID = UBound($TabItem)
ReDim $TabItem[UBound($TabItem)+1][4] ; Den Array für die Inputfelder$TabItem[$Tab_ID][0] = GUICtrlCreateTabItem($tab_name & " " & $Tab_ID)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$TabItem[$Tab_ID][1] = GUICtrlCreateButton("X", 380, 110, 16, 16, $WS_GROUP)
GUICtrlSetColor(-1, 0xC0C0C0)
GUICtrlSetBkColor(-1, 0x800000)
$TabItem[$Tab_ID][2] = GUICtrlCreateInput($tab_name & " " & $Tab_ID, 60, 50, 321, 21)
$TabItem[$Tab_ID][3] = $tab_name&" "&$Tab_IDGUICtrlCreateLabel("Name:", 20, 52, 35, 17)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateTabItem("")_GUICtrlTab_SetCurFocus($tab, $Tab_ID)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc ;==>InsertTab
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
ExitCase $new_tab
[/autoit] [autoit][/autoit] [autoit]
InsertTab()
Case $TabItem[GUICtrlRead($Tab)+1][1]
If UBound($TabItem) > 2 Then
$sel = GUICtrlRead($Tab)+1
GUICtrlDelete($TabItem[$sel][1]) ; Close BUtton
GUICtrlDelete($TabItem[$sel][2]) ; Input Feld
GUICtrlDelete($TabItem[$sel][0]) ; Tab Item
_ArrayDelete($TabItem,$sel)
EndIf
EndSwitchIf GUICtrlRead($TabItem[GUICtrlRead($Tab)+1][2]) <> $TabItem[GUICtrlRead($Tab)+1][3] Then
[/autoit]
GUICtrlSetData($TabItem[GUICtrlRead($Tab)+1][0],GUICtrlRead($TabItem[GUICtrlRead($Tab)+1][2]))
$TabItem[GUICtrlRead($Tab)+1][3] = GUICtrlRead($TabItem[GUICtrlRead($Tab)+1][2])
EndIf
WEndEDIT: Mit der Version von Raupi geht das natürlich alles noch einfacher
Mann, wo war ich wieder mit meinen Gedanken -