Welches Postfach?
Such mal nach IMAP, vllt hilft das.
Welches Postfach?
Such mal nach IMAP, vllt hilft das.
#include <GUIConstantsEx.au3>
#include <StringConstants.au3>
Global Enum $AA, $BB, $CC
Global $funktioniert = "Es|hat|funktioniert"
Global $arrfunktioniert = StringSplit($funktioniert, "|", $STR_NOCOUNT)
Global $aBtn[UBound($arrfunktioniert)]
Global $hGui = GUICreate("Test", 400, 400)
For $i = 0 To UBound($arrfunktioniert) -1
$aBtn[$i] = GUICtrlCreateButton($arrfunktioniert[$i], 10, 10 + $i * 35, 100, 30)
Next
GUISetState(@SW_SHOW)
Global $iMsg
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $aBtn[$AA]
MsgBox(16, "", "$AA pressed - " & $arrfunktioniert[$AA])
Case $aBtn[$BB]
MsgBox(16, "", "$BB pressed - " & $arrfunktioniert[$BB])
Case $aBtn[$CC]
MsgBox(16, "", "$CC pressed - " & $arrfunktioniert[$CC])
EndSwitch
WEnd
Alles anzeigen
Ist es so gemeint? Würde ich aber auch nicht machen.
Da musst du einfach probieren, wie es funktioniert.
Hier eine Vorlage
TCPStartup()
Global $iSock = TCPConnect(TCPNameToIP ("192.168.x.x:"), 3052)
Global $Packet = "GET /local/rest/v1/ups/status HTTP/1.1" & @CRLF & _
"Authorization: <BEARER-TOKEN-COPIED-EARLIER>" & @CRLF & _
"Accept: application/json" & @CRLF & @CRLF
TCPSend($iSock, $Packet)
Global $sRecv = TCPRecv($iSock, 1024)
TCPCloseSocket($iSock)
ConsoleWrite($sRecv & @CRLF)
Alles anzeigen
Hallo! Super!
Mich hat das Thema gestern auch interessiert.
Hab dazu folgendes Projekt gefunden: WebP-Wrapper
Das ist ein C#-Projekt mit Wrapper auch x86 und x64 DLLs. Dafür hätte ich bei übriger Zeit eine UDF erstellt.
Brauche ich wohl jetzt nicht mehr.
Schöne Grüße
Hallo,
deine Anfrage wurde im englischen Forum bereits abgelehnt und der Thread geschlossen.
Meine IT-Abteilung würde auch nicht wollen, dass ich das Passwort irgendwo abspeichere um mich automatisch einzuloggen.
Schöne Grüße.
Den Code von OnAutoitExit() hast du nicht dabei, aber ich gehe davon aus, dass dort die Variable $g_hStub_KeyProc noch benötigst, die du aber vorher schon abnullst. Vllt hilft das schon, diese Zeile wegzulassen oder nach OnAutoitExit() auszuführen.
Oder das da: https://www.autoitscript.com/forum/topic/20…bject_internal/
Hängt alles davon ab, was man erreichen will.
Da gibt es mehrere Ansätze: Diesen habe ich als erstes gefunden: https://www.autoitscript.com/forum/topic/20…dows-messaging/
Da wirst du ein RichEdit brauchen
#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
Func UpdateEditField( $idEditField, $sString, $bError )
Local $sValue = GUICtrlRead( $idEditField )
If $bError = True Then
;~ Beep( 500, 500 )
_GUICtrlRichEdit_SetCharColor( $idEditField, _WinAPI_SwitchColor($COLOR_RED ))
_GUICtrlRichEdit_AppendText( $idEditField, @CRLF & $sString )
_GUICtrlRichEdit_SetCharColor( $idEditField, _WinAPI_SwitchColor($COLOR_BLACK ))
Else
_GUICtrlRichEdit_AppendText( $idEditField, @CRLF & $sString )
EndIf
EndFunc
Global $hGui = GUICreate("Test", 400, 400)
Global $nBtn = GUICtrlCreateButton("Add Text", 10, 10, 100, 30)
Global $hRichEdit = _GUICtrlRichEdit_Create($hGui, "Text", 10, 90, 380, 300)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit)
ExitLoop
Case $nBtn
UpdateEditField( $hRichEdit, Chr(Random(65, 90, 1)), Random(0, 1, 1 ))
EndSwitch
WEnd
Alles anzeigen
So wie das aussieht ist die ID fest in die Funktion _ModbusTCP_ReadValues verbaut. Man bräuchte nur die Funktion leicht anzupassen, um die ID zu übergeben.
Habs nur schnell zusammenkopiert. Nun ist's ausgebessert
Ich würde das so irgendwie machen:
Global $remIP = "192.168.0.3"
Global $remPort = 80
TCPStartup()
Global $ConnectedSocket = TCPConnect($remIP, $remPort)
TCPSend($ConnectedSocket,"GET /?Rly3=1 " & @CRLF & @CRLF)
Global $recv = TCPRecv($ConnectedSocket, 4096)
TCPCloseSocket($ConnectedSocket)
TCPShutdown()
Ungetestet
Hallo funkey,
auch das wäre ein interessanter Ansatz, vielen lieben Dank dafür. Damit sieht es aber bis jetzt so aus, als könne man in Autoit den StdIn-Stream nur
anhand von Umwegen entgegen nehmen und in eine Variable speichern. Vielleicht hilft mir ja das Barcodescanner-Script von Oscar weiter...
Mein Beispiel ist sicher der einfachste Weg um das Problem zu lösen.
Ein anderer Weg, wäre ein Low-Level Tastatur-Hook, der aber wahrscheinlich in leicht abgewandelter Form als Keylogger verwendet werden könnte. Somit kannst du in diese Richtung von uns keine Hilfe erwarten, sorry.
Und wenn du das Input-Feld außerhalb der Gui 'anzeigst'?
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPISysWin.au3>
Opt("GUIOnEventMode", 1)
Global $hGui = GUICreate("test")
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
Global $nLbl = GUICtrlCreateLabel("Bitte einen Text eingeben. Das Ergebnis ist nicht sichtbar", 10, 100, Default, Default, 0, 0)
Global $nEdit = GUICtrlCreateInput("", 10, -100, 300, 20)
GUICtrlCreateButton("Show", 10, 200, 100, 25)
GUICtrlSetOnEvent(-1, "_ShowInput")
GUICtrlCreateButton("Hide", 120, 200, 100, 25)
GUICtrlSetOnEvent(-1, "_HideInput")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _ShowInput()
GUICtrlSetPos($nEdit, 10, 100)
GUICtrlSetState($nLbl, $GUI_HIDE)
EndFunc
Func _HideInput()
GUICtrlSetState($nLbl, $GUI_SHOW)
GUICtrlSetPos($nEdit, 10, -100)
_WinAPI_SetFocus(GUICtrlGetHandle($nEdit))
EndFunc
Func SpecialEvents()
Select
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
GUIDelete()
Exit
EndSelect
EndFunc ;==>SpecialEvents
Alles anzeigen
Dann zeig mal deine Modbus-Funktionen wie BugFix schon sagte. Die ID im Protokoll zu ändern sollte kein Problem sein.
Die ID hat nichts mit der IP zu tun. Die ID ist im Protokoll verankert. Allerdings wenn beide Geräte eine unterschiedliche IP haben, dann würde ich die ID bei beiden Geräten auf dem Standard-Wert von ! belassen und dann müsste auch das Skript funktionieren. Unterschiedliche IDs braucht man z.B. wenn man ein Modbus-TCP Gateway hat, welches sekundärseitig mehrere Geräte über Modbus-RTU ansprechen soll.