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

Beiträge von XovoxKingdom

  • Edit und Inputbox Change event

    • XovoxKingdom
    • 23. Februar 2011 um 17:19

    @Molaynox
    Danke für das Beispiel! :thumbup:
    ich habs jetzt angepasst, sodass es (auf meinem Rechner) garnicht mehr flackert und ich damit weiterarbeiten kann... ;)

    Spoiler anzeigen
    [autoit]

    #cs
    GUI - Nur bestimmte Zeichen in Input/Edit zulassen

    [/autoit] [autoit][/autoit] [autoit]

    Author: Molaynox
    E-Mail: [email='black.eyes.soft@gmx.de'][/email]

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.6.1
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("TestGui", 382, 70, -1, -1) ; GUI erstellen
    $hInputZ = GUICtrlCreateInput("", 16, 8, 265, 21) ; 1. Input erstellen
    $hInputB = GUICtrlCreateInput("", 16, 40, 265, 21) ; 2. Input erstellen
    GUICtrlCreateLabel("Nur Zahlen", 288, 8, 57, 17) ; Hinweis Label erstellen
    GUICtrlCreateLabel("Nur Buchstaben", 288, 40, 81, 17) ; Hinweis Label erstellen
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1 ; While Schleife starten
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $sReadZ = GUICtrlRead($hInputZ) ; Input 1 auslesen
    $sReadB = GUICtrlRead($hInputB) ; Input 2 auslesen
    $sOutput = StringRegExpReplace($sReadZ, "[A-Z]|[a-z]", "") ;Aus dem Ausgelesenen alle Buchstaben herausfiltern
    $sOutput2 = StringRegExpReplace($sReadB, "\d", "") ; Aus dem Ausgelesenen alle Zahlen herausfiltern
    If $sReadZ <> $sOutput Then GUICtrlSetData($hInputZ, $sOutput)
    If $sReadB <> $sOutput2 Then GUICtrlSetData($hInputB, $sOutput2)
    Sleep(10) ; 10 ms warten damit die Gui nicht flackert
    WEnd ; Weiter ab While

    [/autoit]
  • Edit und Inputbox Change event

    • XovoxKingdom
    • 23. Februar 2011 um 14:41

    moin,
    hier ist ein (schlechtes - quick&VeryDirty) Beispiel, aber es klappt immerhin ^^

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $input, $text
    Example($input)
    Func Example(ByRef $input)
    Local $file, $btn, $msg
    GUICreate(" My GUI input", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
    $file = GUICtrlCreateInput("", 10, 5, 300, 20)
    $input = GUICtrlCreateInput("", 10, 35, 300, 20)
    $btn = GUICtrlCreateButton("Ok", 40, 75, 60, 20)
    GUIRegisterMsg(0x0111, "MY_WM_COMMAND")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $btn
    EndSelect
    WEnd
    EndFunc ;==>Example

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nID
    $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $input And GUICtrlRead($input) <> $text Then
    $text = GUICtrlRead($input)
    MsgBox(0,"test","Text: "&$text)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

    Es ist einfach aus der Hilfedatei zusammengesucht und scheint zu funktionieren...
    Die optimale Lösung wäre für mich interessant zu wissen, sowie das Registrieren
    eines Tastendrucks innerhalb des Inputfelds OHNE, dass die Taste sofort angezeigt wird!
    Hintergrund: Ich würde gern in dem Inputfeld nur bestimmte Zeichen zulassen...
    Vielleicht kann ja jemand beide Lösungen posten :)

  • StringRegExp - kurze Hilfe bitte

    • XovoxKingdom
    • 12. Februar 2011 um 23:24

    Probier mal folgendes:

    [autoit]

    #include <array.au3>
    $x="Tabelle vom 12.02.2011 - 01 (Mark1989)"&@CRLF& _
    " 1"&@CRLF& _
    " 0.1"&@CRLF& _
    " 0.4"&@CRLF& _
    " 1.2"&@CRLF& _
    " 15.2"&@CRLF& _
    " 7"&@CRLF& _
    " 0.11"
    ;~ $x = ClipGet() ; zum testen der anderen muster

    [/autoit][autoit][/autoit][autoit]

    $muster = "[\s\t]{2,}([\d\.]+)+"
    $res = StringRegExp($x,$muster,3)
    _ArrayDisplay($res)

    [/autoit]
  • Gleichungen lösen

    • XovoxKingdom
    • 12. Februar 2011 um 12:33

    Mahlzeit,
    also erstmal vorweg: ich berufe mich nur auf Erfahrungswerte / Vermutungen...

    Ich schätze, wenn du mithilfe von AutoIt die Lösung berechnen lassen willst, dann musst
    du dir einen Parser schreiben, der dann die Formel(n) in einzelne logische Bestandteile packt.
    Beispiel: Gleichung 1 wird genau dann 0, wenn x das additive Inverse von 6, also -6 annimmt.
    Zu Gleichung 2 fällt uns sofort ein, dass ein Produkt genau dann 0 wird, wenn mindestens einer
    der Faktoren 0 ist. Somit gilt es (wie oben) die einzelnen Faktoren 0 zu bekommen.
    -4 * x = 0 => x = 0
    5 + 2x = 0 <=> 2x = -5 => x = -5/2
    3x-9=0 <=> 3x = 9 => x = 3
    das ganze in einen logischen Kontext zu bringen stelle ich mir jedoch schwierig vor.
    Ganz schlecht ist es mit ausprobieren (= Bruteforce), da z.B. -5/2 nur schwer erfasst wird.
    PS: Vielleicht findest du ja schon eine Lösung im Forum, die dir hilft :)
    Wenn du das [Projekt] "größer" aufziehst, dann wäre ich sehr gespannt, was dabei rauskommt.
    Viel Glück :)

  • Listview Abstand setzen

    • XovoxKingdom
    • 12. Februar 2011 um 12:25

    Mahlzeit,
    erstmal ein Tipp zum suchen:
    UDFs durchsuchen + Englische Übersetzung (ggf. googlen) von "Spaltenbreite"
    -> columnwidth
    dann in der UDF nach nem passenden Treffer suchen / googlen

    dann kommt (in diesem fall) in der Hilfedatei sogar ein gutes Beispiel:
    1:1 kopie:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    Local $hListView

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("ListView Set Column Width", 400, 300)
    $hListView = GUICtrlCreateListView("Column 1|Column 2|Column 3|Column 4", 2, 2, 394, 268)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Change column 1 width
    MsgBox(4160, "Information", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 150)
    MsgBox(4160, "Information", "Column 1 Width: " & _GUICtrlListView_GetColumnWidth($hListView, 0))

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]
  • Bilder vergleichen!

    • XovoxKingdom
    • 30. Januar 2011 um 14:11
    Zitat

    Würde es nicht reichen, 20-50 zufällige Pixel zu vergleichen?


    Ich schätze nicht, da z.B. bei dem gegebenen Bild die "Augen" der Schnecke unterschiedlich
    "weit" (im Fortschritt gesehen) aufleuchten. Dieser Unterschied wäre minimal und die Treffwahrscheinlichkeit
    ist dementsprechend klein, dass man genau die besagten Pixel findet.

    Meine Idee:
    Wie wäre es mit einer Checksum?
    Bei PixelChecksum kannste ja auch recht präzise überprüfen, ob zwei Bereiche identisch sind...
    Wie du diesen Checksum umsetzt (da du das Bild sicherlich "im Hintergrund" überprüfen willst)
    weiss ich jedoch nicht...
    EDIT: Tja.. da hast du meine Idee offenbar schon vorgegriffen ...

  • 2 kleine Fragen

    • XovoxKingdom
    • 21. Januar 2011 um 22:49

    Zu Frage 1:
    Prinzipiell kannst du via Stringmanipulationen die ausgelesene Website um den "unerwünschten"
    Inhalt beschneiden und den Rest in dem jeweiligen Browser darstellen.
    InternetExplorer: schau dir die _IE Funktionen (_IEBodyWriteHTML...) an
    Firefox: schau dir die FF.au3 an

    Die Manipulation des Homepagequelltextes ist jedoch mit einem recht hohen Aufwand und
    zumindest HTML-Kenntnissen verbunden. Steht somit in kaum einem Verhältnis, wenn du dieses
    System "allgemein" bzw. für mehrere Websites anwenden willst.
    Somit würde ich dir raten, sofern es deine eigene Seite ist, die mit einem entsprechenden
    Loginsystem zu versehen...
    Wenn es sich bei dem Ausschnitt um einen Frame handelt, dann ist es wahrscheinlich relativ einfach
    nur diesen darzustellen, aber meistens sind die Referenzen auf andere Frames ausgerichtet und müssten
    angepasst/gelöscht werden -> noch mehr Aufwand.

    Solltest du eine andere (mir derzeit nicht offensichtliche Lösung) einfallen, so verkünde sie ;)

  • GUI ohne "Leiste" oben

    • XovoxKingdom
    • 15. Januar 2011 um 15:37

    $WS_POPUP sollte dein "Problem" lösen:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("YourNameHere", 625, 443, 192, 124, $WS_POPUP)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Farbwert in HTML Farbwert umrechnen

    • XovoxKingdom
    • 2. Januar 2011 um 22:35

    Falls du die RGB Farbdarstellung benötigst (wird idR. in HTML verwendet)
    Das Beispiel gibt die Farbe unter der Maus an. Hex() ist das Zauberwort!

    [autoit]

    MsgBox(64, "Farbcode (RGB)", "color: " & "#" & Hex(PixelGetColor(MouseGetPos(0), MouseGetPos(1)), 6))

    [/autoit]
  • [Benchmark] - Schneller??

    • XovoxKingdom
    • 28. Dezember 2010 um 13:10

    Probier das mal:

    [autoit]

    $i=0
    $z=0
    $s=TimerInit()
    For $i = 0 To 125000000
    Next
    $z=TimerDiff($s)
    MsgBox(0,"Timer",$z&"ms")

    [/autoit]
  • Filterungsproblem von Klammern ( vielleicht mit Regexp?)

    • XovoxKingdom
    • 24. Oktober 2010 um 14:36

    Vielen Dank für die weiteren Lösungen :)
    Ich denke die schrittweise Zerlegung von Großvater ist die passend(st)e Lösung,
    die ich flexibel anpassen kann.
    @Der_Doc: Deine Lösung werde ich mit der anderen kombinieren :P

    Und nochmals Danke für die kompetente Unterstützung :thumbup:

  • Filterungsproblem von Klammern ( vielleicht mit Regexp?)

    • XovoxKingdom
    • 23. Oktober 2010 um 18:15

    @Oscar & Andy: Danke für die Idee mit der Rekursion.
    Leider ist das Neuland für mich (werde ich mir mal zu Gemüte führen).
    Ich denke das Problem ist (vorerst) gelöst. ;)
    @Andy: Vielen Dank auch für das Codebeispiel, das mir sicherlich die Funktionsweise der Rekursion näher bringt! :)

    Und wieder einmal muss ich dieses unglaublich kompetente Forum loben, das sich auch für Anfänger die Zeit nimmt,
    die Programmierung näher an den Mann zu bringen. :thumbup:

  • Filterungsproblem von Klammern ( vielleicht mit Regexp?)

    • XovoxKingdom
    • 23. Oktober 2010 um 13:55

    Hallo Community,
    ich habe vor, einen kleinen Parser für spezielle Funktionen zu schreiben, der jedoch Prioritäten durch Klammern unterstützen soll:S.
    Kleines Beispiel:
    ((a+b)-(a*(b+a)))+b

    Wie kann ich herausfinden, dass ein Term von den meisten Klammern umgeben ist?
    Also in dem Fall sollte zuerst (b+a) berechnet werden.
    Somit wäre (b+a) das Prioritätselement: 1
    (a+b) und a*(b+a) sind Prioritätselement: 2
    (a+b)-(a*(b+a)) ist Prioritäselement: 3
    ((a+b)-(a*(b+a)))+b ist Prioritätselement: 4

    Code
    Pseudocode:
    $Gleichungen[0][0] = Anzahl der verschiedenen Prioritätselemente; in dem Fall 4
    $Gleichungen[0][1] = maximale Anzahl gleichwertiger Prioritätslemente ; in dem Fall 2
    $Gleichungen[1][0] = Prioritätslement 1, Nummer 1; also in dem Fall (b+a)
    $Gleichungen[2][0] = Prioritätslement 2, Nummer 1; also in dem Fall (a+b)
    $Gleichungen[2][1] = Prioritätslement 2, Nummer 2; also in dem Fall a*(b+a)
    $Gleichungen[3][0] = Prioritätslement 3, Nummer 1; also in dem Fall (a+b)-(a*(b+a))
    $Gleichungen[4][0] = Prioritätslement 4, Nummer 1; also in dem Fall ((a+b)-(a*(b+a)))+b

    Leider habe ich keine Ahnung wie ich herausfinden kann, welcher Term z.B. Prioritätselement 1 ist.
    Meine Idee war zunächst mit Stringreplace und @extended die Anzahl der "(" zu finden, aber das half mir nicht sonderbar.

    Sollte ich mich nicht verständlich ausgedrückt haben, formuliere ich Passagen gerne präziser/deutlicher :whistling: .
    Ich hoffe, obwohl ich noch keinen ersten Code geschrieben habe, dass HuU das richtige Forum ist. :rolleyes:
    Vielleicht hat jemand schonmal so etwas gesehen oder eine gute Idee wie es umzusetzen ist. Jeder Ansatz hilft mir ;)

  • Alle Möglichkeiten von Buchstaben anzeigen

    • XovoxKingdom
    • 17. Oktober 2010 um 23:30

    Das Zauberwort heißt: Permutation.
    Du hast Glück, dass die Funktion bereits ein Bestandteil der UDF-Standardbibliothek ist.
    Die passende Funktion heißt:
    _ArrayPermute

  • AlignComment richtet Kommentare aus Update 13.08.2016

    • XovoxKingdom
    • 6. Oktober 2010 um 18:58

    Hi Andy,
    ich finde die Funktion super, da die Quelltextformatierung dadurch wesentlich
    an Überblick gewinnt :thumbup: . Und ein gut formatierter Quelltext liest sich 1000fach besser.
    Leider müssten alle User diese Funktion stets vor dem Posten einsetzen und zusätzlich
    noch die AutoIt- und Spoilertags setzen :S .
    Trotzdem werd ich mir die Funkion mal archiviren. :thumbup:

  • Autoit System

    • XovoxKingdom
    • 5. Oktober 2010 um 16:42

    Ich finde die Idee des Projekts super! :)
    Eine "eigene" Benutzeroberfläche zu erstellen hatte ich auch mal,
    aber leider war meine Geduld nicht sehr ergiebig :rolleyes: , drum
    hab ich es aufgegeben. Bevor ich überhaupt erste Codeschnipsel
    sehe, würde ich schon einen Wunsch äußern ;) :
    Taskleiste sollte deaktivierbar sein (Auch das Menü der Windowstaste)

    Viel Erfolg wünsche ich dir bei dem Projekt. Sollte mal eine Frage
    offen sein die ich zufällig beantworten kann, dann versuche ich natürlich
    gerne zu helfen. :thumbup:

  • Rechtsklick auf Control feststellen (speziell)

    • XovoxKingdom
    • 5. Oktober 2010 um 16:28

    Schau dir folgendes Beispiel an:
    (Beispielbild 'Test.bmp' muss ggf. umbenannt werden!)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    Global $Rect[4]
    $Rect[0] = 24
    $Rect[1] = 16
    $Rect[2] = 169+$Rect[0]
    $Rect[3] = 129+$Rect[1]
    $Form1 = GUICreate("Form1", 294, 213, 192, 124)
    $Pic1 = GUICtrlCreatePic("test.bmp", 24, 16, 169, 129, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_SECONDARYDOWN
    WinSetTitle($Form1,"","Rechtsklick <DOWN>")
    Case $GUI_EVENT_SECONDARYUP
    WinSetTitle($Form1,"","Rechtsklick <UP>")
    $a=GUIGetCursorInfo()
    If $a[0] >= $Rect[0] And $a[0] <= $Rect[2] And $a[1] >= $Rect[1] And $a[1] <= $Rect[3] Then
    MsgBox(0,"Funktion","Bild wurde mit Rechtsklick angeklickt!")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]


    Mit GuiSetOnEvent sollte es übrigens auch klappen!
    PS: Die Koordinaten müssen selbstverständlich auch angepasst werden :rolleyes:

  • Punkt 15 Uhr - Drucken nicht mehr möglich [GELÖST]

    • XovoxKingdom
    • 22. September 2010 um 18:16

    Vielleicht kann man die Uhrzeit des auszuführenden PC's auf eine Uhrzeit festsetzen, sodass
    "15:00h" niemals erreicht wird. Ist zwar keine Lösung, aber dieses Workaround könnte klappen :P

  • Ping

    • XovoxKingdom
    • 21. September 2010 um 13:55

    Oberer Post wurde aktualisiert :D
    Jetzt sollte alles wie beschrieben funktionieren!
    PS: _ArrayDisplay($b) hab ich als Test gebraucht, damit ich dem
    Error bei Ping(@IPAddress1) auf die Schliche kommen kann... leider erfolglos *stirnrunzel*

  • Ping

    • XovoxKingdom
    • 21. September 2010 um 13:49

    Ich habe festgestellt, dass die vorherige Funktion möglicherweise fehlerhaft war ... :S
    EDIT: Ich bin davon ausgegangen, dass der Ping bei der @IPAddress1 keinen Error auswirft :huh::S
    Keine Ahnung warum der das macht, aber die Funktion ist korrekt soweit! :)
    Die folgende Version ist OHNE GUI und mit "aktualisierter" Funktion ("alte Funktion funzt doch") ;) :

    Spoiler anzeigen
    [autoit]

    $Datei = "test.txt"
    While 1
    $status = PingList($Datei, 10)
    If $status = 1 Then
    MsgBox(0, "Herunterfahren", "HIER EINSETZEN!");Hier Shutdown eingeben
    Exit
    EndIf
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func PingList($liste, $wait = 100)
    Local $a=FileOpen($liste,0),$b=FileRead($a)
    FileClose($a)
    $a = StringStripCR($b)
    $b = StringSplit($a,@LF)
    $a = 1
    If IsArray($b) = False Then Return -1
    For $i=1 To $b[0]
    If Ping($b[$i],$wait) Then $a = 0
    Next
    If $a = 1 Then Return 1
    Return 0
    EndFunc

    [/autoit]

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™