1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Code4Fun

Beiträge von Code4Fun

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 11. Dezember 2018 um 14:08

    @All: Vielen Dank. Jetzt sind es nur noch Feinheiten. Das grobe tut jetzt mal.

    autoBert: Die Lösung mit Step 3 war einfach nur perfekt. Vielen Dank

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 11. Dezember 2018 um 13:30

    Erst mal vielen Dank. autoBert's Tip mit Step 3 war perfekt. Jetzt habe ich noch folgendes kleines Problem

    Ich sollte noch 3 vorgestellte Tabulatoren parsen. Hier mal die Codezeile, die so nicht geht

    Code
            $line3 = _StringBetween($line2[$i], '<p class="zks_reg_details_content">', {TAB}{TAB}{TAB} & '<br />')

    Wie bilde ich denn sowas ab?

  • Mit _StringBetween nur jedes 1. - 4. - 7. usw. Vorkommen rausfiltern

    • Code4Fun
    • 11. Dezember 2018 um 12:30

    Hallo zusammen,

    ich muss eine XML Seite parsen. Dazu habe ich mir einen ersten großen Block mit _StringBetween rausgesucht. Dann diesen wieder mit _StringBetween unterteilt. Jetzt habe ich meine gewünschten Ergebnisse, jedoch ist es so, dass ich z.B. das 1. Ergebnis benötigte, das 2. und 3. nicht, das 4. wieder, das 5. und 6. nicht, das 7. wieder, usw.

    Wie kann ich denn sowas hinbekommen?

  • Brauche Hilfe beim automatisierten Internet Login

    • Code4Fun
    • 22. November 2018 um 15:52

    Hallo, ich möchte mir gerne eine kleines Skript schreiben, welche sich bei meinem Online Zeitungsverlag anmeldet und dort dann ein PDF herunterlädt.

    Aktuell scheitere ich jedoch schon am Login.

    Was ist bisher habe
    Code
    #include <IE.au3>
    
    ; Create a browser window and navigate to hotmail
    $oIE = _IECreate()
    _IENavigate($oIE, "https://ezeitung.swp.de/digiPaper/html/start.html", 1)
    
    ; get pointers to the login form and username and password fields
    $o_form = _IEFormGetObjByName($oIE, "f1")
    $o_login = _IEFormElementGetObjByName($o_form, "user")
    $o_password = _IEFormElementGetObjByName($o_form, "password")
    
    ; Set field values and submit the form
    _IEFormElementSetValue($o_login, "Mein Benutzername")
    _IEFormElementSetValue($o_password, "Mein Passwort")
    _IEFormSubmit($o_form)
    
    ;Exit
    Alles anzeigen
    Seite überprüfen
    C
    #include <IE.au3>
    #include <MsgBoxConstants.au3>
    
    ; Stellt einen Verweis auf die Sammlung von Formen auf einer Seite her
    ; Und zeigt dann, in einer Schleife, alle Informationen für jede Form an
    
    $oIE = _IECreate()
    _IENavigate($oIE, "https://ezeitung.swp.de/digiPaper/html/start.html",1)
    Local $oForms = _IEFormGetCollection($oIE)
    MsgBox($MB_SYSTEMMODAL, "Formen Informationen", "Es befinden sich " & @extended & " Formen auf dieser Seite")
    For $oForm In $oForms
        MsgBox($MB_SYSTEMMODAL, "Form Information", $oForm.name)
    Next
    Alles anzeigen

    Ergebnis: Es befinden sich 0 Formen auf dieser Seite

    Aber auf der rechten Seite ist doch eindeutig Anmeldung für eZeitung-Kunden zu sehen. Mit E-Mailadresse als Benutzername und dem Passwort.

    Mit F12 bekomme ich folgende Inhalte geliefert:

    <input type="text" required="" id="user" name="user" class="size1of1 ml10">

    <input type="password" required="" id="password" name="password" class="size1of1 ml10">

    Habe leider damit gar keine Erfahrung. Danke für eure erste Unterstützung, werde diese nach dem Login bestimmt nochmals brauchen :thumbup:

  • Frage zum Ergebnisfenster von msg.exe

    • Code4Fun
    • 5. Juli 2018 um 16:59

    Vielen Dank an Alle

  • Frage zum Ergebnisfenster von msg.exe

    • Code4Fun
    • 5. Juli 2018 um 13:36

    Ach Du Sch.....

    Die gute Nachricht. Es geht. Die schlechte. Außer der MsgBox kommt mir der Rest spanisch vor. Ich gehe mal davon aus, dass man so eine "schicke blaue Messagebox" nicht mit Autoit hinbekommt, sondern auf C# oder so setzen müsste.

    Bitnugger: vielen Dank.

  • Frage zum Ergebnisfenster von msg.exe

    • Code4Fun
    • 5. Juli 2018 um 11:28

    Hallo Bitnugger,

    danke für die schnelle Antwort, aber eine Autoit "MessageBox" sieht ganz anderst aus und ich kann in der Zeit, wo die Messagebox aktiv ist, auch noch andere Fenster anklicken. Das ist irgend so ein "Sicherheitsmodus", ich kenne den Begriff aber nicht. Sowas möchte ich aber gerne erzeugen.

    Danke

    P.S. Anbei mal ein Screenshot, damit Ihr euch "ein Bild" davon machen könnt

    20180705_002.jpg

  • Frage zum Ergebnisfenster von msg.exe

    • Code4Fun
    • 5. Juli 2018 um 11:03

    Hallo,

    es gibt unter Windows ja den "net send" Nachfolger msg.exe. Wenn diese ausgeführt wird, erscheint beim Empfänger auf dem Bildschirm mittig die Nachricht und der Rest vom Monitor ist "klick geschützt" (keine Ahnung, wie ich das beschreiben soll). Man muss auf jedenfall die Nachricht entweder mit OK bestätigen, oder aber eine gewisse Zeit warten, bis das Fenster wieder verschwindet.

    Folgende Fragen habe ich:

    1.) wie nennt man diese Art von Fenster im Fachjargon?

    2.) Ich möchte gerne ein ganz einfaches Tool bauen, wo 2 Personen einer 3. Personen mit einem klick auf einen GUI Button eine solche Art von Nachricht versenden können. Vielleicht gibt es ja schon ein ähnliches Projekt, dann würde ich mich natürlich über etwas Sourcecode sehr freuen.

    Wichtig: Das ganze soll keine AD Integration haben. Schön wäre, wenn man das auf den PCs als Dienst laufen lassen könnte und einfach auf einen gewissen Port hören würde.

    Danke

  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 19. Oktober 2017 um 16:59

    Hi alpines,

    bin jetzt ehrlich gesagt etwas erschlagen. Habe das Programmieren ja nie wirklich gelernt, sodass ich mich da erst mal in Ruhe einlesen muss. Ich werde mich dann wieder melden. Vielen Dank

  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 18. Oktober 2017 um 16:31

    OK, Du hast es so gewollt :)

    Ich hoffe niemanden ganz schlecht. Habe es jetzt kurz quick and dirty neutralisiert, vielleicht passt jetzt auch was nicht mehr, aber es geht ja um das Prinzip

    Ziel sollte sein, dass Func _DBConnect($Case) und Func _DatabaseSelection($SelectedDatabase) in einer zentralen *.au3 laufen, welche dann in die indiviuellen Scripte includet werden.

    Die individuellen Scripte haben dann z.B. eine Func _SQLAbfrage($SelectedDatabase, $URL) , kann aber auch anderst sein.

    Bisher habe ich ja (vielleicht nicht in diesem Beispiel) der Reihe nach eine DB geöffnet, mein SQL Statement abgefeuert, meinen Output generiert, die DB geschlossen und dann via Array weiter zur nächsten DB usw. Wie mache ich dass den in einem abfragenden Script. Ich habe da echt Kopfweh, wenn ich mir überlege, von wo nach wo ich da mit Parametern hin und herspringen muss.

    Es wäre schön, wenn mir jemand ein Gerüst baut, damit ich weiß, welche Funktion - mit entsprechenden Parameterübergaben - ich wo genau einbauen muss und wie ich das alles "returne", damit ich die notwendigen Informationen im abfragenden Script übermittelt bekomme.

    Danke!

    Beispiel Code
    C
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <MSSQL.au3>
    #include <UnixTimeMod.au3>
    
    Global $sVersion = "1.2"
    Global $hGUI
    Global $hGUIBreite = 600
    Global $hGUIHoehe = ((@DesktopHeight / 100) * 4)
    Global $sLabel01, $sLabel02, $sInput01, $hButton1, $sqlCon, $sLabel03, $ComboBox, $IP, $IP2 = "10.10.0.31", $IP1 = "10.10.0.30", $SelectedDatabase
    Global $sDatenbanken = "KundenDB1|KundenDB2|KundenDB3"
    Global $sLogfile = FileOpen(@ScriptDir & "\BenutzerSuchen.htm", 10)
    Global $LastLoginTime, $datum, $myCounter = "0"
    Global $CreateATTime
    FileInstall(".\TableSort.js", @ScriptDir & "\TableSort.js")
    
    Opt("TrayAutoPause", 0) ; Script will not be paused when clicking the tray icon.
    Opt("TrayOnEventMode", 1)
    Opt("TrayMenuMode", 1 + 2)
    
    
    #Region ; GUI erstellen
    $hGUI = GUICreate("Benutzer auf lokalen Datenbanken finden - Version: " & $sVersion, $hGUIBreite, $hGUIHoehe, -1, -1) ; GUI mit Überschrift
    $sLabel01 = GUICtrlCreateLabel("Den Benutzer ", 10, 10)
    $sInput01 = GUICtrlCreateInput("", 100, 8, 380, 20)
    $hButton1 = GUICtrlCreateButton("suchen", 500, 8, 80, 20, BitOR($GUI_SS_DEFAULT_BUTTON, $BS_DEFPUSHBUTTON))
    GUISetState(@SW_SHOW)
    #EndRegion ; GUI erstellen
    
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                _MSSQL_End($sqlCon)
                GUIDelete()
                Exit
            Case $hButton1
                _HTMLbauen()
                _DBAbfragen()
        EndSwitch
    WEnd
    
    #Region ; Datenbanken
    Func _DBAbfragen()
        _DBArray()
        Exit
    EndFunc   ;==>_DBAbfragen
    
    Func _DBArray()
        Local $arDatenbanken = StringSplit($sDatenbanken, "|")
        If $arDatenbanken[0] = 1 Then ; Wenn String nicht gesplittet wurde (Seperator nicht enthalten, String leer), dann Fehler
            MsgBox(0, 'Achtung', 'Keine Datenbank gefunden')
        Else
            For $i = 1 To UBound($arDatenbanken) - 1 ; Hier könnte man auch $arDatenbanken[0] statt UBound($arDatenbanken) -1 verwenden, da die Anzahl dort geführt wird
                _DBConnect($arDatenbanken[$i])
            Next
        EndIf
        FileWriteLine($sLogfile, '</tbody>')
        FileWriteLine($sLogfile, '</table>')
        FileWriteLine($sLogfile, '</body>')
        FileWriteLine($sLogfile, '</html>')
        FileClose($sLogfile)
        Local $sDefaultBrowser = RegRead("HKEY_CLASSES_ROOT\http\shell\open\command", "")
        Local $aTrimBrowser = StringSplit($sDefaultBrowser, '-')
        Run($aTrimBrowser[1] & ' "' & @ScriptDir & '\BenutzerSuchen.htm"', "", @SW_MAXIMIZE) ; starten Firefox und öffnet die HTML Seite
        GUIDelete()
        Exit
    EndFunc   ;==>_DBArray
    
    Func _DBConnect($Case) ; Je nach Fall (Case), wird die Funktion unterschiedlich bestückt
        If $Case = "KundenDB1" Then ; ARGE
            $SelectedDatabase = "KundenDB1"
            $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut
        EndIf
        If $Case = "KundenDB2" Then ; ARSTEC
            $SelectedDatabase = "KundenDB2"
            $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut
        EndIf
        If $Case = "KundenDB3" Then ; Ascalia
            $SelectedDatabase = "KundenDB3"
            $DBSelection = _DatabaseSelection($SelectedDatabase) ; Datenbankverbindung wird aufgebaut
        EndIf
    EndFunc   ;==>_DBConnect
    
    Func _DatabaseSelection($SelectedDatabase) ; Zugangsdaten für Datenbank suchen
        If $SelectedDatabase = "KundenDB1" Then
            $URL = "https://fqdn/Kunde1/"
            $IP = $IP1
            $User = "lala"
            $DB = "KundenDB1aberirgendiedochmaleinanderername"
            $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB
        EndIf
        If $SelectedDatabase = "KundenDB2" Then
            $URL = "https://fqdn/Kunde2/"
            $IP = $IP2
            $User = "bubu"
            $DB = $SelectedDatabase
            $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB
        EndIf
        If $SelectedDatabase = "KundenDB3" Then
            $URL = "https://fqdn/Kunde3/"
            $IP = $IP2
            $User = "hohoho"
            $DB = $SelectedDatabase
            $sqlCon = _MSSQL_Con($IP, $User, $Password, $DB) ; IP, User, PW, DB
        EndIf
        ConsoleWrite("Aktuelle Datenbank: " & $SelectedDatabase & @CRLF)
        _SQLAbfrage($SelectedDatabase, $URL)
    EndFunc   ;==>_DatabaseSelection
    #EndRegion ; Datenbanken
    
    Func _SQLAbfrage($SelectedDatabase, $URL)
        Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
        Local $SQLQuery = _MSSQL_Query($sqlCon, "SELECT USERNAME, VORNAME, NACHNAME, user_ID, ENABLED, ANGELEGT_AM, LETZTER_LOGIN FROM USERS where USERNAME like '%" & GUICtrlRead($sInput01) & "%';")
        ; Check for errors
        If @error Then MsgBox($MB_SYSTEMMODAL, "COM Error1", "@error is set to COM error number." & @CRLF & "@error = 0x" & Hex(@error), 1)
        $aSQLQueryErgebnis = $SQLQuery.GetRows
    
        If Not IsArray($aSQLQueryErgebnis) Then
            ConsoleWrite("Keine Daten in " & $SelectedDatabase & " gefunden" & @CRLF)
        Else
            For $i = 0 To UBound($aSQLQueryErgebnis) - 1 ; Hier könnte man auch $arDatenbanken[0] statt UBound($arDatenbanken) -1 verwenden, da die Anzahl dort geführt wird
                $myCounter = $myCounter + 1
    ;~             ConsoleWrite(_ArrayToHTMLTable($aSQLQueryErgebnis, True, True)); Array Zeilenweise in Konsole auslesen
                FileWriteLine($sLogfile, '    <tr>')
                FileWriteLine($sLogfile, '        <td>' & $myCounter & '</td>') ; Nummer
                FileWriteLine($sLogfile, '        <td>' & $SelectedDatabase & '</td>') ; Datenbank
                ConsoleWrite("DB ist: " & $SelectedDatabase & @CRLF) ; Datenbank
                FileWriteLine($sLogfile, '        <td>' & $aSQLQueryErgebnis[$i][0] & '</td>') ; Benutzername
                FileWriteLine($sLogfile, '        <td>' & $aSQLQueryErgebnis[$i][1] & '</td>') ; Vorname
                FileWriteLine($sLogfile, '        <td>' & $aSQLQueryErgebnis[$i][2] & '</td>') ; Nachname
                FileWriteLine($sLogfile, '        <td>' & $aSQLQueryErgebnis[$i][3] & '</td>') ; ID
                If $aSQLQueryErgebnis[$i][4] = "0" Then ; Aktiv
                    FileWriteLine($sLogfile, '        <td>Nein</td>') ;Nein
                Else
                    FileWriteLine($sLogfile, '        <td>Ja</td>') ; Ja
                EndIf
        
            Next
        EndIf
    
        Return $myCounter
    
    EndFunc   ;==>_SQLAbfrage
    Alles anzeigen
  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 18. Oktober 2017 um 15:36

    Hallo Alpine,

    danke für die Hilfe. Es wäre hier zuviel unzähliger unsauberer Code. Es geht mir hier ja auch nur um eine prinzipielle Gedankenstützte.

    Bisher verwende ich ja in meinem Code den #include <MSSQL.au3>

    Wenn ich Dich richtig verstanden habe, dann würde ich jetzt eine z.B. MSSQLConnect.au3 schreiben, welche den #include <MSSQL.au3> beinhaltet.

    In meinem "abfragenden Script" würde ich dann als #include <MSSQLConnect.au3>. Ist das soweit richtig, oder denke ich hier schon falsch?

    Wenn das abfragende Script compiliet wird, enthält es dann die gesamte Logik von MSSQL.au3 und von MSSQLConnect.au3?

    Und wie "returne anschließend das Handle zur MySQL Verbindung um damit weiterzuarbeiten" ich das Handle von MSSQLConnect.au3 in mein "abfragendes Script"?

    Ich will hier von Grund auf meine Scripte neu (und hoffentlich besser) bauen.

    Danke für Deine Gedult.

  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 18. Oktober 2017 um 14:22
    Zitat von alpines

    returne anschließend das Handle zur MySQL Verbindung um damit weiterzuarbeiten.

    Hallo, abgesehen davon das es sich um eine MSSQL handelt (was der übigen Aussage aber keinen Abbruch tut), wäre ich um ein kleines Syntax Beispiel sehr dankbar. Ich raffe es gerade nicht, wie ich die unterschiedlichen Scripte ineinander verbinden, bzw. miteinander compilieren muss. Vermutlich stehe ich blos auf einer sehr dicken Leitung

  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 18. Oktober 2017 um 12:06

    Hallo water,

    Danke für die Idee. Ich vermute hier mich jetzt doch nicht klar genug ausgedrückt zu haben. Ob ich die variable Informationen nur im Script halte oder extern ist ja erst mal egal, hauptsache nur einmal vorhalten. Was mir Kopfzerbrechen macht, ist das ich aktuell pro Script IMMER die DB aufrufe, dort mich authentifiziere, dort meine DB Abfragen durchführe. Ich würde jetzt gerne eine Technik (die ich noch nicht kenne) verwenden, um ein Script "DB" zu schreiben, welches nur die DB Verbindung und Authentifizierung durchführt. In meinen weiteren Scripten "A", "B" usw. möchte ich dann das Script "DB" irgendwie aufrufen, damit im Script "A", "B" usw. die Datenbankverbindung schon "online" ist und ich dort dann direkt mit den unterschiedlichen DB Abfragen anfangen kann. Hoffe es jetzt verständlicher ausgedrückt zu haben. Sorry!

  • MSSQL Abfrage über "Vermittlungsscript"

    • Code4Fun
    • 17. Oktober 2017 um 16:37

    Hallo zusammen,

    ich suche nach einer Optimierungsmöglichkeit für MSSQL Datenbankzugriffe. Aktuell habe ich verschiedene (vermutlich mehr schlecht als recht geschriebene) Autoit Script geschrieben, welche als #include

    Code
    #include <MSSQL.au3>

    beinhalten. Leider ist es zur Zeit so, das ich so um die 40 verschiedene MSSQL Datenbanken der Reihe nach damit abfrage. Das geht soweit auch sehr gut, jedoch habe ich pro Datenbank die Information über die IP Adresse, den Datenbanknamen, den Datenbankbenutzer und das Passwort zu pflegen. Aktuell habe ich - wie oben schon geschrieben, dadurch viele Zeilen generiert, welche vielleicht gar nicht notwendig sind.

    Mein eigentliche Problem ist hierbei jedoch folgendes. Wenn ich nur ein Autoit Script geschrieben hätte, dann würde ich ja auch nur in diesem die ganzen Datenbankverbindungen pflegen müssen. Da ich aber mehrere geschrieben habe, geht diese Pflege ins unermüdliche.

    Jetzt habe ich folgende Idee, welche Ihr bestimmt als total einfach anseht, jedoch habe ich keine Ahnung oder geistigen Ansatz, wie ich das verwirklichen soll.

    Ich würde jetzt ein eigenes, nennen wir es mal "DatenbankVerbindungsScript.au3" schreiben, in welchem die

    Code
    #include <MSSQL.au3>

    integriert ist.

    In diesem Script allein pflege ich ALLE Datenbankverbindungen, d.h. wenn sich an einer DB irgendwas ändert, muss ich nur noch hier was anpassen!

    Jetzt möchte ich dann z.B. ein neues weiteres Script schreiben, welches eine bestimmte Datenbankabfrage durchführt. Wie gelingt es mir, aus diesem Script das DatenbankVerbindungsScript.au3 zu integrieren, sodaß die Abfrage auf die zuvor geöffnete Datenbanken zugreifen kann.

    Vielleicht kann mir jemand einen klitzekleinen Code Ausschnitt mit anheften, damit ich das besser verstehe, das wäre echt Klasse

    Hier auch nochmals zur beispielhaften Verdeutlichung. Wir haben z.B. 40 verschiedene Kundendatenbanken, in welche immer als Benutzername eine E-Mailadresse hinterlegt ist.

    Jetzt schreibe ich (bisher) ein Script - mit alles Datenbankinformation in diesem Script - und arbeite mit mit einem Array der Reihe nach durch die einzelnen Datenbanke, d.h. DB öffnen, DB Abfrage, DB schließen, ab zur nächsten DB usw.

    Vielen Dank für eure Hilfe

  • Drag & Drop in Inputfeld geht nicht mehr?

    • Code4Fun
    • 20. Februar 2017 um 12:01

    Hallo,

    ich habe mir vor 6 Jahren ein Script geschrieben, welches folgende Zeilen enthielt:

    Spoiler anzeigen
    AutoIt
    ; Inputfeld für Programm Name
    $varBezeichnung = GUICtrlCreateInput("", $varInputFeldLinks, 200, $varInputFeldBreite, 25)
    ; Drag und Drop wird akzeptiert
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    
    
    ; Anleitung zum Signieren
    $varAnleitungSignieren = GUICtrlCreateLabel("Bitte ziehen Sie die zu signierende Datei per Drag && Drop in das unten stehende Feld", -1, -1, 400, 30)
    GUICtrlSetPos($varAnleitungSignieren, $varInputFeldLinks, 245)
    
    
    ; Inputfeld für die Datei, welche signiert werden soll
    $varDragAndDropField = GUICtrlCreateInput("", $varInputFeldLinks, 265, $varInputFeldBreite, $varMainWindowHeight - 465)
    ; Drag und Drop wird akzeptiert
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    
    
    ; Die 3 Buttons
    $varSignierenButton = GUICtrlCreateButton("Signieren", $varInputFeldLinks, $varMainWindowHeight - 180, 100, 40)
    $varLoeschenButton = GUICtrlCreateButton("Löschen", $varMitte - 50, $varMainWindowHeight - 180, 100, 40)
    $varBeendenButton = GUICtrlCreateButton("Beenden", $varMainWindowWidth - $varInputFeldLinks - 100, $varMainWindowHeight - 180, 100, 40)
    
    
    ; Verändert den Status eines GUI-Fensters
    GUISetState()
    Alles anzeigen

    Das geht auch heute noch, d.h. ich kann per Drag & Drop eine Datei in das Script ziehen und es wird mir der Pfad zur Datei angezeigt.

    Bei meinem heutigen Script geht das nicht mehr

    Spoiler anzeigen
    AutoIt
    $Label6 = GUICtrlCreateLabel("Bitte Exceltabelle per Drag und Drop hier unten reinlegen", 850, 170, 400, 20)
    $Input3 = GUICtrlCreateInput("", 850, 190, 770, 50)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Das Label ist deaktiviert
    
    
    
    
    $Group2 = GUICtrlCreateGroup("Eingelesene Excel Informationen", 20, 250, 800, 650)
    ;_ErstelleExcelInListView()
    $idListview = GUICtrlCreateListView("", 25, 265, 790, 630) ; Leere Listview wird erstellt.
    ; Spaltenüberschriften werden erzeugt
    _GUICtrlListView_AddColumn($idListview, "Anrede", 50)
    _GUICtrlListView_AddColumn($idListview, "Vorname", 150)
    _GUICtrlListView_AddColumn($idListview, "Nachname", 150)
    _GUICtrlListView_AddColumn($idListview, "Telefon", 100)
    ;_GUICtrlListView_AddColumn($idListview, "Telefax", 100)
    _GUICtrlListView_AddColumn($idListview, "Benutzername", 300)
    _GUICtrlListView_SetItemCount($idListview, 500000)
    $iTimerE2A = TimerInit()
    _Excel2Array()
    $iTimerA2L = TimerInit()
    	_GUICtrlListView_AddArray($idListview, $aResult)
    	GUICtrlSetData($Label8, "Ladezeit Erstellung Array2ListView: " & TimerDiff($iTimerA2L) / 1000 & " Sekunden") ;
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    
    
    $Group3 = GUICtrlCreateGroup("Erstelltes XML von Excel Informationen  für die Webservices", 850, 250, 770, 650)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    
    
    GUISetState(@SW_SHOW)
    Alles anzeigen

    Was mache ich denn hier falsch?

    Gruß C4F

  • FritzBox-Anrufmonitor über TCP

    • Code4Fun
    • 16. Februar 2017 um 12:33

    Hat zwar jetzt gar nichts mit Autoit zu tun, aber vielleicht interessiert es ja doch den einen oder anderen.

    https://www.janrufmonitor.de/

    Nutze ich ab und zu für die FB und ist schon lange auf dem Markt.

  • Vorüberlegung zu neuem Projekt mit Webformularen und Exceltabellen

    • Code4Fun
    • 15. Februar 2017 um 08:58

    OK, habe mich jetzt etwas eingelesen. Werde das ganze mit der FF.au3 machen, da Firefox der Browser meiner Wahl ist. Das ganze funktioniert auch schon recht gut, allerdings hätte ich gerade zu FF.au3 folgende Frage, da ich hier die Funktionsweise noch nicht verstanden habe.

    Hier mal mein bisheriger Testcode

    Spoiler anzeigen
    AutoIt
    #include <FF.au3>
    Global $sVorname = "TestVorname"
    Global $sNachname = "TestNachname"
    Global $sTelefon = "+49123456789"
    Global $sEMail = $sVorname & "." & $sNachname & "@abc.local"
    Global $sPasswort = "geheim"
    _FFStart("https://www.urlvomportal.local/benutzer.htm?method=search") ; Internetseite "Benutzerverwaltung" wird geladen
    If _FFIsConnected() Then ConsoleWrite("https://www.urlvomportal.local/benutzer.htm?method=search war in " & @extended & " ms geladen" & @CRLF) ; Gibt aus, wie lange die Seite zum Laden gebraucht hat.
    _FFClick(_FFXPath(".//*[@id='benutzerDatatable_buttons']/div/input")); Klickt auf "Benutzer anlegen"
    _FFSetValue($sVorname, "vorname", "id") ; schreibt den Vorname in das Feld "Vorname"
    _FFSetValue($sNachname, "nachname", "id") ; schreibt den Nachname in das Feld "Nachname"
    _FFSetValue($sTelefon, "telefon", "id") ; schreibt die Telefonnummer in das Feld "Telefon"
    _FFSetValue($sEMail, "benutzername", "id") ; schreibt die E-Mailadresse in das Feld "Benutzername (E-Mail-Adresse)"
    _FFSetValue($sPasswort, "neuesPasswort", "id") ; schreibt das Passwort in das Feld "Neues Passwort"
    _FFSetValue($sPasswort, "neuesPasswortBestaetigung", "id") ; schreibt das Passwort in das Feld "Neues Passwort bestätigen"
    _FFClick(_FFXPath(".//*[@id='btnBenutzerdatenSpeichern']")); Klickt auf "Speichern"
    Alles anzeigen

    In Zeile 8 wird ja - wenn ich es richtig verstanden habe - gewartet, bis die URL https://www.urlvomportal.local/benutzer.htm?method=search vollständig geladen wurde. Danach erst geht es weiter.

    Wenn ich aber in Zeile 9 auf den Button "Benutzer anlegen" klicke, ändert sich meine URL in https://www.urlvomportal.local/benutzer.htm?method=edit&noValidation=true
    Ich würde jetzt gerne hier auch "zur Sicherheit" ein _FFIsConnected() einbauen, welches mein Script erst weiter laufen lässt, wenn auch die URL https://www.urlvomportal.local/benutzer.htm?method=edit&noValidation=true komplett geladen ist.


    Wie mache ich denn sowas?

  • Vorüberlegung zu neuem Projekt mit Webformularen und Exceltabellen

    • Code4Fun
    • 14. Februar 2017 um 10:02

    Hallo zusammen,

    ich würde mir gerne mit Autoit ein wenig Arbeit ersparen. Aktuell soll ich diverse neue Benutzer in einem Webformular anlegen. Die notwendigen Daten finde ich in einer Exceldatei. Ich könnte jetzt sicherlich sehr unprofessionell mit Tabs und Koordinaten arbeiten, möchte jedoch im Vorfeld im Forum fragen, wie Ihr sowas angehen würdet.

    Wenn ich auf der entsprechenden Webseite bin, erwartet mich folgendes:


    • Web Schaltfläche "Benutzer anlegen", dann erscheint eine neue Seite mit ...
    • Dropdown mit "Herr" oder "Frau" auswählen
    • Inputfeld mit Vorname
    • Inputfeld mit Nachname
    • Inputfeld mit Telefonnummer
    • Inputfeld mit Benutzername
    • 2 Inputfelder mit Passwort
    • Web Schaltfläche "Speichern". Wenn ich das anklicke, komme ich wieder auf die Webseite von Punkt 1.

    Da sich so Webseiten ja auch ab und zu mal "Zeit lassen", stellt sich mir natürlilch die Frage, wie ich kontrollieren kann, ob das von mir erwartete Fenster schon da ist, oder ob ich noch warten muss.

    Habe mit dem ganzen Webzeugs in Verbindung mit Autoit noch gar keine Erfahrung und bitte euch, mich mal in die richtige Richtung zu schupsen. Vielleicht gibt es ja auch ein Beispielcode, den man als Neuling verstehen kann.

    Vielen Dank

    C4F

  • Array vorne erweitern

    • Code4Fun
    • 9. Februar 2017 um 13:16

    Danke für die Hilfe. Ich denke jetzt habe ich ja meine Hausaufgaben vor mir und schließe damit diesen Thread.

  • Array vorne erweitern

    • Code4Fun
    • 9. Februar 2017 um 08:52

    Guten Morgen,

    danke für die Beispiele. Grob konnte ich dem Code folgen. Schreibst Du sowas "locker von der Hand weg" oder optimierst Du im nachhinein?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™