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

Beiträge von Bitnugger

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • Bitnugger
    • 18. Januar 2018 um 07:21

    Schön fände ich, wenn du die in StructureConstants.au3 enthaltenen Strukturen (wie z. B. $tagRECT) klickbar machen würdest.

  • Ich wirf Dich raus ...? So oder so

    • Bitnugger
    • 16. Januar 2018 um 10:05
    Zitat von Peter S. Taler

    Geht das auch mit Autoit Bordmitteln?

    Ich denke mal ja...

    DriveGetDrive, DriveStatus, _WinAPI_IsWritable, _WinAPI_IsDoorOpen, _WinAPI_EjectMedia, _WinAPI_LoadMedia

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • Bitnugger
    • 15. Januar 2018 um 21:02
    Zitat von TJF

    Allerdings wird in die jeweils falsche Richtung gescrollt (x und y)...

    Bei WM_TOUCH aber nur, nehme ich mal an...

    Dann musst du nur folgende Zeilen ändern:

    GuiScroll_Prog_neu_06.au3

    Zeile 311: $SB_LINELEFT mit $SB_LINERIGHT vertauschen

    Zeile 312: 'right' mit 'left' vertauschen

    Zeile 317: $SB_LINEUP mit $SB_LINEDOWN vertauschen

    Zeile 318: 'up' mit 'down' vertauschen


    GuiScroll_Prog_neu_06_DEBUG.au3

    Zeile 343: $SB_LINELEFT mit $SB_LINERIGHT vertauschen

    Zeile 344: 'right' mit 'left' vertauschen

    Zeile 349: $SB_LINEUP mit $SB_LINEDOWN vertauschen
    Zeile 350: 'up' mit 'down' vertauschen

    Es kann aber auch gut sein, dass du deinen Monitor drehen musst... :rofl:

  • @TAB - Probleme mit Texterstellung

    • Bitnugger
    • 15. Januar 2018 um 18:22
    Zitat von tubsids

    Was mir noch auffällt sind komische Zeichen, wenn ich ÖÄÜ im Text verfüge.

    Du meinst in Outlook? Die Umlaute sind zerhackt? Dann ist es ein Kodierungsproblem. Falls ja, dann poste mal die Ausgabe der folgenden Funktion...

    AutoIt
    Local $iEncoding = FileGetEncoding(@ScriptFullPath)
    ConsoleWrite('$iEncoding = ' & $iEncoding & @CRLF)

    Habe noch was dazu gefunden: Tabulator innerhalb der E-Mail

    Zitat

    Beachte, dass Email entweder in html oder plain-text geschrieben wird. In beiden gibt es keinen setzbaren Tabstopp. Bei Drücken der Tab-Taste werden nur 3 geschützte Leerzeichen eingefügt und das auch nur wenn Du ein E-Mail Programm also einen lokalen Editor verwendest.

    Im Web (Outlook.com) kannst Du Dir evtl. für einige Fälle mit dem eingerückten Absatz behelfen.

    Gert

    Gert

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • Bitnugger
    • 15. Januar 2018 um 17:11
    Zitat von TJF

    Hast Du Lust, das nochmal anzugehen?

    Ja sicher doch... habe momentan aber leider wenig bis keine Zeit. ;)

    Neu: GuiScroll.au3

    Neu: GuiScroll_Prog_neu_06.au3

    Neu: GuiScroll_Prog_neu_06_DEBUG.au3 ; Verwendet die Pfeiltasten (Arrow keys), um WM_TOUCH-Nachrichten zu simulieren.


    Bis auf die Accelerator-Keys, die ich zum Testen von $WM_TOUCH in der DEBUG-Version eingebaut habe, sollten beide Versionen identisch sein. Was du nicht brauchst, kannst du ja wieder eliminieren.

    Achtung: die GuiScroll.au3 ist eine geänderte Version!!!

    Teste beide Versionen und falls es bei dir immer noch nicht funktioniert, dann bitte noch mal den Inhalt von _Memo() mit ausreichend Daten für weiter Fehlersuche posten.

    Die DEBUG-Version läuft jedenfalls bei mir... die normale kann ich ja nicht testen... und schau dir die Kommentare gut an!

    So, dann bin ich mal gespannt... :Glaskugel:

    Dateien

    GuiScroll.au3 8,36 kB – 217 Downloads GuiScroll_Prog_neu_06.au3 24,19 kB – 209 Downloads GuiScroll_Prog_neu_06_DEBUG.au3 26,79 kB – 228 Downloads
  • Hilfe bei _Ispressed einzelne und auch mehrere Tasten gedrückt // Motorsteuerung

    • Bitnugger
    • 13. Januar 2018 um 15:25

    Hm... durch das Sleep pausiert das Script 20 ms lang... wüsste aber ich nicht, was es sonst noch für einen Sinn hat. ;)

    Hier mal meine Version mit _IsPressed... die ich aber nur benutzen würde, wenn man mir eine Pistole an die Stirn hält. 8o

    IsPressed
    AutoIt
    ;-- TIME_STAMP   2018-01-13 15:14:57   v 0.1
    
    #Region ;************ Includes ************
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    ;~ #include <Misc.au3> ; _IsPressed
    #EndRegion ;************ Includes ************
    
    Global $g_hDLL = DllOpen("user32.dll"), $g_ptz, $g_idShow_ptz, $g_sShow_ptz
    
    _Example()
    
    Func _Example()
        Local $hGUI = GUICreate('', 800, 600, -1, -1, $WS_POPUP)
        GUISetBkColor(0x483D8B, $hGUI)
        GUISetState(@SW_MAXIMIZE)
        Local $aClientSize = WinGetClientSize($hGUI)
        GUICtrlCreateLabel(StringFormat('Erlaubte Tasten\r\r%s\r\r%s\r', 'ARROW keys: DOWN, UP, LEFT, RIGHT', 'ESC for Exit'), 100, 100, $aClientSize[0] - 200, 5 * 80, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER))
        GUICtrlSetFont(-1, 48, 900)
        GUICtrlSetColor(-1, 0x7B68EE)
        $g_idShow_ptz = GUICtrlCreateLabel('losgelassen', 100, 7 * 80, $aClientSize[0] - 200, 240, BitOR($GUI_SS_DEFAULT_LABEL, $SS_CENTER))
        GUICtrlSetFont(-1, 144)
        GUICtrlSetColor(-1, 0x008CCC)
        GUICtrlSetBkColor(-1, 0x685DAB)
    
        OnAutoItExitRegister('_Exit')
    
        AdlibRegister('_Show_ptz')
    
        While 1
            _GetKeys()
            If $g_ptz = 'x' Then Exit
    
            If $g_sShow_ptz = $g_ptz Then ContinueLoop
            $g_sShow_ptz = $g_ptz & ($g_ptz <> '' ? ' gedrückt' : 'losgelassen')
        WEnd
    EndFunc   ;==>_Example
    
    Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
        ; $hexKey must be the value of one of the keys.
        ; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is.
        Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey)
        If @error Then Return SetError(@error, @extended, False)
        Return BitAND($a_R[0], 0x8000) <> 0
    EndFunc   ;==>_IsPressed
    
    ; Mit dieser Funktion wird nur abgefragt, ob z. B. die Tasten 'x', 'y' und 'z' gedrückt sind... nicht aber, ob auch noch andere Tasten gedrückt sind.
    Func _GetKeys()
        ;               DOWN ARROW key                    UP ARROW key                           LEFT ARROW key                        RIGHT ARROW key                        ESC
        Local $iDown = _IsPressed('28', $g_hDLL), $iUp = _IsPressed('26', $g_hDLL), $iLeft = _IsPressed('25', $g_hDLL), $iRight = _IsPressed('27', $g_hDLL), $iExit = _IsPressed('1B', $g_hDLL)
    
        Switch True
            Case $iDown And $iLeft
                $g_ptz = 'downleft'
            Case $iDown And $iRight
                $g_ptz = 'downright'
            Case $iUp And $iLeft
                $g_ptz = 'upleft'
            Case $iUp And $iRight
                $g_ptz = 'upright'
            Case $iDown
                $g_ptz = 'down'
            Case $iUp
                $g_ptz = 'up'
            Case $iLeft
                $g_ptz = 'left'
            Case $iRight
                $g_ptz = 'right'
            Case $iExit
                $g_ptz = 'x'
            Case Else
                $g_ptz = ''
        EndSwitch
    EndFunc   ;==>_GetKeys
    
    Func _Show_ptz()
        Local Static $sOld_Show_ptz
    
        If $g_sShow_ptz <> $sOld_Show_ptz Then
            $sOld_Show_ptz = $g_sShow_ptz
            GUICtrlSetData($g_idShow_ptz, $g_sShow_ptz)
            GUICtrlSetColor(-1, $g_sShow_ptz = 'losgelassen' ? 0x008CCC : 0x00BFFF)
        EndIf
    EndFunc   ;==>_Show_ptz
    
    Func _Exit()
        DllClose($g_hDLL)
    EndFunc   ;==>_Exit
    Alles anzeigen
  • Hilfe bei _Ispressed einzelne und auch mehrere Tasten gedrückt // Motorsteuerung

    • Bitnugger
    • 13. Januar 2018 um 06:47

    Floops

    In der Hilfe zu _IsPressed steht: Falls diese Funktion wiederholt aufgerufen wird, sollte die Datei 'user32.dll' geöffnet werden und durch ein Handle übergeben werden.

    Also besser so: _IsPressed(57, $vDll)

    Michael_Lachmann

    Ich habe dir dazu auch mal eine kleines Script erstellt...

    Example
    AutoIt
    ;-- TIME_STAMP   2018-01-13 06:43:08
    
    #Region    ;************ Includes ************
    #Include <EditConstants.au3>
    #Include <StaticConstants.au3>
    #Include <Array.au3>
    #include <WinAPIRes.au3>
    #EndRegion ;************ Includes ************
    
    OnAutoItExitRegister('_Exit')
    
    ;~ TCPStartup()
    
    ;~ Global $iSocket = TCPConnect($ipcam, "5002")
    
    Global $ptz, $ptzdownright = 'wa', $ptzdownleft = 'wd', $ptzupright = 'sa', $ptzupleft = 'sd', $ptzdown = 'w', $ptzup = 's', $ptzright = 'a', $ptzleft = 'd', $ptzstop = 'stop'
    
    _Example()
    
    Func _Example()
        Local $hGUI = GUICreate('Example', 420, 10 * 24)
        GUISetBkColor(0x2F6E70, $hGUI)
    
        GUICtrlCreateGroup('Gedrückte Tasten', 120, 10, 285, 7.5 * 24)
        Local $idInput = GUICtrlCreateInput("", 128, 28, 270, 6.5 * 24, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY))
        Local $hInput = GUICtrlGetHandle($idInput)
        GUICtrlSetLimit(-1, 2, 0)
        GUICtrlSetFont(-1, 96)
        GUICtrlSetColor(-1, 0x5F9EA0)
        GUICtrlSetBkColor(-1, 0x008080)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        GUICtrlCreateGroup('Erlaubte Tasten', 10, 10, 95, 7.5 * 24)
        Local $idLabel = GUICtrlCreateLabel('    w ' & @CRLF & '    a ' & @CRLF & '    s ' & @CRLF & '    d ' & @CRLF & 'w + a ' & @CRLF & 'w + d ' & @CRLF & 's + a ' & @CRLF & 's + d ', 30, 30, 60, 6 * 24, BitOR($GUI_SS_DEFAULT_LABEL, $SS_LEFT))
        GUICtrlSetFont(-1, 12, 900, 0, 'Courier New')
        GUICtrlSetColor(-1, 0x5F9EA0)
        GUICtrlCreateGroup("", -99, -99, 1, 1)
    
        Local $idLabel_ptz = GUICtrlCreateLabel('Beide Motoren laufen nicht', 10, 20 + 8 * 24, 400, 24)
        GUICtrlSetFont(-1, 11, 900, 0, 'Courier New')
        GUICtrlSetColor(-1, 0x5F9EA0)
    
        ControlFocus($hGUI, '', $idInput)
    
        GUISetState()
    
        Local $sOldptz = '-1', $sMotor_A, $sMotor_B, $iIndex, $aDirection = [['w', 'vorwärts'], ['s', 'rückwärts'], ['a', 'vorwärts'], ['d', 'rückwärts']]
    
        While GUIGetMsg() <> -3
            _GetKeys()
            _WinAPI_HideCaret($hInput)
    
            Switch $ptz
                Case ''
                    If $sOldptz <> $ptz Then
                        $sOldptz = $ptz
                        GUICtrlSetData($idInput, '')
                        GUICtrlSetData($idLabel_ptz, 'Beide Motoren laufen nicht')
    ;~                     TCPSend($iSocket, $ptzstop)
                    EndIf
                Case Else
                    If $sOldptz <> $ptz Then
                        $sOldptz = $ptz
                        GUICtrlSetData($idInput, $ptz)
                        $iIndex = _ArraySearch($aDirection, StringLeft($ptz, 1), 0, 1)
                        $sMotor_A = $iIndex = -1 ? 'nicht' : $aDirection[$iIndex][1]
                        $iIndex = _ArraySearch($aDirection, StringRight($ptz, 1), 2, 3)
                        $sMotor_B = $iIndex = -1 ? 'nicht' : $aDirection[$iIndex][1]
                        GUICtrlSetData($idLabel_ptz, StringFormat('Motor A läuft %s    Motor B läuft %s', $sMotor_A, $sMotor_B))
    ;~                     TCPSend($iSocket, $ptz)
                    EndIf
            EndSwitch
        WEnd
    EndFunc
    
    Func _GetKeys()
        Local Static $w = Asc('W'), $s = Asc('S'), $a = Asc('A'), $d = Asc('D')
    
        Local $aKeyboardState, $iKeys = 0
    
        $aKeyboardState = _WinAPI_GetKeyboardState()
        For $i = 0 To 255
            If BitAND($aKeyboardState[$i], 0xF0) Then
                $iKeys += 1
            EndIf
        Next
    
        Switch $iKeys
            Case 0
                $ptz = ''            ; keine Taste gedrückt
            Case 1
                Switch True
                    Case BitAND($aKeyboardState[$w], 0xF0)    ; w gedrückt
                        $ptz = $ptzdown
                    Case BitAND($aKeyboardState[$s], 0xF0)    ; s gedrückt
                        $ptz = $ptzup
                    Case BitAND($aKeyboardState[$a], 0xF0)    ; a gedrückt
                        $ptz = $ptzright
                    Case BitAND($aKeyboardState[$d], 0xF0)    ; d gedrückt
                        $ptz = $ptzleft
                    Case Else
                        $ptz = ''    ; ungültige Taste gedrückt
                EndSwitch
            Case 2
                Switch True
                    Case BitAND($aKeyboardState[$w], 0xF0) And BitAND($aKeyboardState[$a], 0xF0)    ; wa gedrückt
                        $ptz = $ptzdownright
                    Case BitAND($aKeyboardState[$w], 0xF0) And BitAND($aKeyboardState[$d], 0xF0)    ; wd gedrückt
                        $ptz = $ptzdownleft
                    Case BitAND($aKeyboardState[$s], 0xF0) And BitAND($aKeyboardState[$a], 0xF0)    ; sa gedrückt
                        $ptz = $ptzupright
                    Case BitAND($aKeyboardState[$s], 0xF0) And BitAND($aKeyboardState[$d], 0xF0)    ; sd gedrückt
                        $ptz = $ptzupleft
                    Case Else
                        $ptz = ''    ; ungültige Taste/n gedrückt
                EndSwitch
            Case Else
                $ptz = ''            ; mehr als zwei Tasten gedrückt
        EndSwitch
    EndFunc
    
    Func _Exit()
    ;~     TCPSend($iSocket, $ptzstop)
    ;~     TCPCloseSocket($iSocket)
    ;~     TCPShutdown()
    EndFunc
    
    ; #FUNCTION# ====================================================================================================================
    ; Name...........:   _WinAPI_GetKeyboardState
    ; Description ...:   Returns the status of the 256 virtual keys
    ; Syntax.........:   _WinAPI_GetKeyboardState($iFlag=0)
    ; Parameters ....:   $iFlag   - Return Type
    ;                    0 Returns an array[256]
    ;                    1 Returns a string
    ; Return values .:   Success  - Array[256] or String containing status of 256 virtual keys
    ;                    Failure  - False
    ; Author ........:   Eukalyptus
    ; Modified.......:
    ; Remarks .......:   If the high-order bit is 1, the key is down; otherwise, it is up.
    ;                    If the key is a toggle key, for example CAPS LOCK, then the low-order bit is 1
    ;                    when the key is toggled and is 0 if the key is untoggled
    ; Related .......:   _IsPressed
    ; Link ..........;
    ; Example .......;
    ; ===============================================================================================================================
    Func _WinAPI_GetKeyboardState($iFlag = 0)
        Local $aDllRet, $lpKeyState = DllStructCreate("byte[256]")
        $aDllRet = DllCall("User32.dll", "int", "GetKeyboardState", "ptr", DllStructGetPtr($lpKeyState))
        If @error Then Return SetError(@error, 0, 0)
        If $aDllRet[0] = 0 Then
            Return SetError(1, 0, 0)
        Else
            Switch $iFlag
                Case 0
                    Local $aReturn[256]
                    For $i = 1 To 256
                        $aReturn[$i - 1] = DllStructGetData($lpKeyState, 1, $i)
                    Next
                    Return $aReturn
                Case Else
                    Return DllStructGetData($lpKeyState, 1)
            EndSwitch
        EndIf
    EndFunc   ;==>_WinAPI_GetKeyboardState
    Alles anzeigen
  • @TAB - Probleme mit Texterstellung

    • Bitnugger
    • 12. Januar 2018 um 23:21
    Zitat von tubsids

    Ja, Outlook ersetzt Tabs mit Leerzeichen.

    Hier die Antwort, warum das so ist: Beim Versenden werden alle Tabulatorzeichen (Tabstoppzeichen) durch Lehrzeichen ersetzt.

    Zitat von tubsids

    Wie kann man es ändern?

    Indem du nicht die Original-Funktion _INetMail aus den Includes benutzt.

    In der Funktion _INetExplorerCapable musst du lediglich eine kleine Änderung vornehmen, dann sollte es funktionieren.

    AutoIt
    ;~ #include <INet.au3>
    
    Func _INetMail($sMailTo, $sMailSubject, $sMailBody)
        Local $iPrev = Opt("ExpandEnvStrings", 1)
        Local $sVar, $sDflt = RegRead('HKCU\Software\Clients\Mail', "")
        If $sDflt = "Windows Live Mail" Then
            $sVar = RegRead('HKCR\WLMail.Url.Mailto\Shell\open\command', "")
        Else
            $sVar = RegRead('HKCR\mailto\shell\open\command', "")
        EndIf
        Local $iRet = Run(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)))
    ;~     Local $iRet = ConsoleWrite(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)) & @CRLF)
        Local $iError = @error, $iExtended = @extended
        Opt("ExpandEnvStrings", $iPrev)
        Return SetError($iError, $iExtended, $iRet)
    EndFunc   ;==>_INetMail
    
    Func _INetExplorerCapable($sIEString)
        If StringLen($sIEString) <= 0 Then Return SetError(1, 0, '')
        Local $s_IEReturn
        Local $n_IEChar
        For $i_IECount = 1 To StringLen($sIEString)
            $n_IEChar = '0x' & Hex(Asc(StringMid($sIEString, $i_IECount, 1)), 2)
    ;~         If $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then                    ; <-- hier werden die Zeichen gefiltert/konvertiert!
            If $n_IEChar <> 0x09 And $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then ; <-- so werden TABS unverändert gesendet!
                $s_IEReturn = $s_IEReturn & '%' & StringRight($n_IEChar, 2)
            Else
                $s_IEReturn = $s_IEReturn & Chr($n_IEChar)
            EndIf
        Next
        Return $s_IEReturn
    EndFunc   ;==>_INetExplorerCapable
    Alles anzeigen
  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • Bitnugger
    • 11. Januar 2018 um 22:58

    _WinAPI_FrameRect

    F = Falsch, R = Richtig, K = Kommentar

    F: $tRECT eine $tagRECT-Struktur oder einen Zeige auf diese, welche die logischen Koordinaten der oberen linken und unteren rechten Ecke des Rechtecks enthält

    R: $tRECT eine $tagRECT-Struktur oder ein Zeiger (Pointer) auf diese, welche die logischen Koordinaten der oberen linken und unteren rechten Ecke des Rechtecks enthält

    F: Verwandte Funktionen

    R: Siehe auch|In Beziehung stehend

    K: $tagRECT ist keine Funktion!

  • @TAB - Probleme mit Texterstellung

    • Bitnugger
    • 11. Januar 2018 um 14:49
    Zitat von tubsids

    Du schreibst: "in den UDFS (includes) selbst einsehen"

    Wie kann ich es implementieren?

    Wenn du SciTE4AutoIt3 als Editor verwendest, ist es sehr einfach.

    Steht das Caret (Textcursor) direkt vor, nach, oder in einem Funktionsnamen, kannst du Strg + j drücken - das Include, in dem sich diese Funktion befindet, wird in einem neuen Tab geladen und das Caret direkt vor den Funktionsnamen gesetzt - in deinem Fall also _INetMail und _INetExplorerCapable. Das funktioniert also nur bei Funktionen, die in mit Include geladen werden.

    Steht das Caret in einer Zeile, in der das "Schlüsselwort" #Include steht, kannst du Alt + i drücken - das Include, wird in einem neuen Tab geladen und das Caret an den Anfang des Scriptes gesetzt.

    In der AutoIt-Hilfe findest du im Anhang eine Tabelle mit dem ASCII-Zeichensatz.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.2 2017.11.12)

    • Bitnugger
    • 10. Januar 2018 um 18:48

    _WinAPI_MsgBox, _WinAPI_InvalidateRect, _WinAPI_UpdateWindow, _WinAPI_ShowWindow, _WinAPI_GetWindowWidth, _WinAPI_CreateWindowEx, _WinAPI_CreateSolidBrush,_WinAPI_GetWindowText, _WinAPI_FillRect

    Diese Examples wurde alle mit der Codepage OEM 866 erstellt... richtig wäre aber 1252 (ANSI), oder besser noch 65001 (UTF-8).

    In Zeile 2 steht jeweils der Name der Funktion... der aber bei allen bis auf zwei falsch ist.

    Code
    Row|Name                        |Bytes|Twins        |Crc32      |Titel in Zeile 2                |OK? |Korrigiert
    [0]|_WinAPI_MsgBox.au3          | 3883|0, 7         | 0xA5216147|_WinAPI_CreateWindowEx.au3      |NEIN|JA
    [1]|_WinAPI_InvalidateRect.au3  | 3965|1, 2, 3, 4, 8| 0xCB2589E5|_WinAPI_CreateSolidBrush.au3    |NEIN|JA
    [2]|_WinAPI_UpdateWindow.au3    | 3965|             | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3    |NEIN|JA
    [3]|_WinAPI_ShowWindow.au3      | 3965|             | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3    |NEIN|JA
    [4]|_WinAPI_GetWindowWidth.au3  | 3965|             | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3    |NEIN|JA
    [5]|_WinAPI_CreateWindowEx.au3  | 3881|             | 0x0595D7D5|_WinAPI_CreateWindowEx.au3      |JA  |JA
    [6]|_WinAPI_CreateSolidBrush.au3| 3963|             | 0x5BA7A103|_WinAPI_CreateSolidBrush.au3    |JA  |JA
    [7]|_WinAPI_GetWindowText.au3   | 3883|             | 0xA5216147|_WinAPI_CreateWindowEx.au3      |NEIN|JA
    [8]|_WinAPI_FillRect.au3        | 3965|             | 0xCB2589E5|_WinAPI_CreateSolidBrush.au3    |NEIN|JA

    Die Files im Anhang sind mit UTF-8 gespeichert. Zudem habe ich den Code entschlackt und noch ein wenig übersichtlicher formatiert.

    Mach damit was du willst... ;)

    Dateien

    HelpFiles.rar 12,86 kB – 389 Downloads Check_Helpfiles.au3 3,05 kB – 409 Downloads
  • Fensterinformationen via Linksklick entziehen

    • Bitnugger
    • 10. Januar 2018 um 16:07
    Zitat von Reiterfuchs

    Ich stele hier noch den Code rein, wie ich mein Objekt auf ein "richtiges" Fenster überprüfe.

    (Wer weis, ob das einmal jemand benötigt)

    In deinem Code ist die Variable $g_tStruct nicht deklariert., weshalb das Script mit einer Fehlermeldung abbricht. Damit dein Code funktioniert, muss die DllStruct aber auch die aktuellen Maus-Koordinaten enthalten, die du auch an keiner Stelle setzt. Zudem liefert dein Code nicht immer nur ein Window-Handle... welches davon ist das richtige, wenn es mehrere sind?

    Beispiel: SciTE

    $hWnd = 0x00AE0D8C    $sWinTitle = Source

    $hWnd = 0x00611584    $sWinTitle = M:\GetWindowInformation.au3 - SciTE [2 von 2]

    Das geht aber auch kürzer...

    AutoIt
    ;-- TIME_STAMP   2018-01-10 16:43:22   v 0.1
    
    #Region    ;************ Includes ************
    #Include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #EndRegion ;************ Includes ************
    
    Global $g_tStruct = DllStructCreate($tagPOINT) ; Erstellt eine Struktur, welche den zu prüfenden Punkt definiert
    
    _GetWindowInformation()
    
    Func _GetWindowInformation() ;Get the information of the current window
        Position() ; Aktualisiert die X und Y Elemente mit den X und Y Co-Koordinaten der Maus
    
        Local $hWnd = _WinAPI_WindowFromPoint($g_tStruct)
    
        Local $hParent   = _WinAPI_GetAncestor($hWnd, $GA_PARENT)
        Local $hRoot     = _WinAPI_GetAncestor($hWnd, $GA_ROOT)
        Local $hRotOwner = _WinAPI_GetAncestor($hWnd, $GA_ROOTOWNER)
    
        #cs
            Das hat deine "reparierte" Funktion geliefert...
            $hWnd = 0x00AE0D8C    $sWinTitle = Source
            $hWnd = 0x00611584    $sWinTitle = M:\GetWindowInformation.au3 - SciTE [2 von 2]
        #ce
    
        ConsoleWrite('==========================================================================================================================================================' & @CRLF)
        ConsoleWrite(StringFormat('+ $hParent   = %-18s ClassName = %-32s WinTitle = %s\r', $hParent,   _GetClassName($hParent),   WinGetTitle($hParent)))   ; Dein 1. Treffer: 0x00AE0D8C
        ConsoleWrite(StringFormat('> $hRoot     = %-18s ClassName = %-32s WinTitle = %s\r', $hRoot,     _GetClassName($hRoot),     WinGetTitle($hRoot)))     ; Dein 2. Treffer: 0x00611584
        ConsoleWrite(StringFormat('- $hRotOwner = %-18s ClassName = %-32s WinTitle = %s\r', $hRotOwner, _GetClassName($hRotOwner), WinGetTitle($hRotOwner))) ; Dein 2. Treffer: 0x00611584
        ConsoleWrite('==========================================================================================================================================================' & @CRLF)
    EndFunc   ;==>_GetWindowInformation
    
    Func _GetClassName($hWnd)
        Return _WinAPI_GetClassName($hWnd)
    EndFunc
    
    Func Position()
        DllStructSetData($g_tStruct, "x", MouseGetPos(0))
        DllStructSetData($g_tStruct, "y", MouseGetPos(1))
    EndFunc   ;==>Position
    Alles anzeigen
  • @TAB - Probleme mit Texterstellung

    • Bitnugger
    • 10. Januar 2018 um 15:31
    Zitat von tubsids

    Woran kann es liegen, dass ich Tabulatoren bei der automatisierten Erstellung im Mail vermisse?

    Weil sie ausgefiltert werden...

    Ich habe die Funktionen _INetMail() und _INetExplorerCapable(), die von _INetMail() aufgerufen wird, mal eine wenig umgestrickt und Run() durch ConsoleWrite() ersetzt... so kannst du sehen, was gesendet wird...

    AutoIt
    ;-- TIME_STAMP   2018-01-10 15:24:20   v 0.1
    
    Local $sMailTo = 'Merkel@Germany.de'
    Local $sMailSubject = 'Hey Merkel, du Ferkel - deine Zukunft musst du nun ohne mich gestalten!'
    Local $sMailBody = 'Habe im Lotto gewonnen... bin weg... für immer! ;-)'
    
    _INetMail($sMailTo, $sMailSubject, $sMailBody)
    
    Func _INetMail($sMailTo, $sMailSubject, $sMailBody)
        Local $iPrev = Opt("ExpandEnvStrings", 1)
        Local $sVar, $sDflt = RegRead('HKCU\Software\Clients\Mail', "")
        If $sDflt = "Windows Live Mail" Then
            $sVar = RegRead('HKCR\WLMail.Url.Mailto\Shell\open\command', "")
        Else
            $sVar = RegRead('HKCR\mailto\shell\open\command', "")
        EndIf
    ;~     Local $iRet = Run(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)))
        Local $iRet = ConsoleWrite(StringReplace($sVar, '%1', _INetExplorerCapable('mailto:' & $sMailTo & '?subject=' & $sMailSubject & '&body=' & $sMailBody)) & @CRLF)
        Local $iError = @error, $iExtended = @extended
        Opt("ExpandEnvStrings", $iPrev)
        Return SetError($iError, $iExtended, $iRet)
    EndFunc   ;==>_INetMail
    
    Func _INetExplorerCapable($sIEString)
        If StringLen($sIEString) <= 0 Then Return SetError(1, 0, '')
        Local $s_IEReturn
        Local $n_IEChar
        For $i_IECount = 1 To StringLen($sIEString)
            $n_IEChar = '0x' & Hex(Asc(StringMid($sIEString, $i_IECount, 1)), 2)
            If $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< hier werden die Zeichen gefiltert!
                $s_IEReturn = $s_IEReturn & '%' & StringRight($n_IEChar, 2)
            Else
                $s_IEReturn = $s_IEReturn & Chr($n_IEChar)
            EndIf
        Next
        Return $s_IEReturn
    EndFunc   ;==>_INetExplorerCapable
    Alles anzeigen
  • erledigt!!! 9,13 €-Cent sind wieviel Sekunden bei € 17.68 Stundensatz?

    • Bitnugger
    • 10. Januar 2018 um 05:33
    Zitat von Peter S. Taler

    was bitte ist ein €-cent Multiplikator?

    1768 €-Cent / 3600 s = 0,4911111111111111 €-Cent / 1 s

    9,13 €-Cent / 0,4911111111111111 €-Cent = 18,59049773755656 s

    437 * 18,59049773755656 s = 8124,047511312217 s = 135,4007918552036 n = 2,256679864253394 h

    €-Cent-Multiplikator = 18,59049773755656 s

  • Fensterinformationen via Linksklick entziehen

    • Bitnugger
    • 8. Januar 2018 um 20:07

    Hier noch ein paar Funktionen, die hilfreich sein könnten, die gewünschten Fenster zu finden...

    _WinAPI_GetAncestor()

    _WinAPI_GetClassName() ; ein Button ist z. B. "Static"

    _WinAPI_GetWindowLong() ; $GWL_STYLE, $GWL_EXSTYLE

    _WinAPI_IsChild()

    _WinAPI_GetTopWindow()

    _WinAPI_EnumWindowsTop()

    _WinAPI_EnumWindows()_WinAPI_EnumChildWindows()

    _WinAPI_EnumProcessWindows()

    und noch viele mehr... im Anhang noch ein Script mit Demo, dass dir sicher auch nützliche Infos liefert...

    Dateien

    WinGetControls.au3 14,35 kB – 333 Downloads WinGetControls-Demo.au3 3,06 kB – 362 Downloads
  • SciTE - Farbe eines Hexwertes im Skript anzeigen

    • Bitnugger
    • 8. Januar 2018 um 05:51
    Zitat von Tweaky

    Mir ist gerade aufgefallen, dass bei Farben denen eine Variable zugewiesen ist (z. B. $COLOR_RED) es nicht funktioniert.

    ... , dass bei Variablen, denen eine Farbe zugewiesen ist... 8o


    Dazu müsste der Wert der Variable ermittelt werden... und das könnte evtl. schwierig werden, wenn das Script nicht läuft. ;)

    AutoIt
    Local $COLOR_RED = '0x' & Hex(Mod(@SEC, 2) ? Random(0,0x000FFF, 1) : Random(0x001000, 0xFFF000, 1), 8)
  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • Bitnugger
    • 7. Januar 2018 um 21:31

    Habe dein Script geändert... die Funktion _Scrollbars_WM_TOUCH... teste es und falls es immer noch irgendwo hakt, dann poste bitte den Inhalt von _Memo().

    Zitat von TJF

    Jetzt ist zusätzlich zum noch bestehenden Problem nochmal ein altes Problem aufgetaucht i.S. WM_TOUCH: ...

    Schaue dir mal die Funktion GUIGetCursorInfo() an... ich denke die suchst du.


    Zitat von TJF

    Beim Tablet-Scrollen aufwärts (Finger geht nach oben) - also wenn korrekt gescrollt wird - ist $iDirectionY immer 1. In die andere Richtung - wenn das Fenster gar nicht gescrollt wird - ist $iDirectionY immer 0.

    Es wird immer die richtige y-Koordinate $iY ausgegeben.

    Weil du die beiden Variablen in deiner ...Taster.au3 in Zeile 245 und 268 explizit auf 1 setzt...

    Zitat von TJF

    ACHTUNG: Hier ist in der ersten Zeile ein > statt einem =

    Ja, guter Mann... da muss auch ein > hin! ;)

    Dateien

    GuiScroll_Prog_neu_05_2_Taster.au3 15,12 kB – 204 Downloads
  • SciTE-AddOn UDF-Funktionsbeschreibung aus Include anzeigen

    • Bitnugger
    • 7. Januar 2018 um 15:16
    Code
    #36 Show Func Description
    command.name.36.*=Show Func Description
    command.36.*=dofile f:\AutoIt\AutoIt3_LuaScripts\ShowFuncDescript.lua
    command.mode.36.*=subsystem:lua
    # Ctrl+Alt+F funktioniert nicht? - obwohl ich nirgends sehen kann, dass die Kombi belegt ist!
    #~ command.shortcut.36.*=Ctrl+Alt+F
    # Ctrl+Alt+W geht!
    command.shortcut.36.*=Ctrl+Alt+W
  • SciTE-AddOn UDF-Funktionsbeschreibung aus Include anzeigen

    • Bitnugger
    • 7. Januar 2018 um 14:18

    Wenn in der ersten Zeile des Scripts ein TimeStamp steht und die Funktionsdeklaration mit einer Leerzeile getrennt, darunter steht, wird der TimeStamp mit ausgegeben, wenn die Datei mit UTF-8 (ohne BOM) gespeichert wurde... mit BOM nicht... und die Leerzeile zwischen TimeStamp und Funktionsdeklaration wird verschluckt.

    UTF-8 (ohne BOM)

    ;-- TIME_STAMP 2017-08-13 09:18:44


    ; #FUNCTION# ====================================================================================================================

    ; Name ..........: _GetGateway

    Ausgabe:

    ;-- TIME_STAMP 2017-08-13 09:18:44

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: _GetGateway

    UTF-8 (mit BOM)

    ;-- TIME_STAMP 2017-09-03 20:35:21 v 1.0


    ; #FUNCTION# ====================================================================================================================

    ; Name ..........: _GetLocalIP


    Ausgabe:

    ; #FUNCTION# ====================================================================================================================

    ; Name ..........: _GetLocalIP

    Hm, bei mir funktioniert Show Func Description nicht mit Ctrl+Alt+F... obwohl es im Extras-Menü angezeigt wird... wenn ich die Funktion aus dem Menü auswähle, dann geht es.

  • erledigt!!! 9,13 €-Cent sind wieviel Sekunden bei € 17.68 Stundensatz?

    • Bitnugger
    • 7. Januar 2018 um 10:00

    Es gibt pro Monat 5-10 x folgende Angaben:

    437 X 9.13 €-Cent = 39,8981 €

    251 X 9.13 €-Cent = 22,9163 €

    394 X 4.50 €-Cent = 17,7300 €


    39,8981 € + 22,9163 €+ 17,73 € = 80,5444 €


    Std. = h, Minute = n, Sekunde = s


    17,68 € * 100 = 1768 €-Cent

    1 h = 60 n = 3600 s


    1768 €-Cent / 3600 s = 0,4911111111111111 €-Cent / 1 s


    9,13 €-Cent = ? s

    9,13 €-Cent / 0,4911111111111111 €-Cent = 18,59049773755656 s


    437 * 18,59049773755656 s = 8124,047511312217 s = 135,4007918552036 n = 2,256679864253394 h

    0,256679864253394 h * 60 = 15,40079185520364 n

    0,400791855203640 n * 60 = 24,04751131221840 s


    Ergebnis: 437 X 9.13 €-Cent = 39,8981 € = 02h:15n:24s

    ===================================


    4,50 €-Cent = ? s

    4,50 €-Cent / 0,4911111111111111 €-Cent = 9,16289592760181 s

    394 * 9,16289592760181 s = 3610,180995475113 s = 60,16968325791855 n = 1,002828054298643 h

    0,002828054298643 h * 60 = 0,16968325791858 n

    0,169683257918580 n * 60 = 10,18099547511480 s

    Ergebnis: 394 X 4.50 €-Cent = 17,7300 € = 01h:00n:10s

    ===================================

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™