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

  • MsgBox ohne Beep möglich

    • Code4Fun
    • 16. April 2025 um 12:28

    Habe es jetzt mal mit $MB_ICONNONE versucht, ist aber immer noch zu hören. Die Icon wäre mir egal, hauptsache ruhig. Früher gab es mal ein "net stop beep" aber das geht wohl nicht mehr.

  • MsgBox ohne Beep möglich

    • Code4Fun
    • 16. April 2025 um 10:38

    Hallo,

    ich habe diverse Scripte, wo ich am Ende eine MsgBox ausgebe, welche sich dann nach 1 bis 3 Sekunden schließen. Es ist jetzt aber so, das beim Erscheinen immer dieser Betriebssystem Beep am Lautsprecher ausgegeben wird. Wie kann ich das unterdrücken?

  • alte DB Scripte laufen plötzlich nicht mehr

    • Code4Fun
    • 21. August 2024 um 08:36

    Ich muss mich jetzt nochmals melden, da ich noch keine Lösung habe. Folgendes habe ich mal gemacht. Da ich kein Programmierer bin, habe ich mir via copilot einen C# Code zusammen bauen lassen, welcher mit den Zugangsdaten von Autoit die Datenbank anfrägt. Wenn die Verbindung erfolgreich ist (oder auch nicht), soll eine Messagebox ausgegeben werden. Beim ersten Versuch wurde dort dann ebenfalls auf ein SSL Problem verwiesen. Leider werde ich die ganzen Parteien nicht an einen Tisch bekommen, von daher wurde mir "erst mal" - damit ich die Verbindung hinbekomme, folgendes empfohlen.

    Code
    // Verbindung zum SQL Server herstellen
    string connectionString = $"Server={ip};Database={dbName};User Id={user};Password={password};Encrypt=True;TrustServerCertificate=True;"; // Verbindungszeichenfolge für den SQL Server
    using (SqlConnection conn = new SqlConnection(connectionString)) // Erstellt eine neue SQL-Verbindung

    Wie bilde ich das Encrypt=True;TrustServerCertificate=True; in meinem Autoit Script bzw. der MSSQL.au3 ab?

    Das hier geht leider nicht

    Code
    ;===============================================================================
    ;
    ; Function Name....:    _MSSQL_Con
    ; Description......:    Connect to a Database
    ; Syntax...........:    _MSSQL_Con($scIP, $scUser, $scPass, $scDB)
    ; Parameter(s).....:    $scIP = IP adress
    ;                       $scUser = User
    ;                       $scPass = Pass
    ;                       $scDB = Database
    ; Return Value(s)..:    Success - Returns the Database-"handle"
    ;
    ;===============================================================================
    Func _MSSQL_Con($scIP, $scUser, $scPass, $scDB)
    	Local $sqlCon
    	$sqlCon = ObjCreate("ADODB.Connection")
    	$sqlCon.Open("Provider=SQLOLEDB; Data Source=" & $scIP & "; User ID=" & $scUser & "; Password=" & $scPass & "; database=" & $scDB & ";Encrypt=True;TrustServerCertificate=True;")
    	Return $sqlCon
    EndFunc   ;==>_MSSQL_Con
    Alles anzeigen
  • alte DB Scripte laufen plötzlich nicht mehr

    • Code4Fun
    • 15. August 2024 um 08:51
    Zitat von gmmg

    Folgende Links behandeln auch das Handshake Thema. Eventuell lassen sich da Infos gewinnen.

    https://learn.microsoft.com/en-us/answers/…iled-(dbnetlib)(connectionopen

    https://community.qlik.com/t5/Official-Su…QL/ta-p/1715861

    https://stackoverflow.com/questions/7151…-error-on-windo

    Ja, läuft als x64. Hat aber auch nicht geholfen.

  • alte DB Scripte laufen plötzlich nicht mehr

    • Code4Fun
    • 15. August 2024 um 08:34
    Zitat von water

    Wenn Du den aktuellsten SQLOLEDB Treiber verwendest, dann sollte TLS 1.2 kein Problem mehr sein (zumindest lt. Stackoverflow, siehe Link oben).

    Mit folgendem Skript erhältst Du eine Liste aller installierten Treiber inkl. Dateiname und Version.

    AutoIt
    #include <Constants.au3>
    #include <Debug.au3>
    
    _ADO_OLEDBProvidersList()
    
    Func _ADO_OLEDBProvidersList()
    	Local $sKey = "HKCR\CLSID"
    	Local $iIndexReg = 1, $iIndexResult = 0
    	Local $iMax = 100000, $iMin = 1, $iPrevious = $iMin, $iCurrent = $iMax / 2
    	Local $aResult[200][6]
    
    	ProgressOn("OLE DB Providers", "Processing the Registry", "", Default, Default, $DLG_MOVEABLE)
    	AutoItSetOption("ExpandEnvStrings", 1)
    
    	; Count the number of keys
    	While 1
    		RegEnumKey($sKey, $iCurrent)
    		If @error = -1 Then ; Requested subkey (key instance) out of range
    			$iMax = $iCurrent
    			$iCurrent = Int(($iMin + $iMax) / 2)
    			$iPrevious = $iMax
    		Else
    			If $iPrevious <= ($iCurrent + 1) And $iPrevious >= ($iCurrent - 1) Then ExitLoop
    			$iMin = $iCurrent
    			$iCurrent = Int(($iMin + $iMax) / 2)
    			$iPrevious = $iMin
    		EndIf
    	WEnd
    
    	Local $iPercent = 0
    	Local $sKeyValue = ''
    	; Process registry
    	While 1
    		If Mod($iIndexReg, 10) = 0 Then
    			$iPercent = Int($iIndexReg * 100 / $iCurrent)
    			ProgressSet($iPercent, $iIndexReg & " keys of " & $iCurrent & " processed (" & $iPercent & "%)")
    		EndIf
    		$sSubKey = RegEnumKey($sKey, $iIndexReg)
    		If @error Then ExitLoop
    
    		$sKeyValue = RegRead($sKey & "\" & $sSubKey, "OLEDB_SERVICES")
    		If @error = 0 Then
    			$aResult[$iIndexResult][0] = $sKey & "\" & $sSubKey                                   ; Registry Key
    			$aResult[$iIndexResult][1] = RegRead($sKey & "\" & $sSubKey, "")                      ; OLE DB Provider
    			$aResult[$iIndexResult][2] = RegRead($sKey & "\" & $sSubKey & "\OLE DB Provider", "") ; Description
    			$aResult[$iIndexResult][3] = RegRead($sKey & "\" & $sSubKey & "\InprocServer32", "")  ; DLL file
    			If $aResult[$iIndexResult][3] <> "" Then
    				$aResult[$iIndexResult][4] = _FileGetProperty($aResult[$iIndexResult][3], "Dateiversion")
    				$aResult[$iIndexResult][5] = _FileGetProperty($aResult[$iIndexResult][3], "Änderungsdatum")
    			EndIf
    			$iIndexResult += 1
    		EndIf
    
    		$iIndexReg += 1
    	WEnd
    
    	ProgressOff()
    	ReDim $aResult[$iIndexResult][UBound($aResult, 2)]
    
    	_DebugArrayDisplay($aResult, "OLE DB Providers", "", 0, Default, "Registry key|OLE DB Provider|Description|DLL|DLL Version|DLL last modified")
    
    EndFunc   ;==>_ADO_OLEDBProvidersList
    Alles anzeigen

    Hallo Water,

    wenn ich versuche das Script via F5 laufen zu lassen (unter aktueller Autoit Version 3.3.16.1), bekomme ich folgenden Fehler:

    Treiber.au3"(60,94) : error: _FileGetProperty(): undefined function.
                    $aResult[$iIndexResult][4] = _FileGetProperty($aResult[$iIndexResult][3], "Dateiversion")
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    Treiber.au3 - 1 error(s), 0 warning(s)

    An was könnte das liegen?

  • alte DB Scripte laufen plötzlich nicht mehr

    • Code4Fun
    • 13. August 2024 um 15:17
    Zitat von water

    Google zeigt für den Suchtext "connectionOpen SECDoClientHandshake SSL 80020009" in Richtung TLS

    Das würde ja Sinn machen. Wie gesagt, im Konzern wurden wir in eine andere AD Domain migriert. Vermutlich wurde in dem Step auch die eine oder andere TLS Version deaktiviert. Da ich ja nur mit der mssql.au3 arbeite und damit die Verbindung herstelle, stellt sich mir halt die Frage, ob es in der Richtung was aktuelleres gibt?

  • alte DB Scripte laufen plötzlich nicht mehr

    • Code4Fun
    • 12. August 2024 um 16:16

    Hallo zusammen,

    ich habe ein paar Autoit Scripte, welche mit der MSSQL.au3 diverse Datenbanken anflanschen. Diese laufen seit Jahren auf einem Windows 2016 Terminalserver, die Datenbanken liegen auf einem anderen Windows Server. An den Datenbanken wurde nichts geändert und an den Scripten auch nicht. Es gab wohl eine Domänen Migration. In einen Script bekomme ich plötzlich diesen SSL Sicherheitsfehler, wobei wir hier nicht über einen SSL Kanal kommunizieren. Auf dem Terminalserver läuft z.B. auch DBeaver, welcher weiterhin die Datenbanken ansprechen kann.



    In meinem anderen Script fliege ich bei Zeile 350 raus.


    Anbei der Ausschnitt aus der stripped Datei


    Wie gehe ich bei so einer Fehlersuche denn vor. Bin jetzt schon einige Zeit aus dem Scripten draußen, von daher um jede Hilfe dankbar.

    Gruß

  • Compilierte EXE wird von Cortex XDR blockiert

    • Code4Fun
    • 15. Juli 2024 um 08:12
    Zitat von Schnuffel

    du kannst auch PureBasic verwenden, um dein Script zu starten.

    Wenn Interesse besteht einfach Bescheid geben.

    Erfordert eine autoit3.exe und ein a3x-Datei in einem Verzeichnis. Die selbstkompilierte PureBasic.exe startet dann die a3x.

    Prüft anhand md5, ob die a3x Datei unverändert ist oder ersetzt wurde.

    Hallo Schnuffel, kannst Du mir dazu etwas mehr erzählen?

  • Compilierte EXE wird von Cortex XDR blockiert

    • Code4Fun
    • 12. Juli 2024 um 16:18

    Hallo,

    ich habe folgendes kleines Script geschrieben. Es soll nur die Zwischenablage auslesen und an einer bestimmten Koordinate dann via SEND reinschreiben. Also nix wildes.

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=rci.ico
    #AutoIt3Wrapper_Outfile_x64=RemoteClipboardInput.exe
    #AutoIt3Wrapper_Run_Tidy=y
    #Tidy_Parameters=/reel
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <MsgBoxConstants.au3>
    
    Global $clipboardText = "Platzhalter"
    Global $mouseX = 0
    Global $mouseY = 0
    Global $gui, $label1, $button1, $label2, $label3, $button2, $label4, $label5, $button3
    
    ; Erstellen Sie die GUI
    $gui = GUICreate("Remote Clipboard Input", 720, 300)
    GUISetState(@SW_SHOW)
    
    ; Erstellen Sie das erste Label und den Button
    $label1 = GUICtrlCreateLabel("1. Bitte den einzufügenden Text in die Zwischenablage kopieren und OK drücken", 10, 10, 480, 50)
    GUICtrlSetFont(-1, 10)
    $button1 = GUICtrlCreateButton("OK", 500, 10)
    $label2 = GUICtrlCreateLabel("2. Der Wert auf der Zwischenablage ist: " & $clipboardText, 10, 70, 480, 50)
    GUICtrlSetFont(-1, 10)
    $label3 = GUICtrlCreateLabel("3. Bitte mit der Maus zu den Koordinaten fahren, wo der Zwischenablagetext eingefügt werden soll. Dann 2x die linke Maustaste drücken", 10, 130, 480, 50)
    GUICtrlSetFont(-1, 10)
    $button2 = GUICtrlCreateButton("Mauskoordinaten bestimmen", 500, 130)
    $label4 = GUICtrlCreateLabel("4. Die gewählten Koordinaten sind: X=" & $mouseX & ", Y=" & $mouseY, 10, 190, 480, 50)
    GUICtrlSetFont(-1, 10)
    $label5 = GUICtrlCreateLabel("5. Zwischenablagetext " & $clipboardText & " bei den Koordinaten X=" & $mouseX & ", Y=" & $mouseY & " eintragen.", 10, 250, 480, 50)
    GUICtrlSetFont(-1, 10)
    $button3 = GUICtrlCreateButton("Zwischenablage Text remote übertragen", 500, 250)
    
    While 1
    	$msg = GUIGetMsg()
    
    	If $msg = $GUI_EVENT_CLOSE Then
    		Exit
    	ElseIf $msg = $button1 Then
    ;~ 		ClipPut("")
    		$clipboardText = ClipGet()
    		If $clipboardText = "" Then
    			$clipboardText = "NULL"
    		EndIf
    		GUICtrlSetData($label2, "2. Der Wert auf der Zwischenablage ist: " & $clipboardText)
    
    		GUICtrlSetBkColor($button1, 0x90EE90) ; Hellgrün
    	ElseIf $msg = $button2 Then
    		Local $clickCount = 0
    		While $clickCount < 2
    			If _IsPressed("01") Then ; linke Maustaste
    				$clickCount += 1
    				Sleep(200) ; Vermeiden Sie Doppelklicks
    			EndIf
    			$mousePos = MouseGetPos()
    			ToolTip("X: " & $mousePos[0] & ", Y: " & $mousePos[1], $mousePos[0] + 30, $mousePos[1])
    			Sleep(10)
    		WEnd
    		ToolTip("")
    		$mouseX = $mousePos[0]
    		$mouseY = $mousePos[1]
    		GUICtrlSetData($label4, "4. Die gewählten Koordinaten sind: X=" & $mouseX & ", Y=" & $mouseY)
    
    		GUICtrlSetData($label5, "5. Zwischenablagetext " & $clipboardText & " bei den Koordinaten X=" & $mouseX & ", Y=" & $mouseY & " eintragen.")
    
    		GUICtrlSetBkColor($button2, 0x90EE90) ; Hellgrün
    	ElseIf $msg = $button3 Then
    		MouseClick("left", $mouseX, $mouseY)
    		Sleep(500)
    		MouseClick("left", $mouseX, $mouseY)
    		WinActivate("[ACTIVE]")
    		Send($clipboardText & "{ENTER}")
    		MsgBox($MB_ICONEXCLAMATION + $MB_OK, "Fertig", "Zwischenablage Text erfolgreich übertragen.", 2)
    	EndIf
    WEnd
    
    Func _IsPressed($hexKey)
    	Local $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", "0x" & $hexKey)
    	If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then
    		Return 1
    	Else
    		Return 0
    	EndIf
    EndFunc   ;==>_IsPressed
    Alles anzeigen

    Wenn ich die EXE dann auf meinem Firmen PC ausführe, schlägt der Firmen Scaner an mit


    Habe ich hier irgendeine Möglichkeit, den Code anzupassen, damit er als harmlos erkannt wird?

  • MSSQL.au3 => Frage zu _MSSQL_Con

    • Code4Fun
    • 14. Mai 2024 um 10:38

    Hallo zusammen,

    ich habe jetzt schon ein paar Jahre nichts mehr mit Autoit gemacht und bräuchte mal eure Hilfe. Ich habe ein altes Script, welches diverse Datenbanken der Reihe nach andockt und dort eine oder mehrere Abfragen machen. Jetzt ist es aber so, das unsere Datenbank Admins ab und zu mal die Datenbanken auf andere Systeme verlagern, sodass die IP Adresse nicht mehr passt und dadurch mein Script auf die Nase fällt.

    Mit der Funktion _MSSQL_Con aus MSSQL.au3 erstelle ich ja meine Datenbankverbindung

    Code
    Func _MSSQL_Con($scIP, $scUser, $scPass, $scDB)
    	Local $sqlCon
    	$sqlCon = ObjCreate("ADODB.Connection")
    	$sqlCon.Open("Provider=SQLOLEDB; Data Source=" & $scIP & "; User ID=" & $scUser & "; Password=" & $scPass & "; database=" & $scDB & ";")
    	Return $sqlCon
    EndFunc   ;==>_MSSQL_Con

    Wie kann ich denn jetzt prüfen, ob Return $sqlCon erfolgreich war, oder nicht.

    Wenn es nicht erfolgreich ist, fliegt mir aktuell mein Script weg. Ich würde das gerne aber so lösen, das ich zumindest an dieser Stelle das irgendwie abfangen kann und mir via Messagebox mitteilen lassen kann, das diese Verbindung fehlerhaft ist. Schön wäre es dann noch, wenn das Script dann trotzdem mit den restlichen Datenbanken weiterlaufen würde.

    Hier noch ein Beispiel von einer meiner Datenbankverbindungen

    Code
        If $SelectedDatabase = "ABC" Then
                $URL = "https://www.platzhalter.fqdn/abc/"
                $IP = $IP3
                $USER = "abcuser"
                $PASSWORD = "abcpasswort"
                $DB = "abcdb"
                $sqlCon = _MSSQL_Con($IP, $USER, $PASSWORD, $DB) ; IP, User, PW, DB
                ConsoleWrite("$sqlCon bei ABC ist: " & $sqlCon & @CRLF)
         EndIf

    Leider komme ich aktuell nicht bis zum ConsoleWrite. Wenn ich das Script mit F5 laufen lasse, fliege ich aktuell so raus

    Code
    "C:\Program Files (x86)\AutoIt3\Include\MSSQL.au3" (434) : ==> The requested action with this object has failed.:
    $sqlCon.Open("Provider=SQLOLEDB; Data Source=" & $scIP & "; User ID=" & $scUser & "; Password=" & $scPass & "; database=" & $scDB & ";")
    $sqlCon^ ERROR
    ->10:08:36 AutoIt3.exe ended.rc:1
    +>10:08:36 AutoIt3Wrapper Finished

    Danke für eure Tipps

  • Script läuft unter Windows Server nicht weiter

    • Code4Fun
    • 17. Januar 2023 um 14:44

    Hallo,

    ich habe ein Script, welches seit Jahren auf Windows 10 läuft. Ich muss es jetzt aber irgendwie unter Windows Server 2019 zum Laufen bringen. Das (erste) Problem befindet sich in dieser Funktion

    Spoiler anzeigen
    Code
    Func Abfragen()
        Local $sServerName, $sPaket, $sPOST, $hConnect, $hSession, $aTestString
    
        $hSession = _WinHttpOpen('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0')
    
        ;host
        $sServerName = 'leanv.zks-abfall.de'
        $hConnect = _WinHttpConnect($hSession, $sServerName)
    
        _WinHttpSetTimeouts($hConnect, 10000, 60000, 120000, 120000)
    
        ;(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) ; schreibe eine Kontroll HTML Datei
    
        ;(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) ; schreibe eine Kontroll HTML Datei
    
        ;(3)Benutzername und Passwort senden (POST)
    ;~     ConsoleWrite("Benutername in der ZKS_Abfrage ist: " & $sBenutzerName & " mit dem Passwort: " & $sPasswort & @CRLF)
        $sPOST = 'action=login&uname=' & $sBenutzerName & '&password=' & $sPasswort & '&login=login'
    ;~     ConsoleWrite("$sPOST ist: " & $sPOST & @CRLF)
        $sPaket = ""
        ConsoleWrite("STOP" & @CRLF)
        Exit
        While $sPaket = "" ;Entweder auf "0" = Zeichen oder 0 = Zahl prüfen
            $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
        WEnd
    
    
    
    ;~     $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        ;(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) ; schreibe eine Kontroll HTML Datei
    
        ;(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) ; schreibe eine Kontroll HTML Datei
    
        ;(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) ; schreibe eine Kontroll HTML Datei
    
        ClipPut("") ; Zwischenablage zur Vorsicht einmal leeren
        Sleep(500)
        ClipPut($sPaket) ; Zwischenablage mit Quellcode befüllen
        Sleep(500)
        _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
        Sleep(500)
    
        ;(7)rechts oben auf Abmelden klicken (GET)
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'GET', '/LaenderEANV_Web/registrierung?action=logout', 'https://leanv.zks-abfall.de/LaenderEANV_Web/stammdaten?BTN-main=Stammdaten')
    ;~     _FileWrite($sPaket) ; schreibe eine Kontroll HTML Datei
    
        _WinHttpCloseHandle($hConnect) ; die Handles werden beendet
        _WinHttpCloseHandle($hSession) ; die Handles werden beendet
    
        PARSEN_Dokumentenname() ; mit der befüllten Zwischenablage wird an die Funktion PARSEN_Dokumentenname() übergeben.
    
    EndFunc   ;==>ZKS_Abfragen
    Alles anzeigen

    Ich habe die beiden Zeilen

    Code
    ConsoleWrite("STOP" & @CRLF)
    Exit

    immer weiter im Code versetzt, bis ich keine STOP Meldung mehr bekommen habe. Der Windows Server hat wohl mit diesem Aufruf ein Problem

    Code
    While $sPaket = "" ;Entweder auf "0" = Zeichen oder 0 = Zahl prüfen
        $sPaket = _WinHttpSimpleSSLRequest($hConnect, 'POST', '/LaenderEANV_Web/registrierung', 'https://leanv.zks-abfall.de/LaenderEANV_Web/registrierung?action=displaylogin', $sPOST)    
    WEnd

    Wo liegt hier der Unterschied zwischen Windows 10 und Windows Server?

    Gruß Code4Fun

  • Quelltext von Firefox Version 91.0.2 (64-Bit) auslesen

    • Code4Fun
    • 3. August 2022 um 09:53

    Hallo,

    ich schreibe gerade ein Script, wo ich aus einer Textdatei Zahlenfolgen auslese und diese dann in einer in Firefox Version 91.0.2 (64-Bit) geöffneten Cloudanwendung per Tabs und Mausklickst eintrage. Irgendwann "versende" ich dann dort über eine Schaltfläche etwas. Als Response bekomme ich dann im Quelltext

    bei Erfolg: <div class="alert alert-success" role="alert">Dokument erfolgreich versendet!</div>

    und

    bei einem Fehler: <div class="alert alert-danger" role="alert">Ein Fehler ist aufgetreten: de.fum.eanv.core.exception.PermissionException: Zugriff verweigert!</div>

    Da die FF.au3 wohl nur noch bis Firefox Version 57 geht, wollte ich mal fragen, was hier denn ein guter gangbarer Weg ist, den Quelltext zu parsen?

    Vielen Dank

    Gruß C4F

  • Umlaute werden plötzlich nicht mehr sauber dargestellt

    • Code4Fun
    • 21. Juli 2022 um 12:59

    Hallo,

    ich habe eine einfach GUI, in welche deutsche Umlaute vorkommen. Wenn ich das Script mit F5 ausführe, werden diese sauber dargestellt. Wird das Script aber x64 compiliert, sehen die Umlaute komisch aus.

    Woran kann dass denn liegen?

    Gruß

  • kompilierte EXE schließt sich plötzlich

    • Code4Fun
    • 20. April 2022 um 09:40

    Guten Morgen,

    ich habe mir vor langer Zeit ein kleines Script gebaut, welches diverse Daten aus dem Internet holt und diese dann in ein lokales Verzeichnis speichert. Wenn ich das Script starte, erscheint eine kleine GUI mit 2 Buttons. Der eine Button holt die Dateien aus dem Internet, der andere öffnet den Explorer mit dem Verzeichnis, wo die Daten hingespeichert wurden.

    Der Virenscanner in der Firma hat dieses Script in letzter Zeit gerne in die Mange genommen. Daraufhin habe ich mit der Komprimierung rumgespielt.

    Was ich jetzt nicht verstehe:

    Wenn ich via F5 das Script starte, läuft alles ganz normal.
    Wenn ich die EXE starte, sehe ich im Taskmanager, das die EXE läuft. Jedoch wird diese nach ca. 2 Sekunden einfach beendet - ohne Fehlermeldung. Die GUI erscheint nicht. Der Virenscanner schlägt aber auch nicht an (habe auch die Logs kontrolliert).

    Wie kann man so einem Problem auf die Spur kommen?

    Gruß C4F

  • Frage zu (Frozen) AutoIt v3 Windows Info 64-Bit Postion und Size

    • Code4Fun
    • 31. März 2022 um 09:25

    Ich habe es jetzt mit einer weiteren Zeile WinSetState($sApp, "", @SW_MAXIMIZE) hinbekommen.

    AutoIt: Code Schnipsel
    ;Microsoft Outlook suchen und sortieren
        $sApp = "[TITLE:Outlook; CLASS:rctrl_renwnd32]"
        If WinExists($sApp) Then ; Wenn Microsoft Outlook geöffnet ist und gefunden wurde, dann ...
            If $sLocation = "GP" Then
                WinSetState($sApp, "", @SW_RESTORE)
                WinMove($sApp, "", 1672, -8, 1696, 1036) ; das sind die Koordinaten von GP
                WinActivate($sApp)
                WinSetState($sApp, "", @SW_MAXIMIZE)
            EndIf
            If $sLocation = "NU" Then
                WinSetState($sApp, "", @SW_RESTORE)
                WinMove($sApp, "", 2497, 0, 1343, 1050) ; das sind die Koordinaten von NU
                WinActivate($sApp)
            EndIf
            If $sLocation = "UL" Then
                WinSetState($sApp, "", @SW_RESTORE)
                WinMove($sApp, "", 1912, -8, 1936, 1066) ; das sind die Koordinaten von UL
                WinActivate($sApp)
            EndIf
        EndIf
    Alles anzeigen

    Danke an Alle

  • Frage zu (Frozen) AutoIt v3 Windows Info 64-Bit Postion und Size

    • Code4Fun
    • 30. März 2022 um 11:17

    Welchen Ansatz habe ich denn, das zu korrigieren, ohne hier mich "ran zu tasten"?

  • Frage zu (Frozen) AutoIt v3 Windows Info 64-Bit Postion und Size

    • Code4Fun
    • 29. März 2022 um 09:04

    Hallo zusammen,

    ich habe mir ein kleines Script gebaut, welches mir meine Anwendungen auf definierte Positionen auf meinen Monitoren platziert.

    Beim Firefox viel mir auf, das er nicht ganz richtig positioniert wird. Ich habe dann die leicht falsch sitzende Firefox Position mit (Frozen) AutoIt v3 Windows Info 64-Bit gemessen und die Werte -8, -8, 1696, 1005 ermittelt.

    Danach habe ich im Firefox rechts oben auf die Maximieren Schaltfläche geklickt. Jetzt hat sich Firefox perferkt positioniert. Daraufhin habe ich mit (Frozen) AutoIt v3 Windows Info 64-Bit nochmals gemessen, bekomme aber wieder die Werte -8, -8, 1696, 1005 angezeigt.

    Kann mir das bitte mal jemand erklären, was hier nicht ganz passt?

    Danke

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 19. November 2021 um 13:38

    OK, ganz grob verstanden.

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 19. November 2021 um 12:47

    Hallo Kanashius,

    danke für die positive Rückmeldung. Den Code schaue ich mir noch in Ruhe an. Ein Hash sagt mir was, aber von einem Salt habe ich noch nie was gehört. Was steckt da genau dahinter?

    Gruß C4F

  • Modalfenster (Lightbox) / runde Ecken / Schlagschatten

    • Code4Fun
    • 18. November 2021 um 16:33

    Erst mal vielen Dank.

    Ich habe jetzt mal die ersten Zeilen geschrieben. "Eigentlich" läuft das in die Richtung die mir ausreicht, aber folgendes ist mir aufgefallen, wo ich keine richtige Erklärung dazu habe

    1. Das Passwort wird als OK (also gleich) erkannt, auch wenn die Buchstaben gross oder klein geschrieben werden. Wie kann ich das ändern? Ein a = A ist ja nicht A = A
    2. Wenn ich die ComboBox nicht via Maus bediene, sondern mit den Pfeiltasten den Benutzer raussuche und dann mit der Tabulator Taste zum Passwortfeld hüpfe, wird das Passwort nur vom BenutzerA ausgewertet. Wähle ich BenutzerB oder Mitarbeiter via Pfeiltasten, wird das Passwort als leerer String erkannt. Klicke ich jedoch die ComboBox mit der Maus an, dann wir das Passwort ausgelesen. Ich glaube aber auch, das hier noch im Ablauf der Wurm drin steckt. Vielleicht kann mir hier einer eine Verbesserung vorschlagen
    3. In Zeile 122 lasse ich zur Kontrolle das Passwort an der Console ausgeben. Hierbei fällt mir auf, dass das nicht nur 1x ausgegeben wird, sondern gleich 5 mal. Was mache ich denn da falsch.

    Danke für eure Hilfe

    Loginscript
    C
    #include <AutoItConstants.au3>
    #include <ColorConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <FontConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <WinAPI.au3>
    #include <WinAPISys.au3>
    #include <WinAPIGdi.au3>
    #include <WinAPIHObj.au3>
    #include <WindowsConstants.au3>
    #include <misc.au3>
    
    #Region ; Script Kopf
        #cs ----------------------------------------------------------------------------
    
            Script Function:     Diese Script soll bei der Windowsanmeldung, bzw. von Hand gestartet werden können.
                                Die Aufgaben sollen sein:
                                - Benutzer via Dropdownbox auswählen
                                - Passwort eingeben
                                - Passwort überprüfen
                                - Wenn Passwort OK, dann ...
                                - verschiedene Netzwerklaufwerke auf der NAS verbinden
                                - verschiedene Outlook Profile mit dem jeweiligen Benutzer verbinden
                                - Optional: Protokolldatei schreiben, wer sich wann angemeldet hat
                                - Optional: Überlegung was passiert beim sperren oder Logout Prozess von Windows.
    
            Erstellungendatum:    17.11.2021 - Start
    
            Änderungsdatum:
    
            Version: 0.0.0.*
    
            History:
    
            0.0.0.*: Entwicklungsphase
            1.0.0.0: Initialerstellung
    
            Info: Passwörter werden in der Globale Variablendeklaration gesetzt
    
    
        #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
        Opt("WinTitleMatchMode", 2) ; 1=vom Anfang, 2=enthält, 3=genau, 4=fortgeschritten, -1 bis -4=Groß-/Klein ignorieren
    
    #EndRegion ; AutoIt-Spezifischen Optionen
    
    #Region ; Globale Variablendeklaration
        Global $iMsg, $hGUI, $hGUIParent, $hGUIChild, $idComboBox, $sComboRead = "", $sPassword, $sPasswortCheck
        Global $sFileVersion = FileGetVersion(@AutoItExe)
        Global $sPasswort_BenutzerA = "123AR"; müssen noch angepasst werden
        Global $sPasswort_BenutzerB = "456ar"; müssen noch angepasst werden
        Global $sPasswort_Mitarbeiter = "789ma"; müssen noch angepasst werden
        Global $sBenutzer = ""
    #EndRegion ; Globale Variablendeklaration
    
    #Region ; GUI Erstellung
        $hGUIParent = GUICreate("", @DesktopWidth, @DesktopHeight, -3, Default, Default, Default) ; Das Hauptfenster wird erstellt
        GUISetBkColor(0x4d4d4d)  ; Ändert die Hintergrundfarbe in ein grau
        GUISetState(@SW_SHOW, $hGUIParent) ; Das Hauptfenster neu aufbauen
    
        $hGUIChild = GUICreate("    Login - Firma Reik Raumausstattung", 600, 400, Default, Default, Default, Default, $hGUIParent)  ; Das davor liegende Childfenster wird erstellt
        GUISwitch($hGUIChild) ; Das Childfenster wird zum aktuellen Fenster angewendet, damit dort GUI Funktionen angewendet werden können.
        GUISetBkColor(0x680000)  ; Ändert die Hintergrundfarbe in ein rot
        GUICtrlCreateLabel("Bitte wähle Deinen Benutzer aus:", 50, 10, 500) ; Beschreibender Text erstellen
        GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
        GUICtrlSetFont(-1, 12)
        $idComboBox = GUICtrlCreateCombo("", 50, 50, 200) ; Dropdown Menü erstellen
        GUICtrlSetFont(-1, 10)
        GUICtrlSetData($idComboBox, "BenutzerA|BenutzerB|Mitarbeiter", "")
    
        GUISetState(@SW_SHOW, $hGUIChild)  ; Das Childfenster neu aufbauen
    
    #EndRegion ; GUI Erstellung
    
    #Region ; Hauptschleife
        $iMsg = 0
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
    
                Case $idComboBox
                    $sComboRead = GUICtrlRead($idComboBox)
                    GUICtrlCreateLabel('Du hast den Benutzer "' & $sComboRead & '" gewählt', 50, 80, 500) ; Beschreibender Text erstellen
                    GUICtrlSetFont(-1, 10)
                    GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
    
                    GUICtrlCreateLabel('Bitte gebe das Passwort von "' & $sComboRead & '" ein', 50, 120, 500) ; Beschreibender Text erstellen
                    GUICtrlSetFont(-1, 10)
                    GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
    
                    GUICtrlCreateLabel("Passwort:", 50, 150, 500) ; Schreibe Passwort
                    GUICtrlSetFont(-1, 12)
                    GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
    
                    $sPassword = GUICtrlCreateInput("", 50, 180, 500, Default, BitOR($ES_PASSWORD, $ES_AUTOHSCROLL)) ; Inputfeld für Passwort
                    GUICtrlSetFont(-1, 12)
                    GUICtrlSetColor(-1, 0x000000) ; Setzt die Schriftfarbe auf weiss
    
                    GUISetState(@SW_SHOW, $hGUIChild)  ; Das Childfenster neu aufbauen
    
            EndSwitch
    
            If _IsPressed("0D") Then
                $sPasswortCheck = GUICtrlRead($sPassword)
                _01_PasswortCheck($sComboRead, $sPasswortCheck)
            EndIf
    
        WEnd
        GUIDelete($hGUI) ; schließe die GUI
    #EndRegion ; Hauptschleife
    
    Func _01_PasswortCheck($sComboRead, $sPasswortCheck)
        ConsoleWrite("erkanntes Passwort: " & $sPasswortCheck & @CRLF)
    
        If $sComboRead = "BenutzerA" Then ; Passwortcheck für BenutzerA
            If $sPasswortCheck = $sPasswort_BenutzerA Then ; BenutzerA hat das korrekte Passwort eingegeben
                $sBenutzer = "BenutzerA"
                GUICtrlCreateLabel("Das Passwort wurde korrekt eingegeben. Login wird fortgesetzt ...", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
                _02_Steuerung()
            Else
                GUICtrlCreateLabel($sPasswortCheck & " war wohl nichts. Bitte nochmals eingeben!", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0x7FFF00) ; Setzt die Schriftfarbe auf weiss
    
            EndIf
        EndIf
    
        If $sComboRead = "BenutzerB" Then ; Passwortcheck für BenutzerB
            If $sPasswortCheck = $sPasswort_BenutzerB Then ; BenutzerB hat das korrekte Passwort eingegeben
                $sBenutzer = "BenutzerB"
                GUICtrlCreateLabel("Das Passwort wurde korrekt eingegeben. Login wird fortgesetzt ...", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
                _02_Steuerung()
            Else
                GUICtrlCreateLabel($sPasswortCheck & " war wohl nichts. Bitte nochmals eingeben!", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0x7FFF00) ; Setzt die Schriftfarbe auf weiss
    
            EndIf
        EndIf
    
        If $sComboRead = "Mitarbeiter" Then ; Passwortcheck für Mitarbeiter
            If $sPasswortCheck = $sPasswort_Mitarbeiter Then ; Mitarbeiter hat das korrekte Passwort eingegeben
                $sBenutzer = "Mitarbeiter"
                GUICtrlCreateLabel("Das Passwort wurde korrekt eingegeben. Login wird fortgesetzt ...", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0xFFFFFF) ; Setzt die Schriftfarbe auf weiss
                _02_Steuerung()
            Else
                GUICtrlCreateLabel($sPasswortCheck & " war wohl nichts. Bitte nochmals eingeben!", 50, 210, 500) ; Schreibe erfolgreiche Passworteingabemeldung
                GUICtrlSetFont(-1, 12)
                GUICtrlSetColor(-1, 0x7FFF00) ; Setzt die Schriftfarbe auf weiss
    
            EndIf
        EndIf
        GUISetState(@SW_SHOW, $hGUIChild) ; Das Childfenster neu aufbauen
    EndFunc   ;==>_01_PasswortCheck
    
    Func _02_Steuerung()
        _03_Laufwerke($sBenutzer)
        _04_Outlook()
    EndFunc   ;==>_02_Steuerung
    
    Func _03_Laufwerke($sBenutzer) ; Benutzerlaufwerke managen
        ; Verbindungen trennen
        GUICtrlCreateLabel("Loginscript von " & $sBenutzer & " wird gestartet", 150, 310, 400) ; Schreibe erfolgreiche Passworteingabemeldung
        GUICtrlSetFont(-1, 12)
        GUICtrlSetColor(-1, 0xFFFFFF)         ; Setzt die Schriftfarbe auf weiss
        GUISetState(@SW_SHOW, $hGUIChild)         ; Das Childfenster neu aufbauen
    
        ; Laufwerke löschen - eventuell vorher Anwendungen schließen, die auf diese Laufwerke zugreifen.
    
        ; Kontrolliern ob Sie gelöscht sind
    
        ; Laufwerke neu mappen
    
    EndFunc   ;==>_03_Laufwerke
    
    Func _04_Outlook() ; Outlookprofile managen
    
    EndFunc   ;==>_04_Outlook
    Alles anzeigen

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™