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

  • drücken der <ENTER> - Taste in einem GUICtrlCreateInput abfangen

    • BugFix
    • 24. Januar 2020 um 14:44

    Oder wie hier gepostet: Von Input zu Input

  • Kreisausschnitt mittels _GDIPlus_ und PixelCheckSum

    • BugFix
    • 20. Januar 2020 um 22:55

    Die Funktion hat noch nie und konnte auch gar keinen Hex Wert zurückgeben.

    Ein Hexwert wird bei der Rückgabe automatisch wieder zum Dezimalwert.

    Nur Handle werden tatsächlich in Hexform zurückgegeben.

  • HTTP und SciTE

    • BugFix
    • 20. Januar 2020 um 13:58
    Zitat von Schmunke

    die neue SciTE-Version installiert (3.3.14.5)

    Das ist nicht die SciTE-Version, sondern die von AutoIt. Den Rest deiner Fragestellung kann ich nicht nachvollziehen.

  • Events bei "Tab"?

    • BugFix
    • 13. Januar 2020 um 13:25

    Bsp.:

    AutoIt
    Opt("GUIOnEventMode", 1)
    
    Global $hGui = GUICreate('Test')
    GUISetOnEvent(-3, '_End')
    Global $IDTab = GUICtrlCreateTab(10, 10, 300, 150)
    GUICtrlSetOnEvent(-1, '_TabEvent')
    Global $TabItem1 = GUICtrlCreateTabItem('Item 1')
    Global $TabItem2 = GUICtrlCreateTabItem('Item 2')
    GUICtrlCreateTabItem("")
    
    GUISetState()
    
    While True
        Sleep(50)
    WEnd
    
    Func _End()
        Exit
    EndFunc
    
    Func _TabEvent()
        Local $TabItemIndex = GUICtrlRead(@GUI_CtrlId)
        Switch $TabItemIndex
            Case 0
                MsgBox(0, 'TabEvent', 'Item 1')
            Case 1
                MsgBox(0, 'TabEvent', 'Item 2')
        EndSwitch
    EndFunc
    Alles anzeigen
  • Events bei "Tab"?

    • BugFix
    • 12. Januar 2020 um 21:53

    Schau dir doch mal genau das Hilfebsp. an. Du musst auf die Tab-ID reagieren und dann kannst du die ID des verantwortlichen Tab-Item abfragen.

  • Kleine EXE-Datei für "Wenn der Firefox gestartet wurde; dann 5 Sekunden warten; dann die Taste "f" drücken; WIEDER ZUM ANFANG SPRINGEN"

    • BugFix
    • 11. Januar 2020 um 22:14

    Es steht dir völlig frei, den "Laden" wieder zu verlassen.

    Aber vielleicht solltest du mal darüber nachdenken, warum wir bestimmte Dinge hinterfragen. Ich finde es ziemlich dreist, wenn du um Hilfe bittest und unsere Nachfragen/Hinweise dann als Zumutung empfindest. Unsere Nachfragen resultieren aus unseren Erfahrungen und dem Wissen, dass es vielen Usern schwer fällt, ihre Probleme mit allen erforderlichen Informationen darzustellen.

    Dein Vergleich von unserem Forum mit einem Baumarkt hinkt nicht nur, sondern ist so ziemlich der größte geistige Dünschiss, der mir seit längerem unter gekommen ist. - Wir wollen nichts verkaufen. Wir tauschen uns aus, teilen unser Wissen. Und dazu bedarf es gewisser Informationen. Wenn du diese nicht zu geben gewillt bist - so what! Jeder ist seines Glückes Schmied.

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • BugFix
    • 10. Januar 2020 um 21:46

    Das befeuert natürlich auch wieder die Diskussion zur Sinnhaftigkeit von AV-Programmen. Man installiert es für den Fall, der in der Wahrscheinlichkeit eines Sechsers im Lotto auftritt. Die letzten 10 Jahre habe ich keinerlei (gültige) Funde gehabt. Was bringt es also, wenn man Brain.exe aktiviert hat?

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • BugFix
    • 10. Januar 2020 um 20:48

    Freut mich, wenn meine Tuts dir helfen konnten. Unterrichtet habe ich auch schon mal, macht auch Spaß. Aber mit knapp 60 möchte ich den Beruf nicht mehr wechseln. :D

    Mir ist jetzt wieder eingefallen, womit ich das damals gelöst habe: Der File-Explorer von Windows 95!!

    Alles, was danach kam wurde eigentlich nur verschlimmbessert. :whistling:

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • BugFix
    • 10. Januar 2020 um 19:50

    Hatte mal ein ähnliches Problem. Da es auf einem 32-Bit System war konnte ich eine Datei aus Windows 2000 zum Setzen der Rechte verwenden. Es liessen sich ausnahmslos alle Rechte setzen/löschen. Allerdings ist das so lange her, dass ich gerade den Namen nicht parat habe. Ich werde mal suchen, ob ich es noch finde.

  • Fehlermeldung im Menü

    • BugFix
    • 6. Januar 2020 um 10:51
    Zitat von Windi

    Habe es mit ControlClick probiert bekomme es mit dem Wininfo nicht hin.

    AutoIt
    #cs
    >>>> Window <<<<
    Title: Winitas
    Class: OMain
    
    >>>> Control <<<<
    Class: NetUIHWND
    Instance: 1
    ClassnameNN: NetUIHWND1
    Advanced (Class): [CLASS:NetUIHWND; INSTANCE:1]
    #ce
    
    ; Handle abfragen mit Titel
    Global $hWnd = WinGetHandle('Winitas')
    ; oder Klasse
    Global $hWnd = WinGetHandle('[CLASS:OMain]')
    
    ; Controlclick
    ControlClick($hWnd, '', '[CLASS:NetUIHWND; INSTANCE:1]')
    Alles anzeigen
  • Fehlermeldung im Menü

    • BugFix
    • 5. Januar 2020 um 16:34

    Ich habe vor etlichen Jahren mal getestet, wie sich GUI und Controls in VBA erstellen und anwenden lassen. Mein Fazit war: Wenn viel in Excel abzuarbeiten ist, sollte man die Grafik auch gleich in VBA machen. Die Objekte lassen sich leicht erstellen, sind über ihre Properties gut zu händeln und bieten optische Features, die man in AutoIt nicht (oder nicht ohne Weiteres) realisieren kann - z.B. lassen sich hinter alle Control auch Grafiken legen.

    Der Objektkatalog im VBA-Editor (Alt+F11) listet dir alle verfügbaren Methoden, Properties und Konstanten auf. Im Editor kann man sich super mit den Objekten vertraut machen und mal mit spielen.

    Leider kann ich mein Bsp. nicht mehr auffinden, ist bei einem Forenupdate mit vielen anderen Konversationen verloren gegangen.

  • Fehlermeldung im Menü

    • BugFix
    • 5. Januar 2020 um 11:45
    Zitat von Windi

    Was (BugFix #23) geschrieben hat kann nicht funktionieren.

    Du machst also alles mit AutoIt ausser dem Makro? Führe das (also den Inhalt!) doch auch mit AutoIt aus. dann läuft alles in einer Ebene und du hast keine Probleme. Der VBA-Code des Makros kann völlig problemlos in AutoIt-Code übersetzt werden. Womit wir wieder beim Stichwort Excel-UDF sind. :)

    EDIT:

    Wenn du natürlich extrem umfangreiche xlsm erstellt hast, kann das etwas aufwändig sein. Ich würde es aber bevorzugen, weil man dann unabhängig von den xlsm wird.

  • Fehlermeldung im Menü

    • BugFix
    • 4. Januar 2020 um 12:11

    Wenn AutoIt Excel startet, solltest du das Beenden auch von AutoIt erledigen lassen (logische Konsistenz). Wenn da das Makro zwischenfunkt, führt das nur zu Fehlern.

  • GDI DrawLine auf PDF

    • BugFix
    • 1. Januar 2020 um 11:00
    Zitat von Cawa

    Einige dieser Diagramme sind Temperatur/Zeit-Kurvendiagramme die in PDF gespeichert vor mir liegen. Um diese Kurven auszulesen dachte ich mir: ich setze die PDF als Hintergrund einer GUI, einen Slider unter diese PDF, richte ihn an Kurvenanfang u –ende aus und den Sliderwert nutz ich zur Verhältnisgleichung um die Uhrzeit zu berechnen und in Excel zu speichern

    Da verstehe ich nur Bahnhof. Das funktioniert doch nur bei einer linearen Funktion, niemals bei einer Kurve. Und wie "richtest du aus"? Slider per Maus ziehen und dann Position Speichern?

    Du solltest ein Skript bereit stellen, das auf das reine Problem reduziert und lauffähig ist. Da du hier spezifische Dateien verwendest kann das Skript von uns so nicht getestet werden.

  • Autoit startet Internetexplorer, anstatt Firefox :(

    • BugFix
    • 27. Dezember 2019 um 15:04

    Wenn du ein IE-Objekt erstellst, wird natürlich der Internet Explorer gestartet.

    Firefox-Automatisierung ist derzeit fast unmöglich. Such mal nach "WebDriver", damit kann man arbeiten. Ist aber alles andere als trivial.

  • OK-Button erkennen

    • BugFix
    • 18. Dezember 2019 um 13:06
    Zitat von Bernhard65

    Ich finde die Erstellung aller Fenster am Programmstart und dann mit SHOW und HIDE irgendwie nicht sehr elegand?

    Glaub mir, es ist die eleganteste Variante überhaupt. Denn elegant hat auch was mit Effizienz zu tun. Abgesehen davon, dass du mit deiner Variante dein Skript früher oder später crashst, musst du alle anzuzeigenden Elemente ständig neu erstellen. Das frisst Zeit und Speicher - wie kann das elegant sein?

  • Array mit Arrays

    • BugFix
    • 18. Dezember 2019 um 10:38

    Ich habe mal noch eine universale Lösung für das Speichern von 1D oder 2D Array in einem 1D-Array:

    AutoIt
    Local $aIntern1[] = [1,2,3]
    Local $aIntern2[] = [4,5,6]
    Local $aExtern1[] = [$aIntern1,$aIntern2]
    
    Local $aIntern3[][] = [[1,2,3],[4,5,6]]
    Local $aIntern4[][] = [[11,12,13],[14,15,16]]
    Local $aExtern2[] = [$aIntern3,$aIntern4]
    
    ; abfragen Index1 in Array Intern2 (5)
    ConsoleWrite(_SubArrayValue($aExtern1, 1, 1) & @CRLF)
    
    ; Wert ändern Index1 in Array Intern2
    _SubArrayValue($aExtern1, 1, 1, 555)
    ConsoleWrite(_SubArrayValue($aExtern1, 1, 1) & @CRLF)
    
    ; abfragen in Array Intern4 [1][2] (16)
    ConsoleWrite(_SubArrayValue($aExtern2, 1, '1,2') & @CRLF)
    
    ; Wert ändern in Array Intern4 [1][2]
    _SubArrayValue($aExtern2, 1, '1,2', 666)
    ConsoleWrite(_SubArrayValue($aExtern2, 1, '1,2') & @CRLF)
    
    
    
    ; wenn interne Array 1D sind: IndexValue als Ziffer, bei 2D als String: 'IndexDim1,IndexDim2'
    Func _SubArrayValue(ByRef $_aParent, $_IndexArray, $_IndexValue, $_Value=Null)
        Local $IndexD1 = $_IndexValue, $IndexD2 = Null, $aSub = $_aParent[$_IndexArray]
        If IsString($_IndexValue) Then ; internes Array ist 2D
            Local $aD = StringSplit($_IndexValue, ',', 2)
            If UBound($aD) <> 2 Then Return SetError(1,0,0)
            $IndexD1 = $aD[0]
            $IndexD2 = $aD[1]
        EndIf
        If $_Value = Null Then
            If $IndexD2 = Null Then
                Return $aSub[$IndexD1]
            Else
                Return $aSub[$IndexD1][$IndexD2]
            EndIf
        Else
            If $IndexD2 = Null Then
                $aSub[$IndexD1] = $_Value
            Else
                $aSub[$IndexD1][$IndexD2] = $_Value
            EndIf
            $_aParent[$_IndexArray] = $aSub
        EndIf
    EndFunc
    Alles anzeigen

    EDIT:

    AutoIt
    ; Für die 2D-Variante:
    ; wenn im Skript die Indexwerte variabel sind (sehr wahrscheinlich), kann man das über Stringformat schnell einbinden
    Global $SF = StringFormat ; Funktion in Kurznamen covern
    ; in Funktionsaufruf einsetzen:
    _SubArrayValue($aExtern2, 1, $SF('%d,%d', $idx1, $idx2), 666)
  • Array mit Arrays

    • BugFix
    • 18. Dezember 2019 um 10:07

    Die beste Übersicht wirst du behalten, wenn du für den Zugriff auf innere Arrays eine Funktion erstellst. Hier mal ein Bsp. für 1D-Array:

    AutoIt
    Local $aIntern1[] = [1,2,3]
    Local $aIntern2[] = [4,5,6]
    Local $aExtern[] = [$aIntern1,$aIntern2]
    
    ; abfragen Index1 in Array Intern2 (5)
    ConsoleWrite(_SubArrayValue($aExtern, 1, 1) & @CRLF)
    
    ; Wert ändern Index1 in Array Intern2
    _SubArrayValue($aExtern, 1, 1, 555)
    ConsoleWrite(_SubArrayValue($aExtern, 1, 1) & @CRLF)
    
    Func _SubArrayValue(ByRef $_aParent, $_IndexArray, $_IndexValue, $_Value=Null)
        Local $aSub = $_aParent[$_IndexArray]
        If $_Value = Null Then
            Return $aSub[$_IndexValue]
        Else
            $aSub[$_IndexValue] = $_Value
            $_aParent[$_IndexArray] = $aSub
        EndIf
    EndFunc
    Alles anzeigen
  • Explorer in Treeview

    • BugFix
    • 18. Dezember 2019 um 09:53
    Zitat von mcbaldrian

    und bevor jetzt irgendjemand schreibt das ich erstmal googeln soll ich kämpfe mit dem Problem seid 2 Monaten ohne erfolg.

    Schreib die gewünschten Dinge (Treeview Explorer) einfach in die Forumssuchfunktion - schon hast du unter vielen anderen Lösungen auch das: Treeview FileExplorer

  • Array mit Arrays

    • BugFix
    • 17. Dezember 2019 um 22:56

    Ein schreibender Zugriff über gekapselte Indizes ist nicht möglich. Wenn du ein Array im Array speicherst, musst du es zum Modifizieren separat behandeln. Ob du das mit einem temporären Array löst oder eine ByRef Lösung bevorzugst, bleibt dir überlassen.

    Ich finde es meist übersichtlicher, das Array in eine temporäre Variable auszulagern und nach Änderung zurück zu schreiben.

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™