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

Beiträge von Moombas

  • _WinAPI_CreateFile / DllStructCreate: Wie groß muss der Puffer sein?

    • Moombas
    • 26. November 2021 um 12:08

    Siehe Post #9:

    Code
    Func _ScanBarcode()
    Dim $nBytes
    ...

    Wobei $nBytes so nie definiert/initialisiert wird und somit jeden Wert haben könnte.

  • Verbindung zu ESP8266 Board (RFID Reader) nur nach reset möglich

    • Moombas
    • 26. November 2021 um 11:47

    Hmm, war nur eine Idee. Mit DLL kenne ich mich leider nicht aus und kann dir dazu nichts sagen.

    BTW: Oben spricht er COM4 an und in der MsgBox ist von COM3 die Rede. PAsst irgendwie nicht zusammen,

  • Verbindung zu ESP8266 Board (RFID Reader) nur nach reset möglich

    • Moombas
    • 26. November 2021 um 10:55

    Du änderst ja im 1. Skript die Übertragungsparameter des COM-Ports. Passen die denn zu der Schnittstelle auf der Gegenseite (also deinem Scanner)?

    Das ist häufig ein Problem bei solchen Verbindungen, das die Einstellungen nicht zusammen passen.

  • Einlesen eines Strings mit RFID-Kartenleser

    • Moombas
    • 26. November 2021 um 10:52

    Das mit der Null hört sich nach einem "Standard Rückgabewert" einer Funktion bzw. in deinem Fall ja des DLL Callback an, wenn kein Wert übergeben wurde.

    Kannst du das nicht abfragen und dann abfangen (wenn <> 0, sonst leer)?

  • Einlesen eines Strings mit RFID-Kartenleser

    • Moombas
    • 24. November 2021 um 15:55

    Wäre es nicht einfacher alles was gescannt wird zu nehmen und einfach nur die vorderen 6 Zeichen zu nutzen?

    Oder das Eingabefeld auf 6 Zeichen via GUICtrlSetLimit zu begrenzen?

  • GUICtrlSetColor Problem

    • Moombas
    • 23. November 2021 um 10:25

    funkey hat dir dazu doch oben ein Beispiel geschrieben.

  • GUICtrlSetColor Problem

    • Moombas
    • 23. November 2021 um 10:00

    Ich denke die Vermutung von BugFix passt und das zweite SetColor gehört ins else

  • Hallo in die Runde!

    • Moombas
    • 15. November 2021 um 08:59

    Hi Holger, es gibt keine blöden Fragen.

    Und mit der Zeit wirst du auch anderen helfen können, auch wenn du anfangs mehr nehmen wirst als zu geben, ist es eher eine persönliche Einstellung ob man dieses erlangte Wissen bei anderen dann auch weiter gibt, wenn andere hier dafür ggf. mal keine Zeit hatten zu antworten.

    Ich habe auch erst vor wenigen Jahren AutoIt (jedoch beruflich) kennen gelernt (bis dato nur in Pascal und Assembler programmiert) und hoffe das ich (auch wenn ich nicht immer richtig liege) trotzdem anderen (Neulingen) mittlerweile helfen (je nach Thema) kann.

    Ganz wichtig dabei: Auch dadurch kann man wieder viel lernen! Da kommt dann ggf. der ein oder andere User mit wesentlich mehr Background und Erfahrung um die Ecke und präsentiert eine einfachere Lösung (oder einen anderen Lösungsweg). Dann lernen beide (du und der Neuling) und profitieren davon und das ist auch gut so.

    Programmieren lebt von der "Lösungssuche und Entwicklung", dadurch lernt man es meiner Meinung nach am Besten.

    Also keine Scheu.

  • Hauptanzeige ändern

    • Moombas
    • 10. November 2021 um 08:32

    Bedank dich bei xrxca :D

    Ich hätte das so wahrscheinlich selber nicht hin bekommen.

  • Hauptanzeige ändern

    • Moombas
    • 9. November 2021 um 07:51

    Ja klar XD

    Du musst ja auch $hOwnHandle mit dem Handle deines Fensters versehen das auf den entsprechenden Monitor gepackt werden soll, das war nur ein Platzhalter.

    Gleiches gilt für $Monitornumber dort trägst du die Monitornummer ein, wo das Fenster hin soll.

  • Bilder aus Word extrahieren

    • Moombas
    • 8. November 2021 um 13:44

    Aber rechtlich ist das extrahieren aus der Datei da nicht noch wesentlich fragwürdiger!?

    Generell müsste er/sie sich die Erlaubnis holen, da wäre der Weg über den Kindergarten (und dieser ggf. an die betreffenden Eltern etc.) der rechtlich einzig richtige Weg.

  • Bilder aus Word extrahieren

    • Moombas
    • 8. November 2021 um 08:49

    Das müsste auch mit .doc (ohne x) gehen. Oder du fragst den Kindergarten einfach nach den Bildern...

  • Änderungen im Script verfolgen

    • Moombas
    • 1. November 2021 um 15:06

    Du bist ein Fuchs BugFix

  • Hauptanzeige ändern

    • Moombas
    • 1. November 2021 um 13:50

    Du kannst doch Fenster direkt auf Monitor X öffnen lassen ohne die Hauptanzeige zu ändern (und somit mit ggf. anderen Anzeigen in die Quere zu kommen).

    Am Start des Programms das eigne Handle und die Monitornummer an folgende Funktion übergeben:

    AutoIt
    Global $__MonitorList[1][5]
    $__MonitorList[0][0] = 0
    _CenterOnMonitor($hOwnHandle, $Monitornumber)
    
    ;==================================================================================================
    ; Function Name:   _CenterOnMonitor($hWindow[, $Monitor = -1]])
    ; Description::    Center a window on a specific monitor (or the monitor the mouse is on)
    ; Parameter(s):    $Title   The title of the window to Move/Maximize
    ;     optional:    $Text    The text of the window to Move/Maximize
    ;     optional:    $Monitor The monitor to move to (1..NumMonitors) defaults to monitor mouse is on
    ; Note:            Should probably have specified return/error codes but haven't put them in yet
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _CenterOnMonitor($hWindow, $Monitor = -1)
    ;~ Local $hWindow = WinGetHandle($Title, $Text)
        If Not @error Then
            If $Monitor == -1 Then
                $Monitor = _GetMonitorFromPoint()
            ElseIf $__MonitorList[0][0] == 0 Then
                _GetMonitors()
            EndIf
            If ($Monitor > 0) And ($Monitor <= $__MonitorList[0][0]) Then
                ; Restore the window if necessary
                Local $WinState = WinGetState($hWindow)
                If BitAND($WinState, 16) Or BitAND($WinState, 32) Then
                    WinSetState($hWindow, '', @SW_RESTORE)
                EndIf
                Local $WinSize = WinGetPos($hWindow)
                Local $x = Int(($__MonitorList[$Monitor][3] - $__MonitorList[$Monitor][1] - $WinSize[2]) / 2) + $__MonitorList[$Monitor][1]
                Local $y = Int(($__MonitorList[$Monitor][4] - $__MonitorList[$Monitor][2] - $WinSize[3]) / 2) + $__MonitorList[$Monitor][2]
                WinMove($hWindow, '', $x, $y)
            EndIf
        EndIf
    EndFunc   ;==>_CenterOnMonitor
    
    ;==================================================================================================
    ; Function Name:   _GetMonitors()
    ; Description::    Load monitor positions
    ; Parameter(s):    n/a
    ; Return Value(s): 2D Array of Monitors
    ;                       [0][0] = Number of Monitors
    ;                       [i][0] = HMONITOR handle of this monitor.
    ;                       [i][1] = Left Position of Monitor
    ;                       [i][2] = Top Position of Monitor
    ;                       [i][3] = Right Position of Monitor
    ;                       [i][4] = Bottom Position of Monitor
    ; Note:            [0][1..4] are set to Left,Top,Right,Bottom of entire screen
    ;                  hMonitor is returned in [i][0], but no longer used by these routines.
    ;                  Also sets $__MonitorList global variable (for other subs to use)
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _GetMonitors()
        $__MonitorList[0][0] = 0  ;  Added so that the global array is reset if this is called multiple times
        Local $handle = DllCallbackRegister("_MonitorEnumProc", "int", "hwnd;hwnd;ptr;lparam")
        DllCall("user32.dll", "int", "EnumDisplayMonitors", "hwnd", 0, "ptr", 0, "ptr", DllCallbackGetPtr($handle), "lparam", 0)
        DllCallbackFree($handle)
        Local $i = 0
        For $i = 1 To $__MonitorList[0][0]
            If $__MonitorList[$i][1] < $__MonitorList[0][1] Then $__MonitorList[0][1] = $__MonitorList[$i][1]
            If $__MonitorList[$i][2] < $__MonitorList[0][2] Then $__MonitorList[0][2] = $__MonitorList[$i][2]
            If $__MonitorList[$i][3] > $__MonitorList[0][3] Then $__MonitorList[0][3] = $__MonitorList[$i][3]
            If $__MonitorList[$i][4] > $__MonitorList[0][4] Then $__MonitorList[0][4] = $__MonitorList[$i][4]
        Next
        Return $__MonitorList
    EndFunc   ;==>_GetMonitors
    
    ;==================================================================================================
    ; Function Name:   _GetMonitorFromPoint([$XorPoint = -654321[, $Y = 0]])
    ; Description::    Get a monitor number from an x/y pos or the current mouse position
    ; Parameter(s):
    ;     optional:    $XorPoint X Position or Array with X/Y as items 0,1 (ie from MouseGetPos())
    ;     optional:    $Y        Y Position
    ; Note:            Should probably have specified return/error codes but haven't put them in yet,
    ;                  and better checking should be done on passed variables.
    ;                  Used to use MonitorFromPoint DLL call, but it didn't seem to always work.
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _GetMonitorFromPoint($XorPoint = 0, $y = 0)
        If @NumParams = 0 then
            local $MousePos = MouseGetPos()
            Local $myX = $MousePos[0]
            Local $myY = $MousePos[1]
        Elseif ( @NumParams = 1 ) and IsArray($XorPoint) Then
            $myX = $XorPoint[0]
            $myY = $XorPoint[1]
        Else
            $myX = $XorPoint
            $myY = $y
        EndIf
        If $__MonitorList[0][0] == 0 Then
            _GetMonitors()
        EndIf
        Local $i = 0
        Local $Monitor = 0
        For $i = 1 To $__MonitorList[0][0]
            If ($myX >= $__MonitorList[$i][1]) _
                    And ($myX < $__MonitorList[$i][3]) _
                    And ($myY >= $__MonitorList[$i][2]) _
                    And ($myY < $__MonitorList[$i][4]) Then $Monitor = $i
        Next
        Return $Monitor
    EndFunc   ;==>_GetMonitorFromPoint
    
    ;==================================================================================================
    ; Function Name:   _MonitorEnumProc($hMonitor, $hDC, $lRect, $lParam)
    ; Description::    Enum Callback Function for EnumDisplayMonitors in _GetMonitors
    ; Author(s):       xrxca (autoit@forums.xrx.ca)
    ;==================================================================================================
    Func _MonitorEnumProc($hMonitor, $hDC, $lRect, $lParam)
        #forceref $hDC, $lParam
        Local $Rect = DllStructCreate("int left;int top;int right;int bottom", $lRect)
        $__MonitorList[0][0] += 1
        ReDim $__MonitorList[$__MonitorList[0][0] + 1][5]
        $__MonitorList[$__MonitorList[0][0]][0] = $hMonitor
        $__MonitorList[$__MonitorList[0][0]][1] = DllStructGetData($Rect, "left")
        $__MonitorList[$__MonitorList[0][0]][2] = DllStructGetData($Rect, "top")
        $__MonitorList[$__MonitorList[0][0]][3] = DllStructGetData($Rect, "right")
        $__MonitorList[$__MonitorList[0][0]][4] = DllStructGetData($Rect, "bottom")
        Return 1 ; Return 1 to continue enumeration
    EndFunc   ;==>_MonitorEnumProc
    Alles anzeigen

    Dann wäre das Fenster Zentriert auf dem jeweiligen Monitor.

  • Änderungen im Script verfolgen

    • Moombas
    • 1. November 2021 um 13:46

    Das würde ja nur funktionieren, wenn jede Änderung irgendwo (zwischen)gespeichert wird (funktioniert meines Wissens bei Github auch nicht anders).

    Ich glaube nicht das Scite so etwas aktuell hat, da müsstest du dann selber Tätig werden und alle Zwischenschritte manuell abspeichern und ggf. mit Versionen versehen.

    Aber vielleicht werde ich hier auch noch von unseren Experten noch mal überrascht :)

  • Alternative zu "Sleep"

    • Moombas
    • 1. November 2021 um 08:23

    Schau dir das mal an: https://www.autoitscript.com/autoit3/docs/f…hellExecute.htm

    Du bekommst die PID zurück, mit der prüfst du in einer Schleife ob der Prozess noch läuft (https://www.autoitscript.com/autoit3/docs/f…ocessExists.htm) und wenn nicht -> Schleife Beenden (https://www.autoitscript.com/autoit3/docs/keywords/ExitLoop.htm) und den Link löschen.

    Oder du wartest bis der Link erstellt wurde (https://www.autoitscript.com/autoit3/docs/f…/FileExists.htm) und löscht ihn dann...

    Es gibt also viele Wege zum Erfolg.

  • HEX Zahlen die per Schleife erzeugt wurden in ein Array (Variable) schreiben

    • Moombas
    • 15. Oktober 2021 um 08:27

    Also bei Dec() bekomme ich beim Testen ab 0x80000000 immer "0" zurück, egal ob 0, 1 oder 2 als Parameter, egal ob als 32bit oder 64bit kompiliert.

    Deswegen hatte ich oben geschrieben:

    Zitat

    Aber irgendwie wird da auch ab 0x80000000 gekappt.

    Edit: ok, man muss dort scheinbar unbedingt das 0x weg lassen, dann funktionierts.

  • HEX Zahlen die per Schleife erzeugt wurden in ein Array (Variable) schreiben

    • Moombas
    • 14. Oktober 2021 um 14:08

    Japp, das ist der negative Bereich:

    0xFFFFFFF = -1 und geht bis 0x80000000 (-2147483648)

    Und aus meiner Sicht kein Fehler, sondern eine Möglichkeit Zahlen im Bereich von -2147483648 bis 2147483647 darzustellen.

    Evtl. gibt es einen Schalter mit dem man den negativen Bereich raus bekommt und den vollen positiven Bereich erhält, entzieht sich aber meiner Kenntnis.

    Versuch es mal so: https://www.autoitscript.com/autoit3/docs/functions/Dec.htm

    Aber irgendwie wird da auch ab 0x80000000 gekappt.

    Hilft dir ggf. das hier: https://www.autoitscript.com/forum/topic/73…ecimal-numbers/

  • 2 Folder und deren Dateien miteinander vergleichen

    • Moombas
    • 13. Oktober 2021 um 09:32

    Knapp daneben ist auch vorbei^^

  • 2 Folder und deren Dateien miteinander vergleichen

    • Moombas
    • 13. Oktober 2021 um 08:27

    Ohne es definitiv zu wissen denke ich das er wenn "\" im String ist, es durch "/" ersetzt wird.

    War falsch!

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™