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

Beiträge von BugFix

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

    • BugFix
    • 19. April 2020 um 10:32

    Da man es selten nutzt und in der Regel mit User-Funktionen ist es bisher wohl nicht aufgefallen:

    Call()

    Ruft eine benutzerdefinierte oder integrierte Funktion auf, deren Name in einem String übergeben wird.

    Heute wollte ich erstmals eine integrierte Funktion per Call aufrufen. Das ist aber unmöglich.

    AutoIt
    For $i = 1 To 5
        If $i = 3 Then Call('Exit')
        ConsoleWrite($i & @CRLF)
    Next
    Code: Fehlermeldung
    "C:\CODE\AutoIt\TEST\InfoBox_Test.au3"(2,28) : error: Exit(): undefined function.
        If $i = 3 Then Call('Exit')
        ~~~~~~~~~~~~~~~~~~~~~~~~~~^

    Ist also eine falsche Funktionsbeschreibung (kein Übersetzungsfehler) bereits im Original.

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

    • BugFix
    • 17. April 2020 um 20:49

    Ich denke hier ist der Drops gelutscht.

    [CLOSED]

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

    • BugFix
    • 17. April 2020 um 18:12
    Zitat von @svenjatzu

    Mein problem ist nicht dass ich ein Puplikum brauche um meine XY-Ungelöst lebensgeschichte zu erzählen sondern einfach wie oben beschrieben das Problem der 4 Browser mit selbem Name, was dazu führt dass nach abgeaufenem Timer die falsche Datei ausgeführt wird.

    Bevor du hier wie der sprichwörtliche Elefant durch den Porzellanladen rennst, darfst du durchaus eine Suchmaschine deiner Wahl benutzen und hinterfragen, was ein XY-Problem ist. Denn deiner Reaktion kann man entnehmen, dass du keine Ahnung hast, was das bedeutet.

    UND DANN wirst du auch die Antworten der User verstehen können.

  • Accelerators UDF

    • BugFix
    • 17. April 2020 um 15:06

    Oops - na klar.

    Zum Glück nur Kommentarfehler. ;)

  • Accelerators UDF

    • BugFix
    • 17. April 2020 um 13:58
    Zitat von Bitnugger

    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)?

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

  • Screen-PosX von bestimmtem Zeichen, wenn Text Tabs enthält

    • BugFix
    • 16. April 2020 um 18:02

    Und Vorsicht, wenn du irgendwann mit StringLen() arbeitest. Der Tab hat immer die Länge "1", egal ob er 1,2..4 Zeichen weit springt. Dadurch kannst du nicht einfach durch Längenabfrage testen, an welcher Spaltenposition in der Zeile du gerade bist.

    Wenn man mit Texten arbeitet stellt man erst mal fest, was für ein böses Konstrukt ein Tab doch ist. Zumal man ihn nicht wirklich benötigt. Die bessere Funktionalität ist eigentlich, dass bei Benutzung von Tab ohne folgenden Text die entsprechende Anzahl an Leerzeichen eingefügt werden bis zum nächsten Tab-Stop (per Einstellung z.B. in SciTE wählbar) und bei vorhandenem Text nur die Positionen angesprungen werden. In diesem Fall sind alle Positionen entweder mit Leerzeichen oder anderen Zeichen belegt und die Positionsermittlung der Tab-Stops ist dann einfach jede n-te Tabweite.

  • Ergebnis "netsh interface show" in Array umsetzen (Anfänger)

    • BugFix
    • 15. April 2020 um 18:34

    Probier mal mein (12 Jahr altes) Skript. Habs jetzt nicht getestet, ob mit neueren AutoItversionen da Änderungen erforderlich sind.

  • Accelerators UDF

    • BugFix
    • 15. April 2020 um 13:00

    Manche Änderungen sollte man doch nicht am Handy machen. Man verliert schnell die Übersicht.

  • Accelerators UDF

    • BugFix
    • 15. April 2020 um 12:07
    Zitat von alpines

    Bool vor der Schleife erzeugen, in der Schleife prüfen und dann rausspringen und später prüfen wofür man es braucht.

    Du hättest hier ruhig das $bExists komplett weglassen können und einfach direkt aus der Funktion returnen können wenn du deine Funktion so eng zusammenstauchst, du verwendest es später ja nicht mehr. Aber gut, Stilsache.

    Hehe, da hast du völlig recht. Ich hatte da noch irgendeinen anderen Gedanken im Kopf, der es nötig machte die Schleife kpl. zu durchlaufen. Der Gedanke verflog - aber das Konstrukt blieb. ^^

  • Accelerators UDF

    • BugFix
    • 15. April 2020 um 11:47

    EDIT 2020-04-15

    Fast vergessen: Natürlich muss man auch ein bestehendes Control für einen Accelerator verwenden können, nicht nur Dummies.

    EDIT 2020-04-17:

    Nach den berechtigten Hinweisen von Bitnugger habe ich nun doch aus der eigentlichen kleinen Hilfsfunktion eine komplexe UDF gemacht. Ich lasse mal die alte Version der Vollständigkeit halber im Post.

    Dadurch ergibt sich nun auch eine größere Funktionsvielfalt.

    • _Accelerator_Create
      Erstellt einen neuen Accelerator (standardmäßig mit Dummy-Ctrl, optional für eine übergebene Ctrl-ID)
    • _Accelerator_GetID
      Gibt die ID für einen übergebenen Hotkey zurück
    • _Accelerator_GetHotkey
      Gibt den Hotkey für eine übergebene ID zurück
    • _Accelerator_ChangeHotkey
      Verbindet einen neuen Hotkey mit der übergebenen Accelerator-ID
    • _Accelerator_Delete
      Löscht einen Accelerator für die übergebene ID oder alle Accelerator für die übergebene GUI

    Details wie immer in den Funktionsheadern.
    Hier ein Bsp.:

    AutoIt: Accelerators_Bsp.au3
    ;-- TIME_STAMP   2020-04-19 17:17:29
    
    #include 'Accelerators.au3'
    
    
    _Example()
    
    
    Func _Example()
        Local $aMsg, $hGui, $btn, $hGui2, $ID_1, $ID_2, $ID_3, $ID_4, $ID_5, $ID_6, $bDeleted = False, $bChanged = False
    
        $hGui = GUICreate('Test')
        $btn = GUICtrlCreateButton('Button', 50, 50, 100, 25)
        _Accelerator_Create($hGui, '^+0', $btn)
        $ID_1 = _Accelerator_Create($hGui, '^+1')  ; Ctrl+Shift+1
        $ID_2 = _Accelerator_Create($hGui, '^+2')
        $ID_3 = _Accelerator_Create($hGui, '^+3')
        $ID_4 = _Accelerator_Create($hGui, '^+4')
    
        $hGui2 = GUICreate('Test 2')
        $ID_5 = _Accelerator_Create($hGui2, '^+5')
        $ID_6 = _Accelerator_Create($hGui2, '^+6')
    
        GUISetState(@SW_SHOW, $hGui)
    
    
        ConsoleWrite('Abfrage Accelerator für "$ID_3": ' & _Accelerator_GetHotkey($hGui, $ID_3) & @CRLF)
        ConsoleWrite('Abfrage ID für Accelerator "^+3": ' & _Accelerator_GetID($hGui, '^+3') & @CRLF)
    
    
        While True
            $aMsg = GUIGetMsg(1)
            Switch $aMsg[0]
                Case -3
                    If $aMsg[1] = $hGui Then
                        Exit
                    Else
                        GUISetState(@SW_HIDE, $hGui2)
                    EndIf
                Case $btn
                    MsgBox(0, '', 'Button per Klick/Hotkey aktiviert')
                Case $ID_1
                    MsgBox(0, '', 'Hotkey für "ID_1" aufgerufen.')
                    ConsoleWrite('Hotkey für "ID_1" aufgerufen.' & @CRLF)
                Case $ID_2
                    If Not $bChanged Then
                        MsgBox(0, '', 'Hotkey für "ID_2" aufgerufen.' & @LF & 'Ändere Hotkey für "$ID_2" zu <Ctrl+Shift+9>')
                        _Accelerator_ChangeHotkey($hGui, $ID_2, '^+9')
                        $bChanged = True
                        ConsoleWrite('Hotkey für "ID_2" aufgerufen. Hotkey für "$ID_2" zu <Ctrl+Shift+9> geändert.' & @CRLF)
                    Else
                        MsgBox(0, '', 'Neuen Hotkey für "ID_2" aufgerufen.')
                        ConsoleWrite('Neuen Hotkey für "ID_2" aufgerufen.' & @CRLF)
                    EndIf
                Case $ID_3
                    If Not $bDeleted Then
                        MsgBox(0, '', 'Hotkey für "ID_3" aufgerufen.' & @LF & 'Lösche "$ID_1"')
                        _Accelerator_Delete($hGui, $ID_1)
                        $bDeleted = True
                        ConsoleWrite('Hotkey für "ID_3" aufgerufen. "$ID_1" gelöscht.' & @CRLF)
                    Else
                        MsgBox(0, '', 'Hotkey für "ID_3" aufgerufen.')
                        ConsoleWrite('Hotkey für "ID_3" aufgerufen.' & @CRLF)
                    EndIf
                Case $ID_4
                    MsgBox(0, '', 'Hotkey für "ID_4" aufgerufen.' & @LF & 'Zeige Gui 2, Hotkeys dort: <Ctrl+Shift+5>, <Ctrl+Shift+6>')
                    GUISetState(@SW_SHOW, $hGui2)
                    ConsoleWrite('Hotkey für "ID_4" aufgerufen. Wechsel zu GUI2 mit dortigen Hotkeys: <Ctrl+Shift+5>, <Ctrl+Shift+6>' & @CRLF)
                Case $ID_5
                    MsgBox(0, '', 'Hotkey für "ID_5" aufgerufen.')
                    ConsoleWrite('Hotkey für "ID_5" aufgerufen.' & @CRLF)
                Case $ID_6
                    MsgBox(0, '', 'Hotkey für "ID_6" aufgerufen.' & @LF & 'Lösche alle Hotkeys auf dieser GUI.')
                    _Accelerator_Delete($hGui2)
                    ConsoleWrite('Hotkey für "ID_6" aufgerufen. Alle Hotkeys für GUI2 gelöscht.' & @CRLF)
            EndSwitch
        WEnd
    EndFunc  ;==>_Example
    Alles anzeigen


    alte Version

    Hier habe ich die Erstellung von Dummy-Controls und ihre Anbindung an Accelerator-Keys mal in eine Funktion zusammengeführt. Finde ich etwas übersichtlicher.

    Hier mal beide Varianten im direkten Vergleich:

    Edit: Hinweis von alpines übernommen.

    AutoIt
    ;-- TIME_STAMP   2020-04-15 11:38:04
    
    _Example_1() ; der übliche Weg
    
    _Example_2() ; mit "_GuiCreateDummyAccelerator"
    
    Func _Example_1()
        Local $hGui, $ID_1, $ID_2, $ID_3, $ID_4
    
        $hGui = GUICreate('Test')
        $ID_1 = GUICtrlCreateDummy()  ; Ctrl+Shift+1
        $ID_2 = GUICtrlCreateDummy()
        $ID_3 = GUICtrlCreateDummy()
        $ID_4 = GUICtrlCreateDummy()
        Local $aAcc[4][2] = [['^+1',$ID_1],['^+2',$ID_2],['^+3',$ID_3],['^+4',$ID_4]]
        GUISetAccelerators($aAcc)
    
        GUISetState()
    
        While True
            Switch GUIGetMsg()
                Case -3
                    ExitLoop
                Case $ID_1
                    MsgBox(0, '', 'Hotkey für "ID_1" aufgerufen.')
                Case $ID_2
                    MsgBox(0, '', 'Hotkey für "ID_2" aufgerufen.')
                Case $ID_3
                    MsgBox(0, '', 'Hotkey für "ID_3" aufgerufen.')
                Case $ID_4
                    MsgBox(0, '', 'Hotkey für "ID_4" aufgerufen.')
            EndSwitch
        WEnd
    EndFunc
    
    Func _Example_2()
        Local $hGui, $ID_1, $ID_2, $ID_3, $ID_4
    
        $hGui = GUICreate('Test')
        $ID_1 = _GuiCreateDummyAccelerator($hGui, '^+1')  ; Ctrl+Shift+1
        $ID_2 = _GuiCreateDummyAccelerator($hGui, '^+2')
        $ID_3 = _GuiCreateDummyAccelerator($hGui, '^+3')
        $ID_4 = _GuiCreateDummyAccelerator($hGui, '^+4')
    
        GUISetState()
    
        While True
            Switch GUIGetMsg()
                Case -3
                    Exit
                Case $ID_1
                    MsgBox(0, '', 'Hotkey für "ID_1" aufgerufen.')
                Case $ID_2
                    MsgBox(0, '', 'Hotkey für "ID_2" aufgerufen.')
                Case $ID_3
                    MsgBox(0, '', 'Hotkey für "ID_3" aufgerufen.')
                Case $ID_4
                    MsgBox(0, '', 'Hotkey für "ID_4" aufgerufen.')
            EndSwitch
        WEnd
    EndFunc
    
    
    ; #FUNCTION# =======================================================================================
    ; Name ..........: _GuiCreateDummyAccelerator
    ; Description ...: Creates a dummy control associated with a hotkey for a gui.
    ; Parameters ....: $_hWnd    The gui handle
    ; ...............: $_HotKey  The desired hotkey
    ; Return values .: Success   The ID the hotkey is associated with.
    ; ...............: Failure   0  @error=1, hotkey already exists
    ; Author ........: BugFix
    ; ==================================================================================================
    Func _GuiCreateDummyAccelerator($_hWnd, $_HotKey)
        Local Static $aAccelerators[1][2] = [['empty']]
        For $i = 0 To UBound($aAccelerators) -1
            If $aAccelerators[$i][0] = $_HotKey Then Return SetError(1,0,0)
        Next
        If $aAccelerators[0][0] <> 'empty' Then
            ReDim $aAccelerators[UBound($aAccelerators)+1][2]
        EndIf
        Local $dummy = GUICtrlCreateDummy()
        $aAccelerators[UBound($aAccelerators)-1][0] = $_HotKey
        $aAccelerators[UBound($aAccelerators)-1][1] = $dummy
        GUISetAccelerators($aAccelerators, $_hWnd)
        Return $dummy
    EndFunc  ;==>_GuiCreateDummyAccelerator
    Alles anzeigen

    Dateien

    Accelerators[0.2].au3 10,35 kB – 350 Downloads Accelerators_Bsp.au3 2,79 kB – 330 Downloads
  • _MouseTrapCircle

    • BugFix
    • 12. April 2020 um 20:44
    Zitat von Bitnugger

    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.

    Ich prüfe ja, ob die Position in der errechneten Kreisfläche ist. Ich bin eigentlich recht zufrieden mit dem Ergebnis. Mein Ziel war ja nicht, dass der Benutzer am Kreisrand mit der Maus entlangfährt, sondern dass der nutzbare Bereich auf eine Kreisform beschränkt, also gewissermaßen fokussiert wird.

    Ich hatte erst überlegt, die Punkte des Umfangs zu berechnen und zu speichern. Aber sowohl das Berechnen als auch das Auswerten wären zeitlich indiskutabel lang. Die jetzige Berechnung braucht zwar nur ein paar Ticks, führt aber schon dazu, dass bei schneller Bewegung ein geringfügiges Ruckeln sichtbar ist.

    autoBert

    Hast du die Probleme auch, wenn du das Skript kompilierst?

    Im Moment scheint sich das Problem an der "Home"-Version festzumachen. Ich muss mal schauen, ob irgendjemand in der Familie ein Win 10 Home benutzt. Wozu gibts die überhaupt? Ich verwende immer nur Pro-Versionen, da gibt einem M$ wenigstens die Chance das System etwas zu beeinflussen.

  • _MouseTrapCircle

    • BugFix
    • 12. April 2020 um 13:26

    autoBert

    Bei mir laufen beide Bsp. fehlerfrei.

    Win7 pro x64

    Ich habe auch probiert, ob die Position der Taskbar einen Einfluss hat - hat sie aber (jedenfalls bei mir) nicht. Die absoluten Positionen gehen vom sichtbaren Bildschirmbereich ohne Taskbar aus.

    Somit weiß ich gar nicht, wo ich jetzt nach Störquellen suchen sollte, da es ja bei mir läuft.

    :/

  • _MouseTrapCircle

    • BugFix
    • 12. April 2020 um 08:11

    Neue Version 0.2.

  • _MouseTrapCircle

    • BugFix
    • 11. April 2020 um 23:48
    Zitat von @Bitnugger

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

    Das sollte kein Problem sein.

    Zitat von @Bitnugger

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

    OK, wenn ich den ersten Punkt umsetzte lässt sich das auch einfacher machen. Dann kann ich die Abfrage entgegengesetzt ausführen und muss die Maus nicht zurück bewegen. Da sie immer im Kreis ist, verwerfe ich dann einfach die nach außen gehenden Bewegungen. Werde ich morgen erledigen.

  • _MouseTrapCircle

    • BugFix
    • 11. April 2020 um 19:45

    EDIT:

    Hinweise von Bitnugger eingearbeitet:

    Ein Nebenprodukt aus einem Projekt von mir, vielleicht auch nützlich für euch.

    Mit der Funktion _MouseTrapCircle() wird die Maus in einem definierten Kreis gefangen.

    Ist die Maus bei Aktivieren der Funktion außerhalb des Kreises, wird sie bei der ersten Mausbewegung in den Kreis bewegt und kann diesen nicht wieder verlassen, bis die Funktion deaktiviert wird.

    Bei Aufruf der Funktion wird die Maus in den Kreis verschoben und kann diesen bis zur Deaktivierung nicht mehr verlassen.

    Der Kreis wird definiert über den Mittelpunkt (Standard) oder die linke obere Ecke des umlaufenden Rechtecks sowie dem Durchmesser.

    Weiteres Bsp. (Kreis nicht auf Gui) hinzugefügt.

    AutoIt: MouseTrapCircle_Bsp.au3
    ;-- TIME_STAMP   2020-04-12 08:06:53
    
    #include 'MouseTrapCircle.au3'
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    
    Opt('MustDeclareVars', 1)
    
    
    _Example_1()
    
    Global $g_hPen, $g_hGraphic, $g_hDC
    _Example_2()  ; "Strg+Shift+T" - Trap On/Off, "Strg+Shift+0" - Beenden
    
    Func _Example_1()
        Local $hGui, $hGraphic, $dummy, $bTrap = False, $idStatus
        Local $iD = 140 ; Durchmesser
    
        $hGui = GUICreate('MouseTrapCircle   [Trap: OFF]', 300, 300, 400, 100)
        GUICtrlCreateLabel('"Strg+Shift+T"' & @LF & '(De)Aktiviert das Trapping.', 20, 20, 260, 50)
        GUICtrlSetFont(-1, 12, 400, 0, 'Consolas')
        $idStatus = GUICtrlCreateLabel('Trap: OFF', 20, 260, 100)
        GUICtrlSetFont(-1, 12, 600, 0, 'Consolas')
        GUICtrlSetColor(-1, 0xFF0000)
        $dummy = GUICtrlCreateDummy()
        Local $aAcc[1][2] = [['^+T',$dummy]]
        GUISetAccelerators($aAcc, $hGui)
    
        GUISetState(@SW_SHOW, $hGui)
    
        _GDIPlus_Startup()
        $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    ;~     _GDIPlus_GraphicsDrawEllipse($hGraphic, 80, 100, $iD, $iD)        ; draw by edge
        _GDIPlus_GraphicsDrawCircleByCentre($hGraphic, 150, 170, $iD)     ; draw by center
    
        While True
            Switch GUIGetMsg()
                Case -3
                    ExitLoop
                Case $dummy
                    $bTrap = Not $bTrap
                    If $bTrap Then
    ;~                     _MouseTrapCircle($hGui, 80, 100, 140, True) ;    by: left-top edge
                        _MouseTrapCircle($hGui, 150, 170, 140)      ; or by: center
                        WinSetTitle($hGui, '', 'MouseTrapCircle   [Trap: ON]')
                        GUICtrlSetData($idStatus, 'Trap: ON')
                        GUICtrlSetColor($idStatus, 0x00BE08)
                    Else
                        _MouseTrapCircle()
                        WinSetTitle($hGui, '', 'MouseTrapCircle   [Trap: OFF]')
                        GUICtrlSetData($idStatus, 'Trap: OFF')
                        GUICtrlSetColor($idStatus, 0xFF0000)
                    EndIf
            EndSwitch
        WEnd
    
        _GDIPlus_GraphicsDispose($hGraphic)
        _GDIPlus_Shutdown()
        GUIDelete($hGui)
    EndFunc
    
    Func _GDIPlus_GraphicsDrawCircleByCentre($_hGraphic, $_iX, $_iY, $_iDiameter, $_hPen=0)
        $_iX -= $_iDiameter/2
        $_iY -= $_iDiameter/2
        _GDIPlus_GraphicsDrawEllipse($_hGraphic, $_iX, $_iY, $_iDiameter, $_iDiameter, $_hPen)
    EndFunc
    
    ;---------------------------------------------------------------------------------------------------
    
    Func _Example_2()
        AdlibRegister('_DrawOnDesktop')
        HotKeySet('^+T', '_SwitchTrap')
        HotKeySet('^+0', '_Exit')
        _GDIPlus_Startup()
        While True
            Sleep(10)
        WEnd
    EndFunc
    
    Func _SwitchTrap()
        Local Static $bTrap = False
        $bTrap = Not $bTrap
        If $bTrap Then
            _MouseTrapCircle(-1, 500, 500, 250)  ; by: center
            MsgBox(64, '_MouseTrapCircle', 'MouseTrapCircle   [ ON ]', 2)
        Else
            _MouseTrapCircle()
            MsgBox(64, '_MouseTrapCircle', 'MouseTrapCircle   [ OFF ]', 2)
        EndIf
    EndFunc
    
    Func _DrawOnDesktop()
        Local Static $bMinimized = False
        If Not $bMinimized Then
            $bMinimized = True
            Send('#m')
        EndIf
        Local $g_hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop)
        Local $g_hGraphic = _GDIPlus_GraphicsCreateFromHDC($g_hDC)
        Local $g_hPen = _GDIPlus_PenCreate(0xFF00BE08, 4)
        _GDIPlus_GraphicsDrawCircleByCentre($g_hGraphic, 500, 500, 250, $g_hPen)
        _GDIPlus_PenDispose($g_hPen)
        _GDIPlus_GraphicsDispose($g_hGraphic)
        _WinAPI_ReleaseDC(0, $g_hDC)
    EndFunc
    
    Func _Exit()
        AdlibUnRegister('_DrawOnDesktop')
        _GDIPlus_Shutdown()
        Send('#+m')
        Exit
    EndFunc
    Alles anzeigen

    Dateien

    MouseTrapCircle[0.2].au3 4,45 kB – 360 Downloads
  • Container für Controls

    • BugFix
    • 11. April 2020 um 09:41

    Da hilft eigentlich nur Ausprobieren. Allein aus der Parameterbeschreibung ergibt sich nicht unbedingt das Verhalten im aktuellen Fall.

    Eventuell solltest du auch den Clientbereich verwerfen.

    AutoIt
    _WinAPI_SetWindowPos($g_hChildGui, $HWND_BOTTOM, $iScrollPosX, 0, Default, Default, BOr($SWP_NOSIZE, $SWP_NOCOPYBITS))

    Wie gesagt, muss man probieren.

  • Container für Controls

    • BugFix
    • 11. April 2020 um 07:40

    Du kannst doch die Z-Order festlegen. Setze nach jeder Aktion die Position, wie von dir gewünscht.

    _WinApiSetWindowPos

  • Container für Controls

    • BugFix
    • 8. April 2020 um 18:23

    Aber da ist doch ein Child passend, was spricht dagegen?

    Das machst du von Anfang an deutlich breiter als das Parent und verschiebst es im Parent per Scrollbar. - So würde ich vorgehen.

  • Statusbar small

    • BugFix
    • 8. April 2020 um 14:03

    Neue Version (v 0.2) in Post 1.

    - Fontname, -größe, style beim Erstellen definierbar

    - Text-/Hintergrundfarbe können für einzelne/mehrere Parts gesetzt werden

  • Statusbar small

    • BugFix
    • 7. April 2020 um 22:19
    Zitat von Bitnugger

    Der Coder muss selbst darauf achten, dass andere Controls dadurch nicht verdeckt werden. Was passiert denn z.B. wenn das Fenster bereits maximiert ist, oder die Größe via WM_GETMINMAXINFO im Script begrenzt wird?

    Hmm, das ist wohl war. Stimmt, man sollte nicht versuchen alle Arbeit abzunehmen. Den Weg gehe ich inzwischen auch bei Errorhandling. In einer UDF achte ich darauf, dass es in der Funktion funktioniert, wenn die Parameter, wie im Kopf beschrieben, übergeben werden. Mögliche falsche Übergaben des Anwenders gehen ja den Ersteller einer UDF nichts an, dieses Errorhandling liegt dann in der Verantwortung des Anwenders.

    Also z.B.: If Not IsHwnd($param) ist völlig überflüssig, wenn im Funktionskopf steht, dass $param ein Handle zu sein hat. In dieser Richtung sind fast alle AutoIt-UDF hoffnungslos überfrachtet.

    Aber um auf das eigentliche Thema zurückzukommen, ich werde dann die verwendete Größe der Statusbar mit zurückgeben, dann kann der Anwender selbst für den genauen Platz sorgen.

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™