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.5 2020.04.13)

    • Bitnugger
    • 24. April 2020 um 18:27
    Zitat von water

    "dass" ist aber grammatikalisch definitiv falsch. "das" kommt immer zum Einsatz wenn man auch "welches" verwenden könnte.

    Ja, habe es doch bereits wieder geändert... "...wenn man auch dieses, jenes oder welches..."

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Bitnugger
    • 24. April 2020 um 17:59

    _WinAPI_GetWindow

    Parameter

    $hWnd Handle des Fensters. Das ermittelte Fenster-Handle ist relativ zu diesem Fenster, basierend auf den Wert im uCmd Parameter.

    $hWnd Handle des Fensters. Das ermittelte Fenster-Handle ist relativ zu diesem Fenster, basierend auf dem Wert im $iCmd Parameter.

    $GW_HWNDNEXT - Das ermittelte Handle identifiziert das Fenster direkt unter dem angegebenen Fenster, das in der Z-Anordnung ist.

    $GW_HWNDNEXT - Das ermittelte Handle identifiziert das Fenster, das in der Z-Anordnung direkt unter dem angegebenen Fenster ist.

    $GW_HWNDPREV - Das ermittelte Handle identifiziert das Fenster direkt über dem angegebenen Fenster, das in der Z-Anordnung ist.

    $GW_HWNDPREV - Das ermittelte Handle identifiziert das Fenster, das in der Z-Anordnung direkt über dem angegebenen Fenster ist.

    Danke water !

  • Aufruf von autoit generierter HTML Datei plus Input File ohne Webserver

    • Bitnugger
    • 24. April 2020 um 16:22
    Zitat von Code4Fun

    Kann man den HFS als Dienst laufen lassen?

    Warum möchtest du das denn?

    Schau mal hier:

    http://nssm.cc/ ; Open Source

    https://www.coretechnologies.com/products/Alway…AsAService.html ; ~50 $

    http://rejetto.com/forum/index.php?topic=4713.0

  • Sammelthread "AutoIt Interne Funktionen : Erwartetes Ergebnis -> Tatsächliches Ergebnis"

    • Bitnugger
    • 24. April 2020 um 02:59

    _WinAPI_EnumWindowsTop

    C
    ; AutoIt 3.3.14.5
    
    #include <Array.au3>
    #include <WinAPI.au3>
    
    Local $aWinList = _WinAPI_EnumWindowsTop() ; Listet alle Top-Level Fenster auf
    _ArrayDisplay($aWinList, '$aWinList')

    Return Value

    Returns an array with the following format:

    [0][0] - Number of rows in array (n)

    [1][0] - Window handle

    [1][1] - Window class name

    [n][0] - Window handle

    [n][1] - Window class name

    Tatsächlich liefert die Funktion aber:

    [0][0] - Number of top-level windows found

    [0][1] - Number of rows in array (n) ; ist immer eine durch 64 teilbare Zahl

    [1][0] - Window handle

    [1][1] - Window class name

    [n][0] - Window handle

    [n][1] - Window class name

    Bsp.: Wenn [0][0] = 65, dann ist [0][1] = 128, wobei dann die Zeilen 66 - 128 leer sind.

    Korrekt wäre, wenn die Funktion die leeren Zeilen im Array vor der Rückgabe eliminiert würde.

    AutoIt
    ; AutoIt 3.3.14.5
    
    #include <Array.au3>
    #include <WinAPI.au3>
    
    Local $aWinList = _WinAPI_EnumWindowsTop()
    _ArrayDisplay($aWinList, '$aWinList - BAD')
    _ArrayDelete($aWinList, $aWinList[0][0] +1 & '-' & $aWinList[0][1] -1) ; Leere Zeilen aus Array löschen
    $aWinList[0][1] = '' ; Wird nicht benötigt, da die korrekte Anzahl der Zeilen bereits in $aWinList[0][0] steht
    _ArrayDisplay($aWinList, '$aWinList - OK')
  • Aufruf von autoit generierter HTML Datei plus Input File ohne Webserver

    • Bitnugger
    • 24. April 2020 um 01:57
    Zitat von Code4Fun

    Wenn nein, was wäre den der kleinste performante Webserver ohne viel Schnick Schnick drum rum

    https://www.rejetto.com/hfs/

  • Programmiersprache Nim

    • Bitnugger
    • 23. April 2020 um 13:03

    BugFix - wäre schön, wenn du hier deine Anleitung zur Installation für scoop, NIM, usw. posten würdest.

    Bei mir scheitert es schon bei der Installation von scoop:

    scoop.png

    Scoop is already installed... das ist gelogen... es wurde lediglich das Verzeichnis angelegt, das aber leer ist. Nachdem ich es gelöscht hatte, konnte ich die kürzere Variante testen, die aber auch nicht funktionierte.

    Ahh, es liegt an eset - der hat den Link in Quarantäne gestellt!

  • StringRegExp --> StringRegExpReplace

    • Bitnugger
    • 23. April 2020 um 10:06
    Zitat von alpines

    ConsoleWrite(StringRegExpReplace($sBody, "(?s).*strong title=""(.+?)"".+", "\1") & @CRLF)

    So ähnlich hatte ich es versucht, nur hatte ich da kein ? hinter (.+?).

    So funktioniert es.

    AutoIt
    Local $sBody = BinaryToString(InetRead('http://www.imdb.com/title/tt1399103/'))
    ConsoleWrite('>        StringRegExp: ' & StringRegExp($sBody, '(?U).*strong title="(.+)".*', 1)[0] & @CRLF)
    ConsoleWrite('- StringRegExpReplace: ' & StringRegExpReplace($sBody, "(?s).*strong title=""(.+?)"".+", "\1") & @CRLF)
    ConsoleWrite('- StringRegExpReplace: ' & StringRegExpReplace($sBody, '(?s).*strong title="(.+?)".+', '\1') & @CRLF)
    
    ;>        StringRegExp: 6.2 based on 376,129 user ratings
    ;- StringRegExpReplace: 6.2 based on 376,129 user ratings
    ;- StringRegExpReplace: 6.2 based on 376,129 user ratings

    Danke!

  • StringRegExp --> StringRegExpReplace

    • Bitnugger
    • 23. April 2020 um 09:36
    Zitat von alpines

    Was/Womit willst du denn replacen?

    Ich möchte das StringRegExpReplace dasselbe Ergebnis liefert, dass ich mit StringRegExp bekomme.

    StringRegExp: 6.2 based on 376,127 user ratings

    StringRegExpReplace: 6.2 based on 376,127 user ratings

    Nur bekomme ich das Pattern nicht hin...

  • StringRegExp --> StringRegExpReplace

    • Bitnugger
    • 23. April 2020 um 08:21

    Hallo ;)

    AutoIt
    Local $sBody = BinaryToString(InetRead('http://www.imdb.com/title/tt1399103/'))
    ConsoleWrite(StringRegExp($sBody, '(?U).*strong title="(.+)".*', 1)[0] & @CRLF)
    
    ; Output: 6.2 based on 376,127 user ratings

    Wie mache ich das mit StringRegExpReplace ?

  • WinActive

    • Bitnugger
    • 23. April 2020 um 08:12
    Zitat von WiDDoW

    Jemand ne idee was ich falsch mache.

    Ja, hier machst du was falsch, aber daran allein liegt es nicht. Die Funktion _WinAPI_GetWindow liefert nicht das Ergebnis, dass ich erwartet habe.

    Zitat von WiDDoW

    local $hLastWindow = _WinAPI_GetWindow ( $hGUi, $GW_HWNDNEXT +1)

    Mit +1 wolltest du wohl das vorletzte aktive Window ermitteln... das ginge dann so:

    Code
    Local $hLastWindow = _WinAPI_GetWindow($hGUi, $GW_HWNDNEXT)
    Local $hLastLastWindow = _WinAPI_GetWindow($hLastWindow, $GW_HWNDNEXT)

    Ich habe hier aber mal etwas mit _WinAPI_SetWinEventHook gebastelt... evtl. hilft dir das weiter, wobei ich denke, dass es mit VNC-Anwendungen nicht funktioniert, aber so bekommst du schon mal das zuletzt aktive Window.

    AutoIt: _WinAPI_SetWinEventHook_Test.au3
    ;-- TIME_STAMP   2020-04-24 05:34:47   v 0.1
    
    #Region    ;************ Includes ************
    #Include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <GuiEdit.au3>
    #include <WinAPIProc.au3>
    #include <WinAPISys.au3>
    #EndRegion ;************ Includes ************
    
    Run(@SystemDir & '\notepad.exe')
    Run(@SystemDir & '\notepad.exe')
    If Not WinWait('[CLASS:Notepad]', '', 3) Then Exit 1
    
    Global $g_aPos = WinGetPos('[ACTIVE]')
    WinMove('[ACTIVE]', '', $g_aPos[0] - 150, $g_aPos[1] + 150)
    
    Global $g_hEventProc = DllCallbackRegister('_EventProc', 'none', 'ptr;dword;hwnd;long;long;dword;dword')
    Global $g_hEventHook = _WinAPI_SetWinEventHook($EVENT_OBJECT_FOCUS, $EVENT_OBJECT_FOCUS, DllCallbackGetPtr($g_hEventProc))
    
    HotKeySet('{ESC}', 'OnAutoItExit')
    OnAutoItExitRegister('OnAutoItExit')
    
    Global $hGUI = GUICreate("Example", 300, 200)
    Global $idInsert1    = GUICtrlCreateButton("Insert1", 10, 10, 85, 25)
    Global $idInsert2    = GUICtrlCreateButton("Insert2", 10, 50, 85, 25)
    Global $idInsert3    = GUICtrlCreateButton("Insert3", 10, 90, 85, 25)
    Global $idReplace1   = GUICtrlCreateButton("Replace1", 100, 10, 85, 25)
    Global $idReplace2   = GUICtrlCreateButton("Replace2", 100, 50, 85, 25)
    Global $idReplace3   = GUICtrlCreateButton("Replace3", 100, 90, 85, 25)
    Global $idAppend1    = GUICtrlCreateButton("Append1", 190, 10, 85, 25)
    Global $idAppend2    = GUICtrlCreateButton("Append2", 190, 50, 85, 25)
    Global $idAppend3    = GUICtrlCreateButton("Append3", 190, 90, 85, 25)
    Global $idPrevWindow = GUICtrlCreateLabel('Prev Window: ', 10, 125, 280, 50), $hPrevWindow = ControlGetHandle($hGUI, '', $idPrevWindow)
    Global $_idClose     = GUICtrlCreateButton("Exit", 210, 175, 85, 25)
    
    Global $iMsg, $g_aPrevWindow[1][2], $hEdit
    
    Global $g_aInsert = [@ScriptFullPath, @ScriptName, @WorkingDir], $iIndex, $aSel, $iSel
    
    GUISetState(@SW_SHOW, $hGUI)
    
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $GUI_EVENT_CLOSE, $_idClose
                ExitLoop
            Case $idInsert1 To $idAppend3
                If IsHWnd($g_aPrevWindow[0][1]) Then
                    $hEdit = $g_aPrevWindow[0][1]
                    Switch $iMsg
                        Case $idInsert1 To $idInsert3 ; Text an Caret-Position einfügen
                            $iIndex = $iMsg - $idInsert1
                            $aSel = _GUICtrlEdit_GetSel($hEdit)
                            $iSel = $aSel[0] >= $aSel[1] ? $aSel[0] : $aSel[1]
                            _GUICtrlEdit_InsertText($hEdit, StringFormat('Insert%s: %s', $iIndex + 1, $g_aInsert[$iIndex]), $iSel)
                        Case $idReplace1 To $idReplace3 ; Selektierten Text ersetzen, oder wenn kein Text selektiert ist, Text an Caret-Position einfügen
                            $iIndex = $iMsg - $idReplace1
                            _GUICtrlEdit_ReplaceSel($hEdit, StringFormat('Replace%s: %s', $iIndex + 1, $g_aInsert[$iIndex]))
                        Case $idAppend1 To $idAppend3 ; Text hinter dem letzen Zeichen anfügen
                            $iIndex = $iMsg - $idAppend1
                            _GUICtrlEdit_AppendText($hEdit, StringFormat('Append%s: %s', $iIndex + 1, $g_aInsert[$iIndex]))
                    EndSwitch
                EndIf
        EndSwitch
    WEnd
    
    Func OnAutoItExit()
        _WinAPI_UnhookWinEvent($g_hEventHook)
        DllCallbackFree($g_hEventProc)
        While ProcessExists('notepad.exe')
            ProcessClose('notepad.exe')
        WEnd
        Exit
    EndFunc   ;==>OnAutoItExit
    
    Func _EventProc($hEventHook, $iEvent, $hWnd, $iObjectID, $iChildID, $iThreadId, $iEventTime)
        #forceref $hEventHook, $iObjectID, $iChildID, $iThreadId, $iEventTime
    
        Switch $iEvent
            Case $EVENT_OBJECT_FOCUS
                Local $sFullPath = _WinAPI_GetWindowFileName($hWnd), $sName = StringRegExpReplace($sFullPath, '.+\\(.+)$', '\1'), $sTitle = WinGetTitle(_WinAPI_GetAncestor($hWnd, $GA_ROOT))
                Switch $sName
                    Case 'notepad.exe'
                        ControlSetText($hPrevWindow, '', '', 'Prev Window:' & @LF & $sFullPath & @LF & '$hWnd = ' & $hWnd)
                        ConsoleWrite(StringFormat('+ Case $EVENT_OBJECT_FOCUS + $hWnd:%s, $sTitle:"%s", $iObjectID:%s, $iChildID:%s, $iThreadId:%s, $iEventTime:%s, $sFullPath:"%s"\n', $hWnd, $sTitle, $iObjectID, $iChildID, $iThreadId, $iEventTime, $sFullPath))
                        If $iChildID = 0 Then
                            If $hWnd = _WinAPI_GetAncestor($hWnd, $GA_ROOT) Then
                                Local $hEdit = ControlGetHandle($hWnd, '', '[CLASS:Edit; INSTANCE:1]')
                                $g_aPrevWindow[0][0] = $hWnd
                                $g_aPrevWindow[0][1] = $hEdit
                            EndIf
                        EndIf
                    Case Else
                        If $sName = '' Then
                            $g_aPrevWindow[0][0] = ''
                            $g_aPrevWindow[0][1] = ''
                        EndIf
                        ConsoleWrite(StringFormat('- Case $EVENT_OBJECT_FOCUS - $hWnd:%s, $sTitle:"%s", $iObjectID:%s, $iChildID:%s, $iThreadId:%s, $iEventTime:%s, $sFullPath:"%s"\n', $hWnd, $sTitle, $iObjectID, $iChildID, $iThreadId, $iEventTime, $sFullPath))
                EndSwitch
        EndSwitch
    EndFunc   ;==>_EventProc
    Alles anzeigen
  • Listview- Datenbank v3 Beispiel

    • Bitnugger
    • 21. April 2020 um 14:56
    Zitat von Ruebenratz

    Bei der Eingabe eines neuen Datensatzens werden mir die Felder angezeigt, allerdings nicht in der gesamten Übersicht.

    Mit "gesamten Übersicht" meinst du wohl das Listview, denke ich. Wenn dem so ist, wird es wohl daran liegen, dass die Spaltenbreite der hinzugefügten Spalten auf 0 gesetzt wird.

    In der Listview-Datenbank.au3 im Anhang habe ich mal zwei Spalten (Geschlecht, Alter) hinzugefügt und an einigen Stellen noch die nötigen Änderungen gemacht.

    Vergleiche auch mal die Listview-Datenbank-Beispiel.ini mit der bei dir gespeicherten.

    Dateien

    Listview-Datenbank-Beispiel.zip 347,33 kB – 279 Downloads
  • WinActive

    • Bitnugger
    • 19. April 2020 um 18:36
    Zitat von WiDDoW

    hat jemand eine idee wie man das lösen könnte ?

    Schau dir dazu die Function _WinAPI_GetWindow an. ; ==>> $GW_HWNDNEXT - The retrieved handle identifies the window below the specified window in the Z order.

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Bitnugger
    • 19. April 2020 um 18:02

    Lustig ist aber, dass AU3Check so keinen Fehler meldet:

    AutoIt
    $sFunction = 'Exit'
    For $i = 1 To 5
        If $i = 3 Then Call($sFunction, $i)
        ConsoleWrite($i & @CRLF)
    Next

    1

    2

    3

    4

    5

  • winclosearea() - suche eine Funktion, die dieser entspricht oder einen Workaround

    • Bitnugger
    • 17. April 2020 um 19:06

    Wenn es dir gegen den Strich geht, dass User dir Fragen stellen, bei denen du offensichtlich nicht erkennen kannst, dass sie für eine zielführende Antwort relevant/wichtig sind, hättest du deine Frage nicht in der Rubrik Hilfe & Unterstützung stellen dürfen, sondern besser in der Rubrik Programmieranfragen mit/ohne Gegenleistung.

    Zitat von svenjatzu

    sind wir denn hierim Kindergarten? welcher erwachsene ohne absolut Fehlendes selbstbewusstsein muss andere gängelng indem er Fehler anderer korrigiert was doch absolut nicht gefragt ist.

    Damit auch andere User von den Antworten/Lösungen zu deinen Fragen profitieren können, was übrigens der tiefere Sinn eines Forums ist, ist es wichtig, dass zumindest der Titel deiner Anfrage verständlich ist, damit andere User ihn mit der Suchfunktion des Forums finden können. Aus meiner Sicht hat er Dir damit ergo nur etwas Arbeit abgenommen.

    Zitat von svenjatzu

    Wenn ich einen SPrachkurs will geh ich babbel oder logopäde.

    Es geht hier nicht um Sprachen, sondern um Rechtschreibung - deine ist übrings absolut erbärmlich!

    Bei deinem Auftreten würde ich Dir nicht mal für viel Geld helfen wollen!

  • Accelerators UDF

    • Bitnugger
    • 17. April 2020 um 14:39
    Zitat von BugFix

    Habe deine Hinweise umgesetzt und nun doch eine komplexe UDF erstellt.

    Super!

    C&P-Fehler?

    Func __AM_GetFromAccArray(ByRef $_aAccTmp, $_index, $_vAsk, $_sAction='getID') ; $_sAction: 'getHK', 'getHK'

    Soll wohl...

    Func __AM_GetFromAccArray(ByRef $_aAccTmp, $_index, $_vAsk, $_sAction='getID') ; $_sAction: 'getID', 'getHK'

  • Accelerators UDF

    • Bitnugger
    • 15. April 2020 um 22:58
    Zitat von BugFix

    If $aAccelerators[$i][0] = $_HotKey Then Return SetError(1,0,0)

    Da ein Accelerator ja an eine GUI gebunden ist, kannst du hier nicht einfach nur prüfen, ob der Accelerator bereits verwendet wird. Du musst prüfen, ob der Accelerator bereits für das angegebene Fenster verwendet wird.

    Zudem sollten Accelerators für ein Fenster wieder aus dem Array gelöscht werden, wenn das Fenster oder das Control nicht (mehr) existiert. Du musst dir also nicht nur die Accelerators merken, sondern auch die Handles der Fenster, zu denen sie gehören.

    $_HotKey ...wäre $_Accelerator hier nicht passender?

    Was passiert übrigens mit dem Accelerator, wenn ich ein Dummy Control mit GUICtrlDelete($ID_1) eliminiere (und danach z.B. ein Edit Controls erzeuge)?

  • _MouseTrapCircle

    • Bitnugger
    • 12. April 2020 um 22:45

    Bilde ich mir das nur ein, oder hakt es mit _GDIPlus_GraphicsSetSmoothingMode weniger?

    AutoIt
    Func _Example_1()
        ...
        _GDIPlus_Startup()
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
        _GDIPlus_GraphicsSetSmoothingMode($hGraphic, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;Sets the graphics object rendering quality (antialiasing)
        ...

    Bei mir ruckelt es übrigens nicht!

    Zitat von BugFix

    Ich hatte erst überlegt, die Punkte des Umfangs zu berechnen und zu speichern.

    Evtl. geht das mit ..., _GDIPlus_PathAddEllipse, _GDIPlus_PathIsVisiblePoint

  • _MouseTrapCircle

    • Bitnugger
    • 12. April 2020 um 20:14

    Bei mir laufen auch beide Bsp. fehlerfrei. Unschön ist nur noch, dass der Mauszeiger sich an den nicht ganz runden Stellen festhakt und bei einem flachen Bewegungswinkel der Maus nicht in die entsprechende Richtung rutscht, aber das ist wohl nur schwer zu berechnen.

    Win10 x64 Pro, AutoIt 3.3.14.5

    Wenn die Maus in Pfeilrichtung bewegt wird: Links im Bild hakt die Maus an dieser Stelle... rechts im Bild die Position, bis wo sie rutschen sollte.

    Zitat von autoBert

    Ich benutze AutotoIt 3.3.14.5 zusammen mit:

    Hihi... 8o

  • _MouseTrapCircle

    • Bitnugger
    • 11. April 2020 um 22:32

    Hehe... is ja mal very cool! ;)

    Zitat von BugFix

    Ist die Maus bei Aktivieren der Funktion außerhalb des Kreises, wird sie bei der ersten Mausbewegung in den Kreis bewegt ...

    Besser fände ich, wenn die Maus direkt bei Aktivierung an den Innenrand des Kreises bewegt wird... evtl. auch als optionalen Parameter mit angeben.

    Gar nicht gut finde ich, dass die Maus beim Versuch den Kreis zu verlassen, in die Mitte des Kreises bewegt wird.

  • Bildschirmschoner verhindern

    • Bitnugger
    • 8. April 2020 um 21:59
    Zitat von Musashi

    This function does not stop the screen saver from executing.

    Dies bedeutet doch lediglich, dass der Bildschirmschoner nicht vom System ausgeführt wird, solange der Thread noch läuft... wobei aber nicht verhindert wird, dass er ausgeführt wird, wenn ein beliebiger Prozess ihn startet.

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™