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. MojoeB

Beiträge von MojoeB

  • Base32 - Finde den Fehler nicht

    • MojoeB
    • 21. Juni 2023 um 22:38

    Was mir direkt auffällt ist :

    (Außerhalb der Funktionen auf Local)

    Local $_BASE32_DECODE_TABLE[128]

    Local $BASE32_INIT = 0

    Wenn du eine Variable in mehreren Funktionen verwenden möchtest, ohne sie als Parameter zu übergeben, musst du sie als globale Variable deklarieren.
    Das bedeutet, dass du die Variable außerhalb aller Funktionen deklarieren und dann mit dem Schlüsselwort "Global" kennzeichnen musst.
    Dadurch wird die Variable für alle Funktionen im Skript zugänglich.


    Wenn du eine Variable nur in einer Funktion verwenden möchtest, kannst du sie als lokale Variable deklarieren, indem du das Schlüsselwort "Local" verwendest.
    In diesem Fall ist die Variable nur in der Funktion gültig, in der sie deklariert wurde, und kann nicht von anderen Funktionen im Skript verwendet werden.
    Es ist wichtig zu beachten, dass lokale Variablen und globale Variablen unterschiedliche Bereiche haben und sie unterschiedliche Werte haben können, selbst wenn sie denselben Namen haben.
    Wenn du jedoch eine globale Variable änderst, wird sich der Wert der globalen Variable überall im Skript ändern, wo sie verwendet wird.

    Um eine globale Variable in eine Funktion einzuführen, kannst du das Schlüsselwort "ByRef" verwenden.
    Dadurch wird die Variable als Referenz übergeben, sodass Änderungen an der Variable innerhalb der Funktion den Wert der globalen Variable ändern.

    Ich bin kein Profi aber du programmierst noch mehr sprachen oder ?:D du hast immer sehr gute Ansätze für autoit Anfänger. ;)

  • Webdriver Frage

    • MojoeB
    • 21. Juni 2023 um 17:10

    du hast recht, das könnte ich tun.


    Ich weiß ehrlich gesagt nicht richtig ob es einen unterschied macht.

    z.b. muss ich bei einem Seiten Aufruf das Fenster Maximieren bevor er etwas tut, weil sonst er die falschen Buttons ausließt obwohl die per xpath eigentlich eindeutig ist.

  • Webdriver Frage

    • MojoeB
    • 21. Juni 2023 um 08:47

    Hallo zusammen,

    ich hätte eine Frage bezüglich AutoIt und WebDriver. Ich habe den Browser in den Capabilities auf 'headless' gesetzt, um ihn unsichtbar zu machen. Nun ist es zwar noch nicht vorgekommen, aber was sollte ich tun, wenn plötzlich ein Captcha auftaucht, das nur von einem Menschen gelöst werden kann?

    Wie kann ich den Browser wieder sichtbar machen, damit der Benutzer seine Eingaben machen kann, ohne die aktuelle Sitzung neu starten zu müssen oder einen Neustart des Browsers durchzuführen? Es wäre ideal, wenn die neue Sitzung die Daten der alten Sitzung beibehalten könnte.

  • VBA-UDF nach AutoIt

    • MojoeB
    • 19. Juni 2023 um 19:37

    mumpel

    wow das ist sehr gut :), grade getestet einmal Codes lassen sich einfach erstellen.

    Das kann man bestimmt mal gebrauchen. :thumbup: gute arbeit.

  • VBA-Code übersetzen

    • MojoeB
    • 13. Juni 2023 um 19:24

    sry eig. bin ich jetzt schon raus ^^

    aber ich hab nochmal den Chad^^ gefragt, das könntest du aber auch selber ^^.
    ich habe keine Ahnung ob das funktioniert, es kann sein das du ein paar Parameter anpassen musst.

    Code
    Func _Crypt_GetHashParam($hHash, $dwParam, ByRef $pbData, ByRef $pdwDataLen, $dwFlags)
        Local $pDataLen = DllStructCreate("dword")
        Local $pDataPtr = DllStructCreate("byte[" & $pdwDataLen & "]")
        DllStructSetData($pDataLen, 1, $pdwDataLen)
    
        If _CryptAPI_HashParam($hHash, $dwParam, DllStructGetPtr($pDataPtr), DllStructGetPtr($pDataLen), $dwFlags) = 0 Then
            Return SetError(1, 0, 0)
        EndIf
    
        $pdwDataLen = DllStructGetData($pDataLen, 1)
        $pbData = DllStructGetData($pDataPtr, 1)
        Return 1
    EndFunc
    
    Func _Crypt_AcquireContext(ByRef $phProv, $pszContainer, $pszProvider, $dwProvType, $dwFlags)
        Local $hProv = DllStructCreate("handle")
        Local $pszContainerPtr = 0
        Local $pszProviderPtr = 0
    
        If $pszContainer <> "" Then
            $pszContainerPtr = DllStructCreate("char[" & StringLen($pszContainer) + 1 & "]")
            DllStructSetData($pszContainerPtr, 1, $pszContainer)
            $pszContainerPtr = DllStructGetPtr($pszContainerPtr)
        EndIf
    
        If $pszProvider <> "" Then
            $pszProviderPtr = DllStructCreate("char[" & StringLen($pszProvider) + 1 & "]")
            DllStructSetData($pszProviderPtr, 1, $pszProvider)
            $pszProviderPtr = DllStructGetPtr($pszProviderPtr)
        EndIf
    
        If _CryptAPI_AcquireContext(DllStructGetPtr($hProv), $pszContainerPtr, $pszProviderPtr, $dwProvType, $dwFlags) = 0 Then
            Return SetError(1, 0, 0)
        EndIf
    
        $phProv = DllStructGetData($hProv, 1)
        Return 1
    EndFunc
    
    Func _CryptAPI_HashParam($hHash, $dwParam, $pbData, $pdwDataLen, $dwFlags)
        Local $advapi32 = DllOpen("advapi32.dll")
        Local $ret = DllCall($advapi32, "int", "CryptGetHashParam", "handle", $hHash, "dword", $dwParam, "ptr", $pbData, "ptr", $pdwDataLen, "dword", $dwFlags)
        DllClose($advapi32)
        Return $ret[0]
    EndFunc
    
    Func _CryptAPI_AcquireContext($phProv, $pszContainer, $pszProvider, $dwProvType, $dwFlags)
        Local $advapi32 = DllOpen("advapi32.dll")
        Local $ret = DllCall($advapi32, "int", "CryptAcquireContextA", "ptr*", $phProv, "str", $pszContainer, "str", $pszProvider, "dword", $dwProvType, "dword", $dwFlags)
        DllClose($advapi32)
        Return $ret[0]
    EndFunc
    Func _Crypt_CreateHash($hProv, $Algid, $hKey, $dwFlags, ByRef $phHash)
        Local $hHash = DllStructCreate("handle")
    
        If _CryptAPI_CreateHash($hProv, $Algid, $hKey, $dwFlags, DllStructGetPtr($hHash)) = 0 Then
            Return SetError(1, 0, 0)
        EndIf
    
        $phHash = DllStructGetData($hHash, 1)
        Return 1
    EndFunc
    
    Func _CryptAPI_CreateHash($hProv, $Algid, $hKey, $dwFlags, $phHash)
        Local $advapi32 = DllOpen("advapi32.dll")
        Local $ret = DllCall($advapi32, "int", "CryptCreateHash", "handle", $hProv, "dword", $Algid, "handle", $hKey, "dword", $dwFlags, "ptr*", $phHash)
        DllClose($advapi32)
        Return $ret[0]
    EndFunc
    Alles anzeigen


    BinaryMid($b, $Ding - 1, 1, BinaryMid($b, $myDic.Item($Ding) - 1, 1))


    BinaryMid($b, $myDic.Item($Ding) - 1, 1, $Tmp)

    quelle autoit hilfe :


    Function BinaryMid

    BinaryMid

    Extracts a number of bytes from a binary variant.

    BinaryMid ( binary, start [, count] )

    Parameters

    binaryThe binary data to evaluate.
    startThe byte position to start. (1 = first byte)
    count[optional] The number of bytes to extract. By default the entire remainder of the binary data.
  • VBA-Code übersetzen

    • MojoeB
    • 13. Juni 2023 um 18:20

    ja da zeigt sich die hallos von chatgpt habe auch grad gemerkt das es eigne Funktionen Gar nicht gibt.

    Was genau soll den der Code von Anfang bis ende tun?

    evtl. können dann mehr Leute sich was darunter vorstellen und bessere bespiele als ich bringen ^^.

  • VBA-Code übersetzen

    • MojoeB
    • 13. Juni 2023 um 17:23

    ich hab aus Neugier mal deinen Code mal in chatgpt3.5 eingeben
    und gefragt ob er es mir in autoit umwandeln kann

    Ich weiß nicht ob dir das hilft der Code macht bei mir nichts, da er nur Funktionen erstellt hat.

    C
    #include <Crypt.au3>
    #include <Array.au3>
    #include <String.au3>
    #include <WinAPI.au3>
    #include <WinAPIError.au3>
    
    Func Crypt($text, $Art)
        Local $AcquireContext, $HashHandle, $result, $ByteText, $LaengeResult, $ByteResult, $Zaehler
        $ByteText = Binary($text)
    
        $result = _Crypt_AcquireContext($AcquireContext, 0, 1, 0)
        If $result = 0 And @error = $ERROR_INVALID_PARAMETER Then
            $result = _Crypt_AcquireContext($AcquireContext, 0, 1, $CRYPT_NEWKEYSET)
        EndIf
        $result = _Crypt_CreateHash($AcquireContext, $Art, 0, 0, $HashHandle)
        $result = _Crypt_HashData($HashHandle, $ByteText, BinaryLen($ByteText), 0)
        $result = _Crypt_GetHashParam($HashHandle, $HP_HASHSIZE, $LaengeResult, 4, 0)
    
        ReDim $ByteResult[$LaengeResult] As Byte
        $result = _Crypt_GetHashParam($HashHandle, $HP_HASHVAL, $ByteResult, $LaengeResult, 0)
        For $Zaehler = 0 To UBound($ByteResult) - 1
            $Crypt &= "0" & Hex($ByteResult[$Zaehler], 2)
        Next
        _Crypt_DestroyHash($HashHandle)
        _Crypt_ReleaseContext($AcquireContext)
        Return $Crypt
    EndFunc
    
    Func stringPC()
        Local $strSQL, $strWMI, $oWMI, $objItem
        $strSQL = "Select * from Win32_Processor"
        $strWMI = "winmgmts:\\.\root\cimv2"
        $oWMI = ObjGet($strWMI).ExecQuery($strSQL)
        For $objItem In $oWMI
            Return $objItem.ProcessorId
        Next
    EndFunc
    
    Func exchangeDigitA($sText)
        Local $myDic, $b, $Keys, $Ding, $Tmp
        $myDic = ObjCreate("Scripting.Dictionary")
        $myDic.Add(1, 3)
        $myDic.Add(4, 6)
        $b = StringToBinary($sText)
        $Keys = $myDic.Keys()
        For $Ding In $Keys
            $Tmp = BinaryMid($b, $Ding - 1, 1)
            BinaryMid($b, $Ding - 1, 1, BinaryMid($b, $myDic.Item($Ding) - 1, 1))
            BinaryMid($b, $myDic.Item($Ding) - 1, 1, $Tmp)
        Next
        Return BinaryToString($b)
    EndFunc
    Alles anzeigen
  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • MojoeB
    • 8. Juni 2023 um 21:56

    Alternativ könnte man zunächst den WebView anzeigen und dann im Hintergrund den WebDriver starten, um die Seite anzusteuern und einen Screenshot zu erstellen. Dies kann mithilfe von "_WD_UpdateDriver()" erfolgen, was das Problem löst, dass der WebDriver immer auf dem neuesten Stand bleibt oder heruntergeladen wird, falls er nicht vorhanden ist. Allerdings ist zu beachten, dass dieser Prozess etwas Zeit in Anspruch nehmen kann, bis der Screenshot erstellt wird.

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • MojoeB
    • 8. Juni 2023 um 21:34

    oh ich hätte auch mal ans ans ende klicken können dann hätte ich es gesehen ^^

    pdf ist glaub ich nicht was du gesucht hast :/

    wäre ;

    rechtsklick>Web Aufnahme>erfassen der ganzen Seite>speichern

    eine Option für dich ?

    die schritte könntest du vielleicht automatisieren, nachdem die Homepage eingeben wurde dann den Webview öffnen lassen natürlich mit den webseiten inhalt

    und da deine gui eh statisch ist und das Bild immer in der Mitte dann Maus eingaben Speeren lassen, mit MouseCoordMode 2 in die mitte klicken lassen und die oben angeführten schritte durchgehen und Maus wieder freigeben.

  • AutoIt Windows Screenshooter v1.84 Build 2019-08-18

    • MojoeB
    • 8. Juni 2023 um 20:57

    UEZ

    Microsoft Edge - WebView2, embed web code in your native application

    die Beispiele funktionieren bei mir ich glaube aber das webview mit WebDriver nicht kompatible ist.

    Kannst mich gern von was anderem überzeugen :)

    glaube das hat was mit der Session zu tun was der webdriver erstellt. hier im webview Beispiel wird ja keine Session mit dem webdriver erstellt.
    aber ich denke du könntest den webview schon irgendwie mit deinem Programm verwenden.

    Die Seite über den webview aufrufen und dann darüber das Bild generieren lassen.

  • Download der Avast-Free-Offline-Dateien klappt seit ein paar Tagen nicht mehr mit AutoIt ... ?

    • MojoeB
    • 5. Mai 2023 um 23:28

    @kilo

    Also, ich habe es mir angesehen und nichts daran verändert aber bei mir läuft das Skript nicht.
    Aber komisch das es bei den anderen sofort geklappt hat, aber auch super das du dieses Thema geöffnet hast.
    Weil ich grad an einem großen Skript bin das ich von IE auf Webdriver umbaue und da hab ich mich gefragt wie mache ich das eigentlich falls jemand eine falsche Version von Edge hat, die nicht auf den Webdriver passt.

    Und jetzt kommt wieder AspirinJunkie um die Ecke und haut da wieder einen raus.

    AspirinJunkie dein Skript funktioniert bei mir sofort, konnte es auch ganz einfach anpassen an meine Bedürfnisse Super Arbeit! :klatschen:

  • Labelaktualisierung will wieder mal nicht

    • MojoeB
    • 28. April 2023 um 21:16

    kannst du bitte mal dein komplettes Skript posten mit includes ?
    weil ohne diese kann man das Skript nicht mal starten deshalb weiß ich auch nicht was du damit meinst :

    'Eigentlich wollte ich der Übersichtlichheit die lokalen und die verbundenen Drucker getrennt darstellen, wahrscheinlich macht das das Problem. Ich habe nämlich versucht die Button nicht nur auf das obere Fenster anzuwenden'

    ^^

  • Labelaktualisierung will wieder mal nicht

    • MojoeB
    • 28. April 2023 um 18:54

    versuch mal

    edit :

    jetzt sehe ich wo dein problem ist.


    AutoIt
    ;Labels
    
      GUICtrlCreateLabel ( "Standarddrucker: ", 10, 10, 120, 30 )
       GUICtrlSetFont(-1, 9, 900) ; bold
      GUICtrlCreateLabel ( $standardprinter, 10, 30, 360, 30 )
       GUICtrlSetFont(-1, 9, 900) ; bold
      GUICtrlCreateLabel ( "Installierte Drucker: ", 10, 60, 120, 20 )
       GUICtrlSetFont(-1, 9, 900) ; bold
      GUICtrlCreateLabel ( "Netzwerkdrucker einbinden: ", 10, 330, 250, 20 )
       GUICtrlSetFont(-1, 9, 900) ; bold
    
    
    ;ändere diese zeilen mal in 
    ;Labels
    Local $label
      GUICtrlCreateLabel ( "Standarddrucker: ", 10, 10, 120, 30 )
       GUICtrlSetFont(-1, 9, 900) ; bold
    $label = GUICtrlCreateLabel ( $standardprinter, 10, 30, 360, 30 )
       GUICtrlSetFont(-1, 9, 900) ; bold
      GUICtrlCreateLabel ( "Installierte Drucker: ", 10, 60, 120, 20 )
       GUICtrlSetFont(-1, 9, 900) ; bold
      GUICtrlCreateLabel ( "Netzwerkdrucker einbinden: ", 10, 330, 250, 20 )
       GUICtrlSetFont(-1, 9, 900) ; bold
    
    
    ; und dann wie in deinem neuem beispiel blos 
    
    GUICtrlSetData($label, $standardprinter) ; aktualisiert das Label $Standardprinter
    Alles anzeigen
  • winhttp?

    • MojoeB
    • 17. April 2023 um 18:24

    ich habe mich jetzt die Tage mit dem Webdriver beschäftigt, ich denke das kann es gut ersetzten somit ist das Thema winhttp erstmal beiseite gelegt.

    Falls ich fragen bezüglich Webdirver haben sollte melde ich mich mit einem neuem Thema, danke erstmal :)

  • TCP - Send

    • MojoeB
    • 6. April 2023 um 12:25

    Velted

    Ehm nein daran lag es nicht, den es wird momentan noch alles unverschlüsselt übertragen.

    Aber das wird als nächstes getestet wenn ich dazu komme und lust habe^^.

    Ich denke wenn ich soweit bin muss ich dieses Zitat beachten^^

    eukalyptus

    Das mit dem XMLDOM funktioniert gut, allerdings habe ich damit noch ein kleines Problem.

    $oXML sollte doch der ganze gebaute String sein oder nicht ?
    Aber irgendwie gibt er mir diesen nicht zurück, bin nun einen Umweg gegangen, ich speichere es erst als Datei und dann lese ich die Datei nochmal aus.


    Kanashius

    danke für deine Mühe, das muss ich mir mal genauer ansehen die Tage. mein Problem dabei ist das ich StringFormat noch nicht wirklich verstanden habe.

  • TCP - Send

    • MojoeB
    • 4. April 2023 um 19:14

    eukalyptus

    Danke für deinen Rat, Ich habe es grad über winhttp probiert, damit geht es leider gar nicht.

    Aber der _CreateMSG teil ist toll :) weil genau das habe ich erst heute fast genauso versucht, habe aber Fehler erhalten. Dann habe ich den String erstmal zum testen einfach runtergeschrieben.

    Ich bin ein doofi, ich hab grad gemerkt wo mein Fehler ist, beim Testen ist mir grad aufgefallen das

    Code
    davor :
    Func TCPsend_($sString)
        TCPSend($socket, $sString)
        ConsoleWrite($sString & @CRLF)
    EndFunc   ;==>TCPsend_
    
    danach :
    
    Func TCPsend_($sString)
        TCPSend($socket, $sString&@CRLF)
        ConsoleWrite($sString & @CRLF)
    EndFunc   ;==>TCPsend_
    Alles anzeigen

    @CRLF hat gefehlt deshalb hat er wahrscheinlich auch den teil angehangen.

    Ich habe es in der GUI nun mit dieser 1 Meldung getestet, also :
    Programm gestartet. -> XML Meldung ist angekommen.Testbutten 1x -> XML Meldung ist angekommen.

    2x wiederholt -> alle Meldungen in der Zentrale angekommen.


    Ich denke das war der Fehler, ich werde morgen weiter programmieren und testen und falls sich wieder das selbe Bild zeigt wie heute dann melde ich mich wieder.^^

  • OutlookEX NewMail Freigegebenes Postfach

    • MojoeB
    • 4. April 2023 um 15:48

    @GerhardSchr supi freut mich :), das es geklappt hat.

  • TCP - Send

    • MojoeB
    • 4. April 2023 um 15:02

    Hay zusammen, ich habe ein Programm das ich mit einer Alarmzentrale verbinden über TCP-IP.

    connecten kann ich, wird in der Alarmzentrale auch angezeigt, allerdings kann ich einige Meldungen nicht so absetzen wie ich möchte.

    Zum Beispiel, soll diese Meldung über TCP-IP geschickt werden.

    AutoIt
    local $sString1 = '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
        '<LISA>' & @CRLF & _
        @TAB & '<VERSION>5.8</VERSION>' & @CRLF & _
        @TAB & '<MEDIUM>12</MEDIUM>' & @CRLF & _
        @TAB & '<KANAL>610</KANAL>' & @CRLF & _
        @TAB & '<SENDER>' & @IPAddress1 & '</SENDER>' & @CRLF & _
        @TAB & '<ENTSTEHUNG>' & _NowDate() & ' ' & _NowTime(3) & 'Uhr</ENTSTEHUNG>' & @CRLF & _
        @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
        @TAB & @TAB & '<Identnummer>'&$id&'</Identnummer>'& @CRLF & _
        @TAB & @TAB & '<Ereignis>Connect</Ereignis>'& @CRLF & _
        @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
        @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
        @TAB & @TAB & '<Identnummer>'&$id&'</Identnummer>'& @CRLF & _
        @TAB & @TAB & '<Ereignis>ROUTINE</Ereignis>'& @CRLF & _
        @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
        '</LISA>
    Alles anzeigen

    Was er aber nach Programm Start nicht tut.

    Und es gibt auch keine Fehlerinterpretation.
    Wenn ich nun allerdings den selben String per Button los schicke funktioniert auch nur 1x, kommt dieser in der Alarmzentrale an,

    Allerdings so :

    XML
    <?xml VERSION="1.0" ENCODING="UTF-8"?>
    <LISA>
        <VERSION>5.8</VERSION>
        <MEDIUM>12</MEDIUM>
        <KANAL>610</KANAL>
        <SENDER>***.**.**.**</SENDER>
        <ENTSTEHUNG>04.04.2023 14:02:53UHR</ENTSTEHUNG>
        <VERBINDUNGSMELDUNG>
            <IDENTNUMMER>1111</IDENTNUMMER>
            <EREIGNIS>CONNECT</EREIGNIS>
        </VERBINDUNGSMELDUNG>
        <VERBINDUNGSMELDUNG>
            <IDENTNUMMER>1111</IDENTNUMMER>
            <EREIGNIS>ROUTINE</EREIGNIS>
        </VERBINDUNGSMELDUNG>
    </LISA><?xml VERSION="1.0" ENCODING="UTF-8"?>
    Alles anzeigen

    statt so :

    XML
    <?xml VERSION="1.0" ENCODING="UTF-8"?>
    <LISA>
        <VERSION>5.8</VERSION>
        <MEDIUM>12</MEDIUM>
        <KANAL>610</KANAL>
        <SENDER>***.**.**.**</SENDER>
        <ENTSTEHUNG>04.04.2023 14:02:53UHR</ENTSTEHUNG>
        <VERBINDUNGSMELDUNG>
            <IDENTNUMMER>1111</IDENTNUMMER>
            <EREIGNIS>CONNECT</EREIGNIS>
        </VERBINDUNGSMELDUNG>
        <VERBINDUNGSMELDUNG>
            <IDENTNUMMER>1111</IDENTNUMMER>
            <EREIGNIS>ROUTINE</EREIGNIS>
        </VERBINDUNGSMELDUNG>
    </LISA>
    Alles anzeigen

    Ist es möglich das ich mein gesendeten String irgendwie mit einer TCP-Funktion abschließen muss?
    Ohne die Verbindung zum Server zu kappen.
    Habe das Gefühl das er mit jedem String den alten String erweitert, da bin ich mir aber nicht sicher.

    mein bisheriger Code :

    AutoIt
    Global $LisaIP, $LisaPORT, $socket
    
    TCP_connect($socket, '1111') ;steht am Anfang des Scripts
    testmeldung_xml() ; wird durch einen  Button aktiviert.
    TCP_Disconnect($id = '1111') ; soll nur aktiviert werden wenn  Verbindungschließen oder beenden gedrückt wird.
    
    Func TCP_connect(ByRef $socket, $id = '')
        TCPStartup()
        $socket = TCPConnect($LisaIP, $LisaPORT)
        If $socket = -1 Then
            MsgBox(0, "Error", "Unable to connect to server.")
            Return
        Else
            Sleep(3000)
            Local $sString = '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                    '<LISA>' & @CRLF & _
                    @TAB & '<VERSION>5.8</VERSION>' & @CRLF & _
                    @TAB & '<MEDIUM>12</MEDIUM>' & @CRLF & _
                    @TAB & '<KANAL>610</KANAL>' & @CRLF & _
                    @TAB & '<SENDER>' & @IPAddress1 & '</SENDER>' & @CRLF & _
                    @TAB & '<ENTSTEHUNG>' & _NowDate() & ' ' & _NowTime(3) & 'Uhr</ENTSTEHUNG>' & @CRLF & _
                    @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
                    @TAB & @TAB & '<Identnummer>' & $id & '</Identnummer>' & @CRLF & _
                    @TAB & @TAB & '<Ereignis>Connect</Ereignis>' & @CRLF & _
                    @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
                    @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
                    @TAB & @TAB & '<Identnummer>' & $id & '</Identnummer>' & @CRLF & _
                    @TAB & @TAB & '<Ereignis>ROUTINE</Ereignis>' & @CRLF & _
                    @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
                    '</LISA>'
    
    
            TCPsend_($sString)
            ConsoleWrite(sString & @CRLF)
        EndIf
    EndFunc   ;==>TCP_connect
    
    Func testmeldung_xml()
        Local $idroutine = InputBox('Routine Test', 'Trage die ID mit der dem Endgerät IP-XML ein.')
        Local $sString = '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<LISA>' & @CRLF & _
                @TAB & '<VERSION>5.8</VERSION>' & @CRLF & _
                @TAB & '<MEDIUM>12</MEDIUM>' & @CRLF & _
                @TAB & '<KANAL>610</KANAL>' & @CRLF & _
                @TAB & '<SENDER>' & @IPAddress1 & '</SENDER>' & @CRLF & _
                @TAB & '<ENTSTEHUNG>' & _NowDate() & ' ' & _NowTime(3) & 'Uhr</ENTSTEHUNG>' & @CRLF & _
                @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
                @TAB & @TAB & '<Identnummer>' & $idroutine & '</Identnummer>' & @CRLF & _
                @TAB & @TAB & '<Ereignis>Connect</Ereignis>' & @CRLF & _
                @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
                @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
                @TAB & @TAB & '<Identnummer>' & $idroutine & '</Identnummer>' & @CRLF & _
                @TAB & @TAB & '<Ereignis>ROUTINE</Ereignis>' & @CRLF & _
                @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
                '</LISA>'
    
        Local $aXMLTESTDATA[1] = [$sString]
        For $i = 0 To UBound($aXMLTESTDATA) - 1 Step 1
            Sleep(250)
            If $aXMLTESTDATA[$i] = '' Then ContinueLoop
            TCPsend_($aXMLTESTDATA[$i])
        Next
    EndFunc   ;==>testmeldung_xml
    
    Func TCPsend_($sString)
        TCPSend($socket, $sString)
        ConsoleWrite($sString & @CRLF)
    EndFunc   ;==>TCPsend_
    
    Func TCP_Disconnect($id = '') ; soll nur bei Exitbtn greifen.
        Local $sString = '<?xml version="1.0" encoding="utf-8"?>' & @CRLF & _
                '<LISA>' & @CRLF & _
                @TAB & '<VERSION>5.8</VERSION>' & @CRLF & _
                @TAB & '<MEDIUM>12</MEDIUM>' & @CRLF & _
                @TAB & '<KANAL>610</KANAL>' & @CRLF & _
                @TAB & '<SENDER>' & @IPAddress1 & '</SENDER>' & @CRLF & _
                @TAB & '<ENTSTEHUNG>' & _NowDate() & ' ' & _NowTime(3) & 'Uhr</ENTSTEHUNG>' & @CRLF & _
                @TAB & '<VERBINDUNGSMELDUNG>' & @CRLF & _
                @TAB & @TAB & '<Identnummer>' & $id & '</Identnummer>' & @CRLF & _
                @TAB & @TAB & '<Ereignis>Disconnect</Ereignis>' & @CRLF & _
                @TAB & '</VERBINDUNGSMELDUNG>' & @CRLF & _
                '</LISA>'
    
        TCPsend_($sString)
    
        TCPCloseSocket($socket)
        TCPShutdown()
    
    EndFunc   ;==>TCP_Disconnect
    Alles anzeigen

    Ich habe die GUI im Code weggelassen, mich interessiert nur ob der Aufbau richtig wäre oder ob ich grundlegend etwas falsches mit TCP mache, da ich davor noch nie mit gearbeitet habe.

    Sobald mein Programm/Script geöffnet wurde zeigt es in der Leitstelle an das mein Programm per IP verbunden ist sobald ich es schließe wird gezeigt das mein Programm ausgefallen ist.
    Also habe ich ja eine Verbindung wärend mein Programm läuft aber warum kann ich dann nicht mehrere Meldungen hinter einander absetzten erst nach Neustart des Scripts/programmes funktioniert es wieder.

    Deswegen glaube ich das TCPSend bei einer bestehenden Verbindung einfach den letzten geschickten String erweitert, ich kann mir auch nicht erklären warum er die Meldung dann so beendet: </LISA><?xml VERSION="1.0" ENCODING="UTF-8"?>
    hoffe ihr seit schlauer als ich und könnt mir dabei helfen.

    Gruß Mojoe

  • OutlookEX NewMail Freigegebenes Postfach

    • MojoeB
    • 31. März 2023 um 13:42

    kleiner Zusatz ich habe grad gemerkt das ich bei mir anstatt '/' dieses '\' Zeichen im String verwende

    gruß mojoe

  • Text aus Variable senden

    • MojoeB
    • 30. März 2023 um 17:49

    Da du nicht genau beschrieben hast wo und wann dieser text eingefügt werden soll, ein paar Vorschläge.

    leider ist es nicht mehr so einfach wie früher früher konntest du gefühlt alles auslesen mit Autoit Windows Info, damit war es sehr einfach alles zu erreichen was man wollte.


    1. IUIAutomation MS-Framework automatisieren Chrome, FF, IE, .... - AutoIt-Beispielskripte - AutoIt-Foren (autoitscript.com) -> Ich kenne mich damit leider nicht aus aber das sollte dir die Informationen bringen wie mit Windows Info.
    2. RE: Auf eine bestimmte Stelle klicken, wenn ein bestimmtes Fenster erscheint -> über Screenshort ans ziel kommen.

    3. oder mit ControlID WinWait(),WinActivate(),WinActive(),WinWaitActive(),ControlClick(),ControlSend(),ControlSetText() arbeiten wie schon zuvor gesagt worden ist.
    4. oder deine gewünschten Variablen mit Filewirte(file.txt,$vars) in ein Textdokument schreiben und es danach aufrufen lassen oder halt nicht wie gewünscht.

    5. Opt MouseCoordMode mit Mousemove&click nur im aktiven Fenster mit mousemove ans gewünschte ziel und dann anschließend Send($vars).

    Vielleicht erklärst du nochmal was du genau in welchem anwendungsfall machen möchtest weil es überall sein kann das die eine Methode dort nicht funktioniert aber woanderst.

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™