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

Beiträge von name22

  • GUI per Maus einblenden

    • name22
    • 6. April 2013 um 23:30

    Wenn ich das richtig sehe, dann setzt du die Variable $aktiviert auf 1 sobald die Maus innerhalb des "Einblenderamens" ist. Wenn $aktiviert nach 1 Sekunde immer noch den Wert 1 hat, wird die GUI eingeblendet.
    Aber wenn der Mauszeiger den festgelegten Bereich verlässt, dann müsstest du natürlich auch $aktiviert wieder zurücksetzen, sonst wird der Vorgang in jedem Fall ausgeführt.

    Hab ich das so richtig verstanden bis jetzt?

  • Taschenrechner Error

    • name22
    • 5. April 2013 um 22:44

    Macht ja nichts, obwohl es wirklich kein Aufwand sein dürfte nach der richtigen Funktion zu Googlen oder einen Blick in die deutsche AutoIt Hilfe zu werfen. Allerdings kannst du feststellen ob du Funktionen die im Standardfunktionsumfang von AutoIt enthalten sind richtig geschrieben hast, indem du auf ihre Farbe im Syntaxhighlighting von Scite achtest. Integrierte Funktionen sind dunkelblau gefärbt, solche aus UDFs hellblau (zumindest nach dem alten Farbsystem).

  • Taschenrechner Error

    • name22
    • 5. April 2013 um 22:36

    Auch ohne dein zerstückeltes, unlesbares Script lesen zu können, kann ich dir direkt sagen wo der Fehler liegt...
    Du musst lediglich beachten, wie man Funktionen schreibt. Die Funktion GUICreateRead existiert nicht, das sagt dir auch der AutoIt Error (abgesehen davon macht diese Bezeichnung keinen Sinn, deine Englischkenntnisse sind.. erschreckend).
    Ich gehe jetzt einfach mal davon aus, dass du nach der Funktion GUICtrlRead suchst.

  • Listbox Suchfunktion ?

    • name22
    • 5. April 2013 um 22:14

    Wie wäre es mit einem eigenen Ansatz? Ansonsten kannst du auch gleich in "Programmieranfragen" posten. Dein mit Koda zusammengezogenes "Script" hilft hier nämlich nur wenig...
    In diesem Script wäre ein Ansatz zu deinem Vorhaben: https://autoit.de/index.php?page=Thread&threadID=5669
    Im Grunde kommt es dabei für dich nur auf die beiden Funktionen _GUICtrlListBox_FindString und _GUICtrlListBox_SetCurSel an. Den Rest findest du per Google, Forensuche, diversen Tutorials und den AutoIt Hilfeartikeln zu diesen Funktionen, wahlweise auf Englisch oder Deutsch.
    Keiner von uns möchte all das umsonst übersetzt haben.

  • Prüfen ab wann Visible Text nicht mehr länger wird

    • name22
    • 5. April 2013 um 17:21

    Das wäre zwar eine ganz billige Lösung, aber wie wäre es, wenn du per StringInStr prüfst ob das Wort "Fertig" oder irgendetwas anderes markantes im Titel enthalten ist?

  • RegEx Ausdruck

    • name22
    • 5. April 2013 um 17:05

    Du hast unsere "Versionen" falsch herum zugeordnet :whistling: .
    Die Zahlen nach dem Backslash im "Ersetzen"-String sind Backreferences zu den Ergebnissen die vorher im Pattern durch Klammern gruppiert wurden. Wenn ich einen Teil des Patterns in "()" zusammenfasse wird dieser als Gruppe gespeichert und kann im zweiten Parameter verwendet werden. "\1" wird also mit dem Ergebnis der ersten Gruppe ersetzt, "\2" mit dem Ergebnis der zweiten Gruppe. Bei mir steht das Leerzeichen zwischen den 2 Gruppen nicht in einer eigenen Gruppe, daher habe ich nur 2 Gruppen und kann sie ohne das Leerzeichen verwenden um den gesamten gefundenen String zu ersetzen (dann packe ich noch ein TAB dazwischen).
    UEZ hat sein Leerzeichen auch in einer Gruppe, daher nimmt er in seinem zweiten Parameter die erste und dritte Gruppe zum ersetzen, weil in der zweiten nur das überflüssige Leerzeichen steht.

    Im Grunde macht es keinen Unterschied welche du nimmst, zumindest in deinem Fall nicht ;).

  • RegEx Ausdruck

    • name22
    • 5. April 2013 um 16:39

    Sollte so klappen:

    Spoiler anzeigen
    [autoit]

    $sString = "2013-04-05 16:12:04 : Aufz. Start Mustermann AG"
    $sNewString = StringRegExpReplace($sString, "(\d{4}-\d{2}-\d{2}) ((?:\d{2}:){2}\d{2})", "\1" & @TAB & "\2")
    ConsoleWrite($sString & @CRLF & $sNewString & @CRLF)

    [/autoit]


    Und bitte stelle Anfragen dieser Art das nächste mal in "Programmieranfragen - Ohne Gegenleistung".

  • Anderes Programm Combobox auswählen?

    • name22
    • 4. April 2013 um 18:11

    Eine Google Suche nach "autoit combobox auswählen" verrät, dass dazu die Funktion ControlCommand geeignet ist.
    Wenn du dir nun den Eintrag zu "ControlCommand" in der AutoIt Hilfe anschauen würdest, dann siehst du in einer übersichtlichen Tabelle welchen Befehl du benötigst um ein Item in einer Combobox auszuwählen.

    [autoit]

    ControlCommand

    [/autoit]


    Um an die nötigen Daten zu kommen empfiehlt die AutoIt Hilfe das "AutoIt Window Info Tool" im AutoIt Ordner im Startmenü.

    Bitte merke dir für zukünftige Themen: Wenn du nur das Minimum an Informationen zu deinem Problem bereistellst, bekommst du notwendigerweise auch nur ein Minimum an Hilfe.

  • Matrix Rotation funktioniert nicht

    • name22
    • 4. April 2013 um 14:11

    Dann musst du dir vielleicht andere Berater suchen :whistling: .
    Ein Handle ist eine Zahl, eine Art Adresse mit der man auf Obekte im Speicher zugreifen kann. Was komt dabei raus wenn man versucht eine Zahl zu rotieren? Richtig, nichts. Weil das kein bisschen Sinn macht.
    Außerdem ist das was von DrawImageRect zurückgegeben wird kein Handle. Wenn du mal die Hilfe lesen würdest, dann wüsstest du nämlich, dass diese Funktion bei Erfolg True und im Falle eines Fehlers False zurückgibt.

  • Matrix Rotation funktioniert nicht

    • name22
    • 4. April 2013 um 13:50

    Schau dir doch mal das Beispiel in der Hilfe an...
    Du musst nicht den Rückgabewert von DrawImageRect rotieren (was sowieso kein Sinn macht, weil dieser Wert kein Handle ist sondern lediglich der rückmeldung dient ob die Funktion geklappt hat), sondern die Grafik in die du etwas zeichnen willst. Und zwar bevor du das zeichnest!
    Bitte informiere dich mal darüber wie diese Funktion angewendet wird. Dazu gibt es Beispiele in der Hilfe und sogar hier im Forum (ich sollte es wissen, ich habe schließlich eins davon geschrieben).

  • TrackMouseEvent für ein GUI Control

    • name22
    • 3. April 2013 um 23:11

    Falls das Verhalten normal ist, dann ist es zumindest extrem seltsam...
    Schade, dass es für den Moment keine simple Lösung gibt die ich einfach übersehen habe. Fällt jemandem vielleicht eine Alternative ein die ähnlich funktioniert (abgesehen von einer ständigen Überprüfung der Cursorposition in der Hauptschleife)?

  • Nur bestimmte Textstelle in Zeile ändern

    • name22
    • 3. April 2013 um 20:13

    WhiteLion Du kannst den Beitrag auch selbst löschen ;). Beitrag bearbeiten -> "Beitrag in den Papierkorb legen" markieren -> Absenden.

  • TrackMouseEvent für ein GUI Control

    • name22
    • 3. April 2013 um 19:20

    Hat jemand eine Idee wie ich die TrackMouseEvent Funktion (WinAPIEx.au3) auf einen Button oder andere Controls anwenden könnte, um herauszufinden wann der Mauszeiger darüber "hovert"?
    In folgendem Script funktioniert das ganze schon mal für die Haupt-GUI:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIButton.au3>

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

    $hGUI = GUICreate("Not Hovering...", 400, 400)
    $hButton = _GUICtrlButton_Create($hGUI, "Test", 50, 50, 60, 25)
    GUISetState()

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

    If Not _WinAPI_TrackMouseEvent($hGUI, 1) Then Exit

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

    GUIRegisterMsg($WM_MOUSEHOVER, "WM_MOUSEHOVER")
    GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSEMOVE")

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func WM_MOUSEMOVE($hWnd, $iMsg, $wParam, $lParam)
    WinSetTitle($hGUI, "", "Not Hovering...")

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

    If Not _WinAPI_TrackMouseEvent($hGUI, 1) Then Exit
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func WM_MOUSEHOVER($hWnd, $iMsg, $wParam, $lParam)
    WinSetTitle($hGUI, "", "Hovering!")

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

    If Not _WinAPI_TrackMouseEvent($hGUI, 1) Then Exit
    Return $GUI_RUNDEFMSG
    EndFunc

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _WinAPI_TrackMouseEvent
    ; Description....: Posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time.
    ; Syntax.........: _WinAPI_TrackMouseEvent ( $hWnd, $iFlags [, $iTime] )
    ; Parameters.....: $hWnd - Handle to the window to track.
    ; Return values..: $iFlags - The services requested. This parameter can be a combination of the following values.
    ;
    ; $TME_CANCEL
    ; $TME_HOVER
    ; $TME_LEAVE
    ; $TME_NONCLIENT
    ; $TME_QUERY
    ;
    ; $iTime - The hover time-out (if $TME_HOVER was specified in $Flags), in milliseconds. Can be (-1), which
    ; means to use the system default hover time-out.
    ; Failure - 0 and sets the @error flag to non-zero.
    ; Author.........: Matt Diesel (Mat)
    ; Modified.......: Yashied
    ; Remarks........: None
    ; Related........:
    ; Link...........: @@MsdnLink@@ TrackMouseEvent
    ; Example........: Yes
    ; ===============================================================================================================================

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

    Func _WinAPI_TrackMouseEvent($hWnd, $iFlags, $iTime = -1)

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

    Local $tTME = DllStructCreate('dword;dword;hwnd;dword')

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

    DllStructSetData($tTME, 1, DllStructGetSize($tTME))
    DllStructSetData($tTME, 2, $iFlags)
    DllStructSetData($tTME, 3, $hWnd)
    DllStructSetData($tTME, 4, $iTime)

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

    Local $Ret = DllCall('user32.dll', 'int', 'TrackMouseEvent', 'ptr', DllStructGetPtr($tTME))

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

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, 0)
    EndIf
    Return 1
    EndFunc ;==>_WinAPI_TrackMouseEvent

    [/autoit]


    Wenn ich lediglich das Handle bei jedem TrackMouseEvent Aufruf durch $hButton ersetze funktioniert das ganze nicht (kein Call von WM_MOUSEHOVER). Der Button ist ein Child-Window der Haupt-GUI, daran liegt es also nicht.
    Ich habe nicht besonders viel Zeit um das hier zu formulieren, falls Informationen fehlen bitte ich darauf hingewiesen zu werden ^^.

  • Download Video von URL

    • name22
    • 2. April 2013 um 21:06

    Eventuell besteht das Webinterface auf ein Cookie oder einen Referer der zeigt, dass du dich über das Webinterface eingeloggt hast.
    Wenn dem so ist, dann müsstest du den Datenverkehr im Browser mit einem Tool wie HttpFox (Firefox Addon) überwachen. Aus den HTTP Headern lässt sich dann vielleicht etwas mit WinHTTP basteln, dass einen Download per Browser simuliert.
    Aber wie James bereits geschrieben hat, benötigen wir mehr Informationen um dir zu helfen. "klappt nicht" reicht nicht ;).

  • Zu bestimmten tab Wechseln

    • name22
    • 2. April 2013 um 18:37

    Nichts zu danken. Du könntest aber noch das Präfix des Themas auf [gelöst] setzen, indem du den ersten Beitrag bearbeitest ;).

  • Zu bestimmten tab Wechseln

    • name22
    • 2. April 2013 um 17:53

    Aus der AutoIt Hilfedatei:

    Zitat von AutoIt Hilfe - GUICtrlCreateTabItem

    Um einen bestimmten Tab auszuwählen, die beim Öffnen der Dialogbox angezeigt wird, ist für diese Karte der Status GUICtrlSetState(-1,$GUI_SHOW) zu setzen (siehe Beispiel).

    Und im Beispiel wird das sogar gemacht, wie im Zitat versprochen.

    Erstes Google Ergebnis für die Suche nach "autoit tab auswählen":
    [ offen ] Wie kann ich ein Tab aktivieren?

  • [GDI+] Runder, Animierter Ladebalken

    • name22
    • 2. April 2013 um 13:43

    Sieht super aus :thumbup: . Das werde ich auf jeden Fall verwenden sobald ich das nächste mal einen Ladebalken benötige :D.

  • Stringreplace bugt!

    • name22
    • 2. April 2013 um 01:48

    Wo soll das denn bitte ein Bug sein? Der Fehler liegt also bei AutoIt!? Es mag einfach sein den Fehler auf die Entwickler der Programmiersprache zu schieben, aber erstens hilft dir das nicht bei der Fehlersuche und zweitens ist das wirklich unwahrscheinlich, dass du einen Bug in einer der am meisten verwendeten Funktionen (die schon seit Jahren in dieser Form existiert) als erster entdeckt hast.

    Das Problem liegt bei deinem fehlerhaften Verständnis dieser Programmiersprache. AutoIt stammt, ob du es glaubst oder nicht, von einem englischsprachigen Entwickler namens Jonathan Bennet (abgesehen davon verwenden die meisten Programmiersprachen englische Sprachstandards). Im Zahlensystem seiner Sprache werden eben Punkte zur Trennung der beiden Ziffernfolgen bei Dezimalbrüchen verwendet. Deine "2.500" werden von AutoIt also nicht als "2500" sondern als "2,500" dem Dezimalbruch (25/10) interpretiert. Da du das nicht in Stringform deklarierst, sondern als Zahlenwert kürzt AutoIt die überflüssigen Nullen die, wie minx dir schon oft genug erklärt hat, den Wert kein bisschen beeinflussen. Ergo: "2.500" -> "2.5" was nach unserem System "2,5" wäre.

    Wenn du jetzt mit StringReplace aus "2.5" alle Punkte rausnimmst, was bekommst du dann? Richtig, "25". Wo ist jetzt der Bug? Dieses Verhalten ist absolut natürlich und sinnvoll.
    Freu dich doch einfach darüber, dass AutoIt so lieb ist und deine seltsame Idee eine String-Funktion auf einen Zahlenwert anzuwenden dank Variant Datentyp und sinnvoller Datentypkonvertierung toleriert.

    Edit: Hier noch mal in der Übersicht zum nachlesen.

  • Wechsel zwischen Hover- und Klick-Funktion

    • name22
    • 1. April 2013 um 18:47

    Es sollte genügen $aCurInfo auf Arraystatus zu überprüfen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $hWnd = GUICreate("Test", 250, 250)
    $cInfoLabel = GUICtrlCreateLabel("Infotext", 0, 0, 250, 20)
    $cButton1 = GUICtrlCreateButton("Button", 90, 110, 70, 30)
    $cButton2 = GUICtrlCreateButton("Button", 90, 150, 70, 30)

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

    GUISetState()
    $bcButton1HoverAllow = True
    $bcButton2HoverAllow = True

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

    While True
    $iMsg = GUIGetMsg()
    $aCurInfo = GUIGetCursorInfo()
    Switch $iMsg ;Normale Message-Verarbeitung
    Case -3 ;EVENT_CLOSE
    Exit
    Case $cButton1
    GUICtrlSetData($cInfoLabel, "Button 1 gedrückt. [GUIGetMsg]")
    Case $cButton2
    GUICtrlSetData($cInfoLabel, "Button 2 gedrückt. [GUIGetMsg]")
    EndSwitch

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

    If IsArray($aCurInfo) And Not $aCurInfo[2] Then ;Wenn die Maustaste NICHT gedrückt ist...
    Switch $aCurInfo[4]
    Case $cButton1
    If $bcButton1HoverAllow Then
    GUICtrlSetData($cInfoLabel, "Hover-Event! (Button 1) [GUIGetCursorInfo]")
    $bcButton1HoverAllow = False
    EndIf
    Case $cButton2
    If $bcButton2HoverAllow Then
    GUICtrlSetData($cInfoLabel, "Hover-Event! (Button 2) [GUIGetCursorInfo]")
    $bcButton2HoverAllow = False
    EndIf
    Case Else ;Rücksetz-Funktion
    $bcButton1HoverAllow = True
    $bcButton2HoverAllow = True
    EndSwitch
    EndIf
    WEnd

    [/autoit]

    Edit: Ein wenig spät... :whistling:

  • IE in GUI Klicke

    • name22
    • 1. April 2013 um 16:21

    Ich habe es jetzt noch mal ein wenig sorgfältiger durchgelesen. Adfly hat nur etwas gegen automatischeds aufrufen der Links wenn ich das richtig verstehe. Aber es scheint dir ja nur darum zu gehen einzelne Links nach Ablauf der Zeit automatisch zu überspringen. Davon wird in den Bedingungen nichts erwähnt, also gehe ich einfach davon aus, dass sie kein Problem damit haben. Schließlich trägt Adfly bzw. der Inhaber des Links keinen Schaden davon, weil du ja nur die Werbung nach Ablauf der Zeit überspringst.
    Von dem her ist das Thema für mich okay, ich war mir nur nicht sicher ob du damit Kohle machen wolltest :D.

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™