Also die HTML Seite, welche in Zeile 44 erstellt wird , hat die Inhalte. Jetzt muss ich aber dort auf den Quelltext zugreifen. Und das klappt Irgendwie nicht.
Beiträge von Code4Fun
-
-
So, ich habe jetzt meine ersten Erfahrungen mit WinHttp.au3 gemacht. Da Ihr ja immer gerne Code sehen wollt hier mal mein bisheriger Testcode. Ich habe speziell für dieses Forum einen Benutzeraccount angelegt, sodass ich das gerne life nachspielen könnt. Bis zum Schritt ;(6)Auf den Radio Button Baden-Württemberg klicken komme ich ohne Probleme. Diese Zielseite ist mit anderen Benutzeraccounts etwas "voller".
An dieser Stelle möchte ich jetzt gerne den Quelltext auslesen, komme da aber mit meinen Versuchen nicht so recht weiter und würde hier mal etwas Unterstützung benötigen. Der Quelltext soll dann in die Zwischenablage kopiert werden. Ab da übernimmt dann ein anderes Script von mir den Rest.
Testcode
C
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Run_Tidy=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <WinHttp.au3> $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0') ;Dieser Teil wird später dynamisch $sUserName = 'Code4Fun353' ; dieser Account wurde speziell für das Troubleshooten im Autoit Forum angelegt $sPasswort = 'DasIstDas@2018GeheimeZKSPasswort' ; Dieses Passwort ist echt und darf im Autoit Forum für Tests gerne verwendet werden. ;Variablen $iCount = 1 ;host $sServerName = 'leanv.zks-abfall.de' $hConnect = _WinHttpConnect($hSession, $sServerName) ;(1)Aufruf der Seite: https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start (GET) $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?BTN-initRegistration=start') _FileWrite($sPaket) ;(2)rechts oben auf Anmelden klicken (GET) $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?action=displaylogin', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start') _FileWrite($sPaket) ;(3)Benutzername und Passwort senden (POST) $sPOST = 'action=login&uname=Code4Fun353&password=DasIstDas@2018GeheimeZKSPasswort&login=login' $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST) _FileWrite($sPaket) ;(4)Unter Menü Registrierung/Stammdatenpflege auf Registrierung/Stammdaten klicken (GET) $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', 'LaenderEANV_Web/registrierung?BTN-initRegistration=start', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung') _FileWrite($sPaket) ;(5)Auf die große blaue Schaltfläche Registrierung/Stammdatenpflege klicken (POST) $sPOST = 'BTN-auswahl=Registrierung / Stammdatenpflege' $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/stammdaten', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?BTN-initRegistration=start', $sPOST) _FileWrite($sPaket) ;(6)Auf den Radio Button Baden-Württemberg klicken $sPOST = 'chooseBL=H&ok=Übernehmen' $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', 'LaenderEANV_Web/stammdaten?action=auswahl', 'https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten', $sPOST) _FileWrite($sPaket) ;(7)Den Quelltest der geladenen Internetseite auslesen _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hSession) Func _FileWrite($sHTML, $Zusatz = "") ConsoleWrite($iCount & "Vote" & $Zusatz & @CRLF) FileDelete($iCount & "Vote" & $Zusatz & ".html") FileWrite($iCount & "Vote" & $Zusatz & ".html", $sHTML) $iCount += 1 EndFunc ;==>_FileWrite -
Guten Morgen,
ich habe das Problem bei mir gefunden. Beim Au3Check hatte ich auch die Option "Also stop on warnings" aktiv. Nachdem ich diese Option wieder deaktiviert habe, konnte ich das Script laufen lassen. Über eure unterschiedlichen Meinungen bin ich sehr dankbar, jedoch möchte ich als Anfänger etwas technische Unterstützung und werde von daher erstmalaktiv lassen.
Falls wir uns hier nicht mehr hören, wünsche ich euch allen frohe Weihnachten.
-
Hallo zusammen,
erst mal vielen Dank für eure Hilfe, freut mich riesig. Ich habe in mein Script jetzt den
eingebaut und schon ein paar Zeilen zum Thema gescriptet.
Ebenso habe ich aber auch die Zeile
CodeOpt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersuchein meinem Script. Wenn ich jetzt via F5 einen Testlauf mache, öffnet sich in SciTE ein neuer Tabulator mit der WinHttp.au3 und bricht dort mit ganz vielen Warnungen ab.
Wie geht man denn bei sowas weiter vor?
Nachtrag um 16:10 Uhr:
Habe das auch ohne
CodeOpt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersucheversucht. Das Ergebnis bleibt gleich. Die WinHttp.au3 fängt so an
-
Hallo zusammen,
ich habe heute mal keine technische Frage, sondern eine organisatorische. Wenn ich ein neues Projekt für mich (oder ihr für euch) macht, kann es ja durchaus sein, das man in diesem Projekt Fragen an das Forum hat, welche aber vielleicht unterschiedlicher Natur sind (z.B. Wie baut man eine Schleife oder wie ändere ich die Hintergrundfarbe).
Wie hättet Ihr (ich spreche hier natürlich die TOP Helfer an) das gerne. Sollen wir alle Fragen zum Projekt in einen Thread schreiben, oder pro Frage einen neuen Thread aufmachen. Ich persönlich würde gerne zur "pro Frage einen Thread" tendieren, da man bei der Suche ja als erstes die Überschrift vom Thread liest und sich dadurch vorstellen kann, um was es in diesem Thread geht.
Über eurer Antworten freue ich mich schon, da ich glaube, auch andere Anfänger damit beglücken zu können.
Vielen Dank
-
Die Startseite ist https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten . Ich werde es mal mit WinHTTP versuchen. Vielen Dank
-
Ja habe ich, aber nicht erschrecken. Bin noch in einer Findungsphase und weiß auch nicht, ob ich das so umsetzen will und werde. Aber wenn ich schon an so grundsätzlichen Dingen scheitere .....
Spoiler anzeigen
Code
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=zks.ico #AutoIt3Wrapper_Outfile_x64=ZKS-Teilnehmer-Abfrage_x64.exe #AutoIt3Wrapper_Res_Comment=Anwendung zum Abgleich der aktuellen Teilnehmer bei der ZKS #AutoIt3Wrapper_Res_Description=Automatisches Abrufen der ZKS Postfächer #AutoIt3Wrapper_Res_Fileversion=0.0.1 #AutoIt3Wrapper_Res_LegalCopyright=Code4Fun #AutoIt3Wrapper_Res_Language=1031 #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y #AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #AutoIt3Wrapper_Run_Tidy=y #Tidy_Parameters=/gd /reel /ri /sci 9 /gds /kv 0 /sf #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /mo #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #Region ;Pragma Compile Directives - Könnte mal interessant werden. Hier mal angefügt, damit ich es nicht vergesse ;~ #pragma compile(Out, bubux64.exe) ;~ #pragma compile(x64, true) ;~ #pragma compile(Compatibility, win10) #EndRegion ;Pragma Compile Directives - Könnte mal interessant werden. Hier mal angefügt, damit ich es nicht vergesse #Region ; Mein Spickzettel ( erstellt aus https://autoit.de/index.php?thread/31948-tutorial-sauber-programmieren/) ;~ - Includes / Wrapperbefehle ;~ - AutoIt-Optionen (AutoItSetOption oder Opt) ;~ - Variablendeklaration ;~ - Funktionsdeklaration ;~ - Hauptschleife ;~ Für Meine GUI eventuell notwendig ;~ Button ;~ Icon ;~ InputBox ;~ Label ;~ ListView ;~ Menü ;~ Pic ;~ Scrollbar ;~ Statusbar ;~ Tab ;~ ToolTip ;~ Mögliche Syntax für Variablendeklaration. Bin mal gespannt, ob ich das einhalten und vor allem richtig einhalten kann ;-) ;~ $a<Präfix> - Array, <Präfix> (Optional) bezeichnet den enthaltenen Datentyp ;~ $d - Binärdaten ;~ $h - Handle ;~ $id - Eine AutoIt-ControlID (Rückgabe der GUICtrlCreate-Befehlsreihe) ;~ $i - Ganzzahl ;~ $b - Bool'scher Wert (True & False) ;~ $f - Fließkommazahl ;~ $n - Zahl (Egal ob Fließkommazahl oder Ganzzahl) ;~ $s - Zeichenkette ;~ $v - Variant (Wechselnder oder unbekannter Datentyp) ;~ $p - Zeiger ;~ $t - Rückgabewert von DllStructCreate ;~ $tag - String mit Bildungsvorschrift der DllStruct (Übergabe an DllStructCreate) ;~ Funktionsaufrufe ;~ müssen immer mit einem Unterstrich beginnen, also ;~ Func _DasIstMeinFunktionsName() ;~ ...mach was ;~ EndFunc ;_DasIstMeinFunktionsName ;~ Bemerkungen; ;~ #OnAutoItStartRegister "function" könnte für mich interessant sein. Somit könnte ich gleich beim Starten alle Postfächer durchlaufen und eine Meldung nur anzeigen, bis es fertig ist. #EndRegion ; Mein Spickzettel ( erstellt aus https://autoit.de/index.php?thread/31948-tutorial-sauber-programmieren/) #Region ; mögliche Includes einbinden, bzw. nur die notwendigen einbinden. ; GUI-Stile für Controls: ; URL in normalen Explorer kopieren: mk:@MSITStore:c:\program%20files%20(x86)\autoit3\autoit.chm::/html/appendix/GuiStyles.htm #include <AVIConstants.au3> ; für AVI #include <ButtonConstants.au3> ; für Button, Group, Radio, Checkbox #include <ComboConstants.au3> ; für Combobox #include <ColorConstants.au3> ; für Farben #include <Constants.au3> ; aus GUI-Referenz - MessageLoop Modus Beispiel, Tray, Run #include <DateTimeConstants.au3> ; für Date, MonthCal #include <DirConstants.au3> ; für Directory #include <EditConstants.au3> ; für Edit, Input #include <FileConstants.au3> ; für File #include <FontConstants.au3> ; für Font #include <GUIConstantsEx.au3> ; für GUI Create, events #include <GUITab.au3> ; für GUI Tabulatoren #include <InetConstants.au3> ; für Inet #include <MsgBoxConstants.au3> ; für MsgBox #include <ListboxConstants.au3> ; für List #include <ListViewConstants.au3> ; für ListViews #include <ProgressConstants.au3> ; für Progress #include <RichEditConstants.au3> ; für Edit, Input (Richtext oder so) #include <SliderConstants.au3> ; für Slider #include <StaticConstants.au3> ; für Label, Pic, Icon #include <StringConstants.au3> ; für String #include <TabConstants.au3> ; für Tab (falls ich damit arbeite) #include <TreeViewConstants.au3> ; für TreeView #include <WindowsConstants.au3> ; für GUI erweitere Stile, Windows ; UDFs: Include-Dateien der Konstanten: ; URL in normalen Explorer kopieren: mk:@MSITStore:c:\program%20files%20(x86)\autoit3\autoit.chm::/html/libfunction_constants.htm #EndRegion ; mögliche Includes einbinden, bzw. nur die notwendigen einbinden. #Region ; Script Kopf #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.5 Author: Code4Fun Script Function: GUI Script zum Auslesen unserer ZKS Postfächer, zur Ermittlung der aktiven Teilnehmer Erstellungendatum: vom 14.12.2018 bis Änderungsdatum: Version: 0.0.1 History: 0.0.1: Initialerstellung 0.0.2: #ce ---------------------------------------------------------------------------- #EndRegion ; Script Kopf #Region ; AutoIt-Spezifischen Optionen Opt("GUICloseOnESC", 1) ; Wenn man die ESC Taste drückt, wird die GUI geschlossen, da eine $GUI_EVENT_CLOSE Nachricht gesendet wird Opt("MustDeclareVars", 1) ; Variablen (Dim / Global / Local / Const) müssen deklariert sein. Wichtig für Fehlersuche ;Opt("TrayIconDebug", 1) ; Zeigt die aktuelle Skriptzeile im Trayicon Tipp um das Debugging zu unterstützen #EndRegion ; AutoIt-Spezifischen Optionen #Region ; Globale Variablendeklaration Global $iMsg, $hMainGUI, $hSub1GUI, $hSub2GUI ; GUI Variablen Global $iWidth01 = 1024, $iWidth02 = 1004, $iWidth03 = 984, $iWidth04 = $iWidth02 - 20 ; Positionsvariablen Weite Global $iHeight01 = 768, $iHeight02 = 60, $iHeight03 = 35, $iHeight04 = 670, $iHeight05 = 18, $iHeight06 = $iHeight02 - 30 ; Positionsvariablen Höhe Global $iLeft01 = 10, $iLeft02 = 20, $iLeft03 = 25, $iLeft04 = 480, $iLeft05 = 30, $iLeft06 = 150, $iLeft07 = 240, $iLeft08 = 350, $iLeft09 = 440 ; Positionsvariablen Abstand von Links Global $iTop01 = 5, $iTop02 = 25, $iTop03 = 75, $iTop04 = 100, $iTop05 = 130, $iTop06 = 140 ; Positionsvariablen Abstand von Oben Global $sColor_Weiss = '0xFFFFFF' ; Hintergrundfarbe Weiss Global $sColor_Gelb = '0x00FFFF' ; Hintergrundfarbe Gelb Global $sColor_Gruen = '0x00FF00' ; Hintergrundfarbe Grün Global $sColor_Rot = '0x0000FF' ; Hintergrundfarbe Rot Global $sAnwendungsName = 'ZKS Abfragen' Global $idGroup01, $idGroup02 ; Gruppierungsvariablen Global $idLabel01 ; Label Variablen Global $idLabelKonto01, $idLabelKonto02, $idLabelKonto03, $idLabelKonto04, $idLabelKonto05, $idLabelKonto06, $idLabelKonto07, $idLabelKonto08, $idLabelKonto09, $idLabelKonto10, $idLabelKonto11, $idLabelKonto12, $idLabelKonto13, $idLabelKonto14, $idLabelKonto15, $idLabelKonto16, $idLabelKonto17, $idLabelKonto18 ; Variablen vom Label KONTO Global $idLabelBeschreibung01, $idLabelBeschreibung02, $idLabelBeschreibung03, $idLabelBeschreibung04, $idLabelBeschreibung05, $idLabelBeschreibung06, $idLabelBeschreibung07, $idLabelBeschreibung08, $idLabelBeschreibung09, $idLabelBeschreibung10, $idLabelBeschreibung11, $idLabelBeschreibung12, $idLabelBeschreibung13, $idLabelBeschreibung14, $idLabelBeschreibung15, $idLabelBeschreibung16, $idLabelBeschreibung17, $idLabelBeschreibung18 ; Variablen vom Label BESCHREIBUNG Global $idLabelZKSBenutzer01, $idLabelZKSBenutzer02, $idLabelZKSBenutzer03, $idLabelZKSBenutzer04, $idLabelZKSBenutzer05, $idLabelZKSBenutzer06, $idLabelZKSBenutzer07, $idLabelZKSBenutzer08, $idLabelZKSBenutzer09, $idLabelZKSBenutzer10, $idLabelZKSBenutzer11, $idLabelZKSBenutzer12, $idLabelZKSBenutzer13, $idLabelZKSBenutzer14, $idLabelZKSBenutzer15, $idLabelZKSBenutzer16, $idLabelZKSBenutzer17, $idLabelZKSBenutzer18 ; Variablen vom Label ZKSBENUTZER Global $idLabelZKSKennwort01, $idLabelZKSKennwort02, $idLabelZKSKennwort03, $idLabelZKSKennwort04, $idLabelZKSKennwort05, $idLabelZKSKennwort06, $idLabelZKSKennwort07, $idLabelZKSKennwort08, $idLabelZKSKennwort09, $idLabelZKSKennwort10, $idLabelZKSKennwort11, $idLabelZKSKennwort12, $idLabelZKSKennwort13, $idLabelZKSKennwort14, $idLabelZKSKennwort15, $idLabelZKSKennwort16, $idLabelZKSKennwort17, $idLabelZKSKennwort18 ; Variablen vom Label ZKSKENNWORT Global $idLabelStatus01, $idLabelStatus02, $idLabelStatus03, $idLabelStatus04, $idLabelStatus05, $idLabelStatus06, $idLabelStatus07, $idLabelStatus08, $idLabelStatus09, $idLabelStatus10, $idLabelStatus11, $idLabelStatus12, $idLabelStatus13, $idLabelStatus14, $idLabelStatus15, $idLabelStatus16, $idLabelStatus17, $idLabelStatus18 ;Variablen vom Label STATUS Global $idTab01, $idTab02, $idTab03, $idTab04 ; Tabulator Variablen Global $idButton01 ; Button Variablen Global $idButtonDetails01, $idButtonDetails02, $idButtonDetails03, $idButtonDetails04, $idButtonDetails05, $idButtonDetails06, $idButtonDetails07, $idButtonDetails08, $idButtonDetails09, $idButtonDetails10, $idButtonDetails11, $idButtonDetails12, $idButtonDetails13, $idButtonDetails14, $idButtonDetails15, $idButtonDetails16, $idButtonDetails17, $idButtonDetails18 ; Variablen vom Button DETAILS #EndRegion ; Globale Variablendeklaration #Region ; GUI Erstellung $hMainGUI = GUICreate($sAnwendungsName, $iWidth01, $iHeight01, -1, -1) ; Hauptfenster $idGroup01 = GUICtrlCreateGroup(" Beschreibung ", $iLeft01, $iTop01, $iWidth02, $iHeight02) $idLabel01 = GUICtrlCreateLabel("Mit diesem Tool können wir unsere ZKS Teilnehmer abfragen. Mit der Suche können Teilnehmer in dieser Liste oder direkt auf der ZKS gesucht werden", $iLeft03, $iTop02, $iWidth03, $iHeight03) GUICtrlCreateGroup("", -99, -99, 1, 1) $idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04) $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen") ; 1. Tabulator erstellen $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default) ; Abfrage Schaltfläche erstellen _WriteLabel01() ; Funktion zur Erstellung der Überschriften $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen") ; 2. Tabulator erstellen $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition GUISetState(@SW_SHOW) ; GUI aktualisieren. _GUICtrlTab_SetCurSel($idTab01, 0) ; Tabulator "Teilnehmer abfragen" wieder den Focus geben GUISetState(@SW_SHOW, $hMainGUI) ; GUI aktualisieren. #EndRegion ; GUI Erstellung #Region ; Hauptschleife $iMsg = 0 While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $idButton01 _Button01() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd GUIDelete($hMainGUI) #EndRegion ; Hauptschleife #Region ; Funktionen Func _Button01() ; erstellt alle notwendigen Labels ; EndFunc ;==>_Button01 Func _WriteLabel01() ; Überschrift erstellen GUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert) $idGroup01 = GUICtrlCreateGroup("", $iLeft02, $iTop05, $iWidth04, $iHeight06) ; Rahmen um die Überschrift legen $idLabelKonto01 = GUICtrlCreateLabel("Kontoinhaber / Rolle | ", $iLeft05, $iTop06, Default, $iHeight05) GUICtrlSetBkColor($idLabelKonto01, $sColor_Weiss) $idLabelBeschreibung01 = GUICtrlCreateLabel("Beschreibung | ", $iLeft06, $iTop06, Default, $iHeight05) GUICtrlSetBkColor($idLabelBeschreibung01, $sColor_Weiss) $idLabelZKSBenutzer01 = GUICtrlCreateLabel("ZKS Benutzername | ", $iLeft07, $iTop06, Default, $iHeight05) GUICtrlSetBkColor($idLabelZKSBenutzer01, $sColor_Weiss) $idLabelZKSKennwort01 = GUICtrlCreateLabel("ZKS Kennwort | ", $iLeft08, $iTop06, Default, $iHeight05) GUICtrlSetBkColor($idLabelZKSKennwort01, $sColor_Weiss) $idButtonDetails01 = GUICtrlCreateButton("Details", $iLeft09, $iTop06 - 1, Default, $iHeight05) GUICtrlSetBkColor($idButtonDetails01, $sColor_Weiss) GUISetState(@SW_SHOW) EndFunc ;==>_WriteLabel01 #EndRegion ; Funktionen -
OK, das hat jetzt funktioniert, aber irgendwie aktualisiert sich die GUI nicht richtig. Die GUI wird jetzt so erstellt
Code$idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04) $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen") ; 1. Tabulator erstellen $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default) ; Abfrage Schaltfläche erstellen _WriteLabel01() ; Funktion zur Erstellung der Überschriften $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen") ; 2. Tabulator erstellen $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition _GUICtrlTab_SetCurSel($idTab01, 0) ; Tabulator "Teilnehmer abfragen" wieder den Focus geben GUISetState(@SW_SHOW, $hMainGUI) ; GUI aktualisieren.Die Funktion _WriteLabel01() startet mit
CodeGUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert)Wenn ich mit F5 ausführe, lande ich auch auf dem 1. Tab, aber es ist kein Inhalt zu sehen. Wenn ich dann mit der Maus auf den 2. Tab wechsle und wieder zurück auf den 1. Tab gehe, ist alles da (inklusive meinem Button)
???
-
Hallo Oscar, hallo alpines
Danke für den Tip. Irgendwie will das bei mir nicht so richtig
Code
Alles anzeigen#Region ; GUI Erstellung $hMainGUI = GUICreate($sAnwendungsName, $iWidth01, $iHeight01, -1, -1) ; Hauptfenster $idTab01 = GUICtrlCreateTab($iLeft01, $iTop03, $iWidth02, $iHeight04) $idTab02 = GUICtrlCreateTabItem("Teilnehmer abfragen"); 1. Tabulator erstellen $idButton01 = GUICtrlCreateButton("ZKS anfragen", $iLeft04, $iTop04, Default, Default); Abfrage Schaltfläche erstellen _WriteLabel01(); Funktion zur Erstellung der Überschriften $idTab03 = GUICtrlCreateTabItem("Teilnehmer suchen"); 2. Tabulator erstellen $idTab04 = GUICtrlCreateTabItem("") ; Beendet die Tab Definition GUISwitch($hMainGUI, $idTab02) ; wieder auf den 1. Tab wechseln (was irgendwie nicht funktioniert) GUISetState(@SW_SHOW, $hMainGUI); GUI aktualisieren. #EndRegion ; GUI ErstellungEs ist immer der Tabulator $idTab03 aktiv.
Wo denke ich hier falsch
-
Hallo zusammen,
Ich erstelle gerade eine klein GUI, welche 2 Tabulatoren hat. Auf dem ersten Tabulator habe ich einen Button gesetzt. Diese ist nur dort sichtbar. Wenn ich den Button betätige, sollen für diesen Tab weitere Labels usw. erstellt werden. Das funktioniert auch, aber leider sehe ich diese Labels auch auf dem 2. Tab. Was mache ich hier falsch? Muss man den 1. Tab irgendwie vorher wieder den Focus geben?
-
Danke für eure Meinungen. Ich darf euch versichern, es ist im legalen Rahmen.
-
Ich habe den Quelltext mal in Notepad++ reinkopiert und dort dann "alle Zeichen anzeigen" aktiviert. Es erscheint zwischen / und Bevoll*** ein oranger Punkt. Wenn ich jedoch irgendwie die Leertaste drücke, wird genau dieser orange Punkt generiert. Was ich halt nicht verstehe, ist der Unterschied zwischen Scriptausführung via F5 und der kompilierten Version. Bei bekommen den gleichen Inhalt der Zwischenablage zur Verfügung gestellt, aber mit der kompilierten Version klappt es nicht.
-
Hallo,
ich möchte mich die nächste Zeit wieder mal ein wenig mit autoit beschäftigen. Leider habe ich in den Tutorials noch keine Anleitung gefunden, von daher schreibe ich mein Anliegen hier mal rein, mit der Hoffnung, das mir jemand den einen oder anderen Link zum Nachlesen zur Verfügung stellt.
Was soll erreicht werden!
Ich muss mich bei einer Internetseite anmelden (mit unterschiedlichen Accounts), dann sollte ich irgendwie überprüfen können, ob die Site fertig geladen hat (ab und zu scheint - je nach Inhalt - der Browser mit Proxyfehlern weg zu fliegen, vermutlich wegen des Apache Timeout). Wenn als nicht sauber geladen wurde, nochmals versuchen, ansonsten weiter. Danach muss ich dann diverse Schaltflächen drücken. Wie lese ich sowas für Internetseiten aus, bzw. wie kann ich die mit autoit schalten, ohne mit den Koordinaten fahren zu müssen? Wenn ich auf der Zielseite bin, muss ich den Quelltext auslesen und extrahieren. Diesen Teil habe ich schon ein wenig vorbereitet, da ich ja den Teil davor bisher alles von Hand gemacht habe.
Aktuell befülle ich pro Site eine Textdatei. Das Ziel meiner Kollegen wäre die Befüllung einer Exceltabelle. Mir persönlich wäre aber eine einzig GUI mit Listviews am liebsten. Ich weiß das sind jetzt viele unterschiedliche Dinge. Ich wollte das nur mal alles auf den Tisch legen, damit Ihr wisst, wohin die Reise gehen soll. Am liebsten wäre es mir, wenn man mit der integrierten Lösung von autoit das hinbekommt und nicht auf eine Firefox oder IE Lösung zugreifen muss. So einfach wie möglich.
Konkret suche ich aktuell erst mal eine Anleitung (vielleicht mit ein paar Fallbeispielen), wie ich die Internetseite aufrufen, den Login finde, dort die Anmeldung automatisieren kann, auf das Laden der Site warte und dann noch weitere Schaltflächen anklicke um zur Ziel Site zu kommen. Gibt es da irgendwo ein gutes Tutorial? Ich habe leider nichts gefunden.
Vielen Dank euch allen.
-
Würdet Ihr das bitte mal kontrollieren, ob ich das so richtig eingefügt habe. Ich bekomme nämlich kein OK, auch nicht, wenn ich es mit dem Erzeuger versuche
Code
Alles anzeigenFor $i = 0 To UBound($line2) - 1 ; Abfrage der einzelnen Blöcke aus $line2 $line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', @TAB & @TAB & @TAB & '<br />') ; Richtigen String ausfindig machen FileWrite(@ScriptDir & "\error.log", $line3[0]) If StringSplit($line3[0], '/')[2] = " Bevollmächtigter des Erzeugers" Then ;"OK" in errorfile schreiben FileWrite(@ScriptDir & "\error.log", "OK") EndIf ; gefundene Strings durch Abkürzung ersetzen Select Case StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1) Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV") -
Hallo Moombas,
also
CodeCase StringInStr($line3[0], 'Bevollmächtigter des Erzeugers', '', 1) Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")hat gar nichts gebracht. Ergebnis ist immer noch gleich (schlecht). Obigen Vorschlag werde ich mal einbauen.
Was ich aber nicht verstehe
1.) warum soll ich '/' als Trennzeichen verwenden (sind doch Leerzeichen)
2.) ist das Leerzeichen vor Bevollmächtigter bewußt eingesetzt, damit ich theoretisch 3 Leerzeichen vorfinde?
-
OK, ich habe jetzt das Script etwas umgebaut
Neues Script
Code
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=zks.ico #AutoIt3Wrapper_Res_Comment=Parse die ZKS Seite (Quelltext) nach behördlichen Nummern und Rollen #AutoIt3Wrapper_Res_Description=ZKS Teilnehmernummern und -rollen Parser #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1031 #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y #AutoIt3Wrapper_Run_Stop_OnError=y #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/mo /SCI=1 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; Vorgehensweise: ; 1. Login auf ZKS in einem Postfach, dann den Quelltext anzeigen lassen ; 2. Alles markieren und kopieren, damit sich der Text in der Zwischenablage befindet ; 3. Script laufen lassen. Im Scriptverzeichnis wird eine TXT Datei erstellt, welche als Namen die behördliche Nummern enthält. ; 4. Liste irgendwie noch nach Excel bringen (spätere Priorität) #include <string.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <Array.au3> Opt("MustDeclareVars", 1) Global $guiButton, $guiInput1, $guiInput2, $ReadCombo, $ReadInput, $ZKSFile, $msg GUI() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE GUIDelete() Exit Case $guiButton $ReadInput = GUICtrlRead($guiInput1) $ReadCombo = GUICtrlRead($guiInput2) PARSEN_Dokumentenname() PARSEN_Inhalt() EndSwitch WEnd Func GUI() ; GUI erstellen Local $gui = GUICreate("ZKS Postfach Teilnehmer Parser", 350, 80) $guiButton = GUICtrlCreateButton("Zwischenablage parsen", 80, 20, 200, 40) GUISetState(@SW_SHOW) EndFunc ;==>GUI Func PARSEN_Dokumentenname() ; hier ermittle ich den Provider Namen und erstelle daraus ein Textdatei mit dessen Namen. Local $str, $line1, $line2 $str = ClipGet() ; Zwischenablage abfragen $line1 = _StringBetween($str, '<div class="zks_form_wrapper">', '<!-- Buttons -->') ; Erste Vorauswahl If StringInStr($line1[0], "Provider") Then $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Provider</b>') ; den Postfachnamen rausbekommen falls mit Provider endet EndIf If StringInStr($line1[0], "Sonstiges") Then $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Sonstiges</b>') ; den Postfachnamen rausbekommen falls mit Sonstiges endet EndIf If FileExists(@ScriptDir & "\" & $line2[0] & ".txt") Then ; überprüfen, ob die Datei schon besteht, wenn ja, dann löschen und Variable füllen FileDelete(@ScriptDir & "\" & $line2[0] & ".txt") $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt" Else $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt" ; wenn nein, dann nur Variable füllen EndIf FileWrite(@ScriptDir & "\" & $line2[0] & ".txt", "") ; die eigentliche leere Text Datei erstellen EndFunc ;==>PARSEN_Dokumentenname Func PARSEN_Inhalt() ; hier ermittle ich die verschiedenen Nummern und Rollen Local $str, $line1, $line2, $line3 $str = ClipGet() ; Zwischenablage abfragen $line1 = _StringBetween($str, '<!-- <hr class="zks_separator" />-->', '</table>') ; Erste Vorauswahl $line2 = _StringBetween($line1[0], '<!-- Ruler -->', '<!-- Buttons -->') ; Zweite Vorauswahl ;~ For $i = 0 To UBound($line2) - 1 Step 3 ; Step 3 dachte ich war gut, aber es hat das Ergebnis verfälscht. Ohne ist alles OK For $i = 0 To UBound($line2) - 1 ; Abfrage der einzelnen Blöcke aus $line2 $line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', @TAB & @TAB & @TAB & '<br />') ; Richtigen String ausfindig machen FileWrite(@ScriptDir & "\error.log", $line3[0]) ; gefundene Strings durch Abkürzung ersetzen Select Case StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV") Case StringInStr($line3[0], "Erzeuger") Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ") Case StringInStr($line3[0], "Beförderer") Local $sString = StringReplace($line3[0], "Beförderer", "BEF") Case StringInStr($line3[0], "Entsorger") Local $sString = StringReplace($line3[0], "Entsorger", "ENT") Case StringInStr($line3[0], "Makler") Local $sString = StringReplace($line3[0], "Makler", "MAK") Case StringInStr($line3[0], "kurzfr.Lag./Umschlag") Local $sString = StringReplace($line3[0], "kurzfr.Lag./Umschlag", "ZWL") ;~ Case Else ;~ MsgBox(48, "Keine Ersetzung gefunden", "In der Select Case Anweisung wurde kein String zum Ersetzen gefunden") EndSelect ConsoleWrite($sString) ; Ausgabe des Ergebnis in unteres Output Fenster - zur Kontrolle FileWrite($ZKSFile, $sString) ; Ausgabe in meine Text Datei Next MsgBox(64, "Fertig", "Die Zwischenablage wurde geparst", 1) ; Rückmeldung, das es fertig ist. EndFunc ;==>PARSEN_InhaltHier die ersten 40 Zeilen meiner error.log wo ich die Variable $line3[0] reinschreibe
40 Zeilen aus error.log
A550014075 / Erzeuger
A590007106 / Erzeuger
A59S008096 / Entsorger
A59T000805 / Beförderer
B94103F005 / Erzeuger
BERZ002145 / Erzeuger
C000236909 / Beförderer
C000417101 / Beförderer
C000483073 / Beförderer
C1E0000006 / Entsorger
C1Q0000002 / Entsorger
C4J8000009 / kurzfr.Lag./Umschlag
CBEV001451 / Bevollmächtigter des Erzeugers
CBEV001488 / Bevollmächtigter des Erzeugers
CBM9410003 / Erzeuger
CE00025793 / Erzeuger
CE00026806 / Erzeuger
CE00027044 / Erzeuger
CE00027687 / Erzeuger
CE00027737 / Erzeuger
CS00002250 / Erzeuger
CUX0001507 / Erzeuger
E113T01176 / Beförderer
E124808334 / Beförderer
E151800206 / Beförderer
E151M00542 / Makler
E154021174 / Erzeuger
E313E00015 / Erzeuger
E366212040 / Erzeuger
E374613806 / Erzeuger
E515238071 / Erzeuger
E515571808 / Entsorger
E554205622 / Erzeuger
E558056115 / Erzeuger
E566B00014 / Bevollmächtigter des Erzeugers
E711241957 / Erzeuger
E711722708 / Entsorger
E754A50063 / Entsorger
E758040898 / Erzeuger
F02E915901 / Erzeuger
hier dann das Ergebnis aus der Textdatei, welche aus der komplilierten x64 EXE stammt
hier die 40 Zeilen aus der "kompilierten" Textdatei
A550014075 / ERZ
A590007106 / ERZ
A59S008096 / ENT
A59S008096 / ENT
B94103F005 / ERZ
BERZ002145 / ERZ
BERZ002145 / ERZ
BERZ002145 / ERZ
BERZ002145 / ERZ
C1E0000006 / ENT
C1Q0000002 / ENT
C4J8000009 / ZWL
CBEV001451 / Bevollmächtigter des ERZs
CBEV001488 / Bevollmächtigter des ERZs
CBM9410003 / ERZ
CE00025793 / ERZ
CE00026806 / ERZ
CE00027044 / ERZ
CE00027687 / ERZ
CE00027737 / ERZ
CS00002250 / ERZ
CUX0001507 / ERZ
CUX0001507 / ERZ
CUX0001507 / ERZ
CUX0001507 / ERZ
E151M00542 / MAK
E154021174 / ERZ
E313E00015 / ERZ
E366212040 / ERZ
E374613806 / ERZ
E515238071 / ERZ
E515571808 / ENT
E554205622 / ERZ
E558056115 / ERZ
E566B00014 / Bevollmächtigter des ERZs
E711241957 / ERZ
E711722708 / ENT
E754A50063 / ENT
E758040898 / ERZ
F02E915901 / ERZ
und zum Schluss noch das Ergebnis, wenn ich das Script via F5 laufen lasse
40 Zeilen Text, wenn via F5 die Datei generiert wurde
A550014075 / ERZ
A590007106 / ERZ
A59S008096 / ENT
A59T000805 / BEF
B94103F005 / ERZ
BERZ002145 / ERZ
C000236909 / BEF
C000417101 / BEF
C000483073 / BEF
C1E0000006 / ENT
C1Q0000002 / ENT
C4J8000009 / ZWL
CBEV001451 / BEV
CBEV001488 / BEV
CBM9410003 / ERZ
CE00025793 / ERZ
CE00026806 / ERZ
CE00027044 / ERZ
CE00027687 / ERZ
CE00027737 / ERZ
CS00002250 / ERZ
CUX0001507 / ERZ
E113T01176 / BEF
E124808334 / BEF
E151800206 / BEF
E151M00542 / MAK
E154021174 / ERZ
E313E00015 / ERZ
E366212040 / ERZ
E374613806 / ERZ
E515238071 / ERZ
E515571808 / ENT
E554205622 / ERZ
E558056115 / ERZ
E566B00014 / BEV
E711241957 / ERZ
E711722708 / ENT
E754A50063 / ENT
E758040898 / ERZ
F02E915901 / ERZ
Könnte es sein, das ich bei
CodeCase StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV")die Leerzeichen zwischen "Bevollmächtigter des Erzeugers" irgendwie "anders" schreiben muss?
Wo liegt denn der Unterschied (das ist eine Verständnisfrage für mich) zwischen dem rohen Script und dem kompilierten Script
-
-
Hallo zuammen,
jetzt muss ich das Ticket nochmals anfassen, da mir eine Sache unklar ist. Doch kurz zur Erklärung, was ich bisher mache (soll irgendwann mal perfekter werden, aber eins nach dem anderen)
Ich öffne von Hand eine Internetseite, melde mich dort an, klicke ein paar Schaltflächen, bis ich zur Zielseite komme. Dort lasse ich mir den Quelltext anzeigen und markiere alles und kopiere den Inhalt in die Zwischenablage.
Dann kommt mein Script, welches auch gut funktioniert, bis auf ...
Mein Script
Code
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=zks.ico #AutoIt3Wrapper_Res_Comment=Parse die ZKS Seite (Quelltext) nach behördlichen Nummern und Rollen #AutoIt3Wrapper_Res_Description=ZKS Teilnehmernummern und -rollen Parser #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1031 #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y #AutoIt3Wrapper_Run_Stop_OnError=y #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/mo /SCI=1 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ; Vorgehensweise: ; 1. Login auf ZKS in einem Postfach, dann den Quelltext anzeigen lassen ; 2. Alles markieren und kopieren, damit sich der Text in der Zwischenablage befindet ; 3. Script laufen lassen. Im Scriptverzeichnis wird eine TXT Datei erstellt, welche als Namen die behördliche Nummern enthält. ; 4. Liste irgendwie noch nach Excel bringen (spätere Priorität) #include <string.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <Array.au3> Global $guiButton, $guiInput1, $guiInput2, $ReadCombo, $ReadInput, $ZKSFile GUI() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE GUIDelete() Exit Case $guiButton $ReadInput = GUICtrlRead($guiInput1) $ReadCombo = GUICtrlRead($guiInput2) PARSEN_Dokumentenname() PARSEN_Inhalt() EndSwitch WEnd Func GUI() ; GUI erstellen Local $gui = GUICreate("ZKS Postfach Teilnehmer Parser", 350, 80) $guiButton = GUICtrlCreateButton("Zwischenablage parsen", 80, 20, 200, 40) GUISetState(@SW_SHOW) EndFunc ;==>GUI Func PARSEN_Dokumentenname() ; hier ermittle ich den Provider Namen und erstelle daraus ein Textdatei mit dessen Namen. $str = ClipGet() ; Zwischenablage abfragen $line1 = _StringBetween($str, '<div class="zks_form_wrapper">', '<!-- Buttons -->') ; Erste Vorauswahl If StringInStr($line1[0], "Provider") Then $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Provider</b>') ; den Postfachnamen rausbekommen falls mit Provider endet EndIf If StringInStr($line1[0], "Sonstiges") Then $line2 = _StringBetween($line1[0], '<p class="zks_reg_details_content"><b>', ' / Sonstiges</b>') ; den Postfachnamen rausbekommen falls mit Sonstiges endet EndIf If FileExists(@ScriptDir & "\" & $line2[0] & ".txt") Then ; überprüfen, ob die Datei schon besteht, wenn ja, dann löschen und Variable füllen FileDelete(@ScriptDir & "\" & $line2[0] & ".txt") $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt" Else $ZKSFile = @ScriptDir & "\" & $line2[0] & ".txt" ; wenn nein, dann nur Variable füllen EndIf FileWrite(@ScriptDir & "\" & $line2[0] & ".txt", "") ; die eigentliche leere Text Datei erstellen EndFunc ;==>PARSEN_Dokumentenname Func PARSEN_Inhalt() ; hier ermittle ich die verschiedenen Nummern und Rollen $str = ClipGet() ; Zwischenablage abfragen $line1 = _StringBetween($str, '<!-- <hr class="zks_separator" />-->', '</table>') ; Erste Vorauswahl $line2 = _StringBetween($line1[0], '<!-- Ruler -->', '<!-- Buttons -->') ; Zweite Vorauswahl ;~ For $i = 0 To UBound($line2) - 1 Step 3 ; Step 3 dachte ich war gut, aber es hat das Ergebnis verfälscht. Ohne ist alles OK For $i = 0 To UBound($line2) - 1 ; Abfrage der einzelnen Blöcke aus $line2 $line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', @TAB & @TAB & @TAB & '<br />') ; Richtigen String ausfindig machen ; gefundene Strings durch Abkürzung ersetzen If StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV") EndIf If StringInStr($line3[0], "Erzeuger") And Not StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ") EndIf If StringInStr($line3[0], "Beförderer") Then Local $sString = StringReplace($line3[0], "Beförderer", "BEF") EndIf If StringInStr($line3[0], "Entsorger") Then Local $sString = StringReplace($line3[0], "Entsorger", "ENT") EndIf If StringInStr($line3[0], "Makler") Then Local $sString = StringReplace($line3[0], "Makler", "MAK") EndIf If StringInStr($line3[0], "kurzfr.Lag./Umschlag") Then Local $sString = StringReplace($line3[0], "kurzfr.Lag./Umschlag", "ZWL") EndIf ConsoleWrite($sString) ; Ausgabe des Ergebnis in unteres Output Fenster - zur Kontrolle FileWrite($ZKSFile, $sString) ; Ausgabe in meine Text Datei Next MsgBox(64, "Fertig", "Die Zwischenablage wurde geparst", 1) ; Rückmeldung, das es fertig ist. EndFunc ;==>PARSEN_InhaltFolgendes Problem hab ich irgendwie mit diesen Zeilen
CodeIf StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then Local $sString = StringReplace($line3[0], "Bevollmächtigter des Erzeugers", "BEV") EndIf If StringInStr($line3[0], "Erzeuger") And Not StringInStr($line3[0], "Bevollmächtigter des Erzeugers") Then Local $sString = StringReplace($line3[0], "Erzeuger", "ERZ") EndIfWenn ich das Script via F5 direkt aus SciTE ausrufe, dann wird in der Textdatei der String "Bevollmächtigter des Erzeugers" in den String "BEV" ersetzt.
Wenn ich jedoch das Script für x64 kompiliere und als EXE aufrufe, dann bleibt "Bevollmächtigter des Erzeugers" erhalten.
Sorry, das verstehe ich jetzt überhaupt nicht.
Bräuchte hier bitte mal Unterstützung
Vielen Dank
-
Hallo,
mir ist gerade aufgefallen, als ich eine Autoit EXE in die Taskbar gelegt habe, dass diese, sobald man mit der Maus darüber fährt, sich mit "Aut2Exe" meldet. Was muss ich denn beim Compilieren beachten, um den Programm Namen oder ähnliches zu sehen?

Vielen Dank
-