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

Beiträge von Oscar

  • markierte Dateien mit der Maus bewegen ?

    • Oscar
    • 15. Mai 2020 um 08:35

    Was ist das denn für ein Fenster?

    Beziehungsweise: Was willst Du erreichen?

    Das hört sich sehr nach einem XY-Problem an:

    Zitat

    Das XY-Problem ist eher eine Frage nach Ihrem Lösungsversuch als nach Ihrem tatsächlichen Problem.

    Dies führt zu einer enormen Verschwendung von Zeit und Energie, sowohl auf Seiten der um Hilfe bittenden Menschen als auch auf Seiten der Hilfeleistenden.

    * Benutzer will X machen.

    * Der Benutzer weiß nicht, wie man X macht, glaubt aber, dass er sich zu einer Lösung durchfummeln kann, wenn er es nur schafft, Y zu machen.

    * Der Benutzer weiß auch nicht, wie er Y machen soll.

    * Benutzer bittet um Hilfe bei Y.

    * Andere versuchen, dem Benutzer mit Y zu helfen, sind aber verwirrt, weil Y ein seltsames Problem zu sein scheint, das sie lösen wollen.

    * Nach viel Interaktion und verschwendeter Zeit wird schließlich klar, dass der Benutzer wirklich Hilfe mit X will und dass Y nicht einmal eine geeignete Lösung für X war.

    Das Problem tritt auf, wenn die Leute an dem festhängen, was ihrer Meinung nach die Lösung ist, und nicht in der Lage sind, zurückzutreten und das Problem vollständig zu erklären.

    Übersetzt von der Seite: "http://xyproblem.info/" mit http://www.DeepL.com/Translator (kostenlose Version)

    Alles anzeigen
  • [Nim] Ein Timer-Event ausführen

    • Oscar
    • 11. Mai 2020 um 08:16

    Beim rumprobieren bin ich auf das Timer-Event gestossen und weil man kaum Beispiele dazu findet, habe ich hier mal eines erstellt.

    Code
    import wNim
    import times
    
    let app = App()
    let frame = Frame(title="Timer Test", size=(340, 200))
    let panel = Panel(frame)
    panel.setBackgroundColor(0x001A1A1A)
    
    let timeCtrl = StaticText(panel, label="00:00:00", pos=(20, 20), size=(280, 70), style=wAlignCenter)
    timeCtrl.font = Font(48, faceName="Arial", weight=wFontWeightBold)
    timeCtrl.setForegroundColor(0x00EEEEEE)
    
    frame.startTimer(1.0) # starte den Timer (Zeit in Sekunden als Float)
    
    frame.wEvent_Timer do (event: wEvent): # hier wird der Timer-Event ausgewertet
      let dt = now() # Datum/Uhrzeit holen
      timeCtrl.setLabel(dt.format("HH:mm:ss")) # und formatiert in das Text-Ctrl schreiben
    
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen
  • [Nim] Bsp. Treeview mit Images

    • Oscar
    • 9. Mai 2020 um 10:12
    Zitat von BugFix

    Ich habe das mal auf die einzelnen Schritte aufgedröselt:

    Vielen Dank für die Erklärung!

    Jetzt habe ich es verstanden.

  • [Nim] Bsp. Treeview mit Images

    • Oscar
    • 9. Mai 2020 um 08:55

    Erstmal: ein schönes Beispiel-Programm! Da kann man viel lernen. :):thumbup:

    Aber kannst Du mal diese Zeile genauer erklären (den roten Teil): snames.add(file.path.splitPath().tail.split('.')[0])

    Ich weiß, was da passiert, aber nicht wie.

  • Grafik in exe

    • Oscar
    • 8. Mai 2020 um 08:45
    Zitat von Silvermoon1

    Hauptsache das Skript und das Bildmaterial stehen in einer Datei.

    Und genau das ist mit dem "file-to-base64-string-code-generator von UEZ" möglich.

  • [Nim] Anfangsbuchstaben groß schreiben

    • Oscar
    • 7. Mai 2020 um 19:54

    Ok, es gibt also nichts "Fertiges". Ich dachte nur, dass ich etwas in strutils oder so übersehen hätte.

    Meine Versuche brachten dann noch etwas anderes zustande (durchiterieren):

    Code
    import strutils
    
    proc capitalizeString(sString: string): string =
        var bUp = true
        for i, c in sString:
            result.add(if bUp: c.toUpperAscii else: c.toLowerAscii)
            case c
            of '+', '-': bUp = true
            else: bUp = false
    
    var sText = "bernd+hans-gustav" # Ziel: Bernd+Hans-Gustav
    sText = capitalizeString(sText)
    echo sText
    Alles anzeigen
  • [Nim] Anfangsbuchstaben groß schreiben

    • Oscar
    • 7. Mai 2020 um 19:01

    Ich möchte gern in einem String die Anfangsbuchstaben groß schreiben.

    Der "Anfang" soll sich aber auch auf das "+" und das "-"-Zeichen beziehen.

    Muss ich da durch den ganzen String iterieren oder gibt es etwas einfacheres?

    Beispiel:

    Code
    import strutils
    
    var sText = "bernd+hans-gustav" # Ziel: Bernd+Hans-Gustav
    sText = sText.capitalizeAscii() # ergibt: Bernd+hans-gustav
    echo sText
  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • Oscar
    • 7. Mai 2020 um 16:32
    Zitat von autoiter

    Man kann sich bei den AV Herstellern melden und versuchen, seine Software kostenlos "whitelisten" zu lassen. Mehr ist wohl nicht drin.

    Ja, man kann die AV-Hersteller kontaktieren und sie über die "false-positive"-Meldung unterrichten. Habe ich auch schon mehrfach getan.

    Beim nächsten Update ist das dann auch meist behoben, aber...

    - willst Du das für jedes Deiner Programme tun?

    - bei jedem AV-Hersteller?

    - mit jeder neuen AV-Version, die so eine Meldung hervorbringt?

    Wohl eher nicht, oder?

    Was ich von einer "guten" AV-Software erwarten würde, wäre, dass sie nicht die Checksumme von dem Interpreter in die Blacklist aufnimmt.

    Wenn man eine AutoIt-Malware entdeckt, den Bereich von dem Interpreter ausklammern und vom Rest eine Checksumme bilden, die dann in der Blacklist landet.

    So ist die Erkennung weiterhin gewährleistet und es würden nicht alle AutoIt-Programme als "false-positive" erkannt werden.

  • [Nim] Fragen zu einem Listview

    • Oscar
    • 7. Mai 2020 um 16:20
    Zitat von Bitnugger

    Wegen Mehrfachauswahl... hattet ihr da auch schon hier bei Iterators geguckt?

    Die sind aber für eine ListBox, nicht für ListCtrl.

    Bei ListCtrl gibt es nur Items und Pairs.

  • [Nim] Fragen zu einem Listview

    • Oscar
    • 7. Mai 2020 um 15:59
    Zitat von Bitnugger

    So geht es übrigens auch:

    Ah, "event.index"! Gut zu wissen.

    Das kann ich bestimmt auch noch mal gebrauchen. Danke!


    Zitat von BugFix

    Wenn du Mehrfachauswahl erlaubst, musst du alle abfragen:

    Ja, das war mir schon klar.

    Hier reichte aber die einfache Variante, da nur SingleSelect.

    Aber als Beispiel für die Benutzung von Sequenzen auch gut geeignet. :):thumbup:

  • [Nim] Fragen zu einem Listview

    • Oscar
    • 7. Mai 2020 um 12:52
    Zitat von BugFix

    Du willst, dass nichts passiert außer scrollen, also:

    Ah! So enfach! :);)

    Danke!

    Aber so habe ich wenigstens noch etwas gelernt (wie man die Selected-Items ausliest).

  • [Nim] Fragen zu einem Listview

    • Oscar
    • 7. Mai 2020 um 11:26

    Ich habe jetzt dieses Event: wEvent_ListItemSelected ausgewertet.

    Die Prozedur getSelectedItem habe ich mir selbst geschrieben und dann einfach das Selected und Focused rückgangig gemacht.

    Damit habe ich die gewünschte Funktionalität erreicht. Danke, für die Richtung!

    Code
    import wNim
    
    let app = App()
    let frame = Frame(title="Test", size=(800, 340))
    let panel = Panel(frame)
    
    proc getSelectedItem(wLst: wListCtrl): int = 
      for i, sItem in wLst.pairs:
        if (wLst.getItemState(i, 0) and wListStateSelected) == wListStateSelected:
          result = i
          return
    
    let listHighScore = ListCtrl(panel, style=wLcReport or wBorderDouble or wLcSingleSel, pos=(10, 10), size=(645, 252))
    listHighScore.appendColumn("Platz", width=100)      # bei der ersten Spalte funktioniert "format=wListFormatCenter" nicht 
    listHighScore.setColumnFormat(0, wListFormatCenter) # deswegen hier als extra Zeile
    listHighScore.appendColumn("Name", width=250, format=wListFormatLeft)
    listHighScore.appendColumn("Punkte", width=130, format=wListFormatRight)
    for i in 1..99:
      listHighScore.appendItem($i)
      listHighScore.setItemText(i - 1, 1, "Computer")
      listHighScore.setItemText(i - 1, 2, $(100 - i))
    
    listHighScore.ensureVisible(66)                            # sicherstellen, dass der Platz 67 in der List zu sehen ist
    listHighScore.setItem(66, state=wListStateDropHighlighted) # den Platz 67 markieren
    
    listHighScore.wEvent_ListItemSelected do ():
      let iIndex = getSelectedItem(listHighScore)
      listHighScore.setItemState(iIndex, 0, wListStateSelected or wListStateFocused, false) # Selected und Focused rueckgangig machen
      echo "selected Index: " & $iIndex 
    
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen
  • [Nim] Fragen zu einem Listview

    • Oscar
    • 6. Mai 2020 um 19:57

    Ich habe ein Listview (List), bei dem ich gern eine Zeile markieren will (mache ich mit "state=wListStateDropHighlighted").

    Soweit so gut! Das funktioniert.

    Jetzt will ich aber verhindern, dass der Benutzer eine andere Zeile markieren/anklicken kann. Wie geht das?

    Ich will aber nicht das ganze Listview deaktivieren (mit disable), weil man dann nicht mehr scrollen kann.

    Hier mal ein Beispiel:

    Code
    import wNim
    
    let app = App()
    let frame = Frame(title="Test", size=(800, 340))
    let panel = Panel(frame)
    
    let listHighScore = ListCtrl(panel, style=wLcReport or wBorderDouble or wLcSingleSel, pos=(10, 10), size=(645, 252))
    listHighScore.appendColumn("Platz", width=100)      # bei der ersten Spalte funktioniert "format=wListFormatCenter" nicht 
    listHighScore.setColumnFormat(0, wListFormatCenter) # deswegen hier als extra Zeile
    listHighScore.appendColumn("Name", width=250, format=wListFormatLeft)
    listHighScore.appendColumn("Punkte", width=130, format=wListFormatRight)
    for i in 1..99:
      listHighScore.appendItem($i)
      listHighScore.setItemText(i - 1, 1, "Computer")
      listHighScore.setItemText(i - 1, 2, $(100 - i))
    
    listHighScore.ensureVisible(66)                            # sicherstellen, dass der Platz 67 in der List zu sehen ist
    listHighScore.setItem(66, state=wListStateDropHighlighted) # den Platz 67 markieren
    
    # listHighScore.disable # <- das nicht, weil man dann nicht mehr scrollen kann
    
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen
  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • Oscar
    • 6. Mai 2020 um 08:34

    Das Problem dürfte halt der AutoIt-Interpreter sein, der in jeder AutoIt-Exe enthalten ist.

    Wenn die AV-Programmierer nun eine Checksumme von irgendeinem (vermeintlichen) Malwareprogramm erstellen, kommt es halt darauf an, wie diese Checksumme erstellt wird.

    Wenn die Routine nicht sehr genau ist (weil sie ja schnell sein muss), dann spielt der Faktor "Interpreter" eine große Rolle bei der Erkennung und schon sind "alle" AutoIt-Programme als Malware gebrandmarkt.

    Einige AV-Programmierer scheinen sich ja auch mal mehr Mühe zu geben, aber wenn selbst die Großen da oft genug "false positive" ausgeben, sieht es für AutoIt schlecht aus.

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

    • Oscar
    • 5. Mai 2020 um 19:30
    Zitat von autoiter

    Ein stripped Skript mit allen Includes, AutoIt3.exe und ein Powershell/vbs/batch Skript zum Starten des Programms in relativem Pfad. Fertig. Alle Probleme gelöst.

    Nein, denn ganze vier AntiViren-Programme meckern bereits beim scannen der aktuellen AutoIt.exe

    Und dann kann ich auch nicht mehr alle Resourcen in die Exe packen. Das sehe ich nicht als Alternative an.

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

    • Oscar
    • 5. Mai 2020 um 13:52

    Oh, wie geil! Man kann das noch steigern. :rofl:

    Hier ein ganz "böses" Programm:

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_CompanyName=Microsoft Company
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    MsgBox(0, 'Test', 'Hallo Welt!')
    ; Format "c:\"

    Ergebnis:

    virustotal3.png

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

    • Oscar
    • 5. Mai 2020 um 10:21
    Zitat von autoiter

    Das habe ich bei AutoIt noch nie gesehen. Nicht mal mit Hallo Welt in der Messagebox würde ich so ein Ergebnis erwarten

    Um das mal zu testen, habe ich das folgende Script compiliert:

    AutoIt
    MsgBox(0, 'Test', 'Hallo Welt!')

    und an virustotal.com geschickt.

    Das Ergebnis:

    virustotal2.png

    Im Ernst? Ganze 10 AntiViren-Programme sehen das als Virus an?

    Da wird doch einfach die Signatur vom AutoIt-Interpreter in die Blacklist gepackt.

    Und so ein Schwachsinn nennt sich dann AntiViren-Programm. :cursing::thumbdown:

  • [Nim] Gibt es sowas wie @GUI_CtrlId in Nim

    • Oscar
    • 5. Mai 2020 um 09:55
    Zitat von BugFix

    Die ID müssen mit wIdUser (hat den Wert 6000) starten. Sonst läufst du Gefahr mit anderen Standard-ID zu crashen.

    Ok!

    Dann wäre das so aber ok?

    Code
    import wNim
    
    const aKeys = [
                  "Q", "W", "E", "R", "T", "Z", "U", "I", "O", "P", "<-",
                  "A", "S", "D", "F", "G", "H", "J", "K", "L", "_", "<-'",
                  "Y", "X", "C", "V", "B", "N", "M", ",", ".", "-", "+"
                  ]
    
    var
      aKeyBtn: array[0..32, wButton]
      iX, iY, iW: int
      myId: int = int(wIdUser)
    
    let app = App()
    let frame = Frame(title="Test", size=(1200, 340))
    let panel = Panel(frame)
    
    frame.wEvent_Button do (event: wEvent):
      let sender = event.getEventObject()
      let iId = int(sender.id) - int(wIdUser)
      echo $iId & " -> " & aKeys[iId]
    
    for i in 0..2:
      iY = 10 + i * 80
      for j in 0..10:
        iX = 10 + i * 30 + j * 100
        case i * 11 + j
        of 10: iW = 150
        of 21: iW = 120
        else: iW = 90
        aKeyBtn[i * 11 + j] = Button(panel, label=aKeys[i * 11 + j], id=myId, pos=(iX, iY), size=(iW, 70), style=wBorderDouble)
        aKeyBtn[i * 11 + j].font = Font(32, faceName="Source Code Pro", weight=wFontWeightBold)
        myId += 1
        
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen
  • [Nim] Gibt es sowas wie @GUI_CtrlId in Nim

    • Oscar
    • 5. Mai 2020 um 08:46

    Ich habe das jetzt so umgesetzt:

    Code
    import wNim
    
    const aKeys = [
                  "Q", "W", "E", "R", "T", "Z", "U", "I", "O", "P", "<-",
                  "A", "S", "D", "F", "G", "H", "J", "K", "L", "_", "<-'",
                  "Y", "X", "C", "V", "B", "N", "M", ",", ".", "-", "+"
                  ]
    
    var
      aKeyBtn: array[0..32, wButton]
      iX, iY, iW, myID: int
    
    let app = App()
    let frame = Frame(title="Test", size=(1200, 340))
    let panel = Panel(frame)
    
    frame.wEvent_Button do (event: wEvent):
      let sender = event.getEventObject()
      let sID = int(sender.id)
      echo $sID & " -> " & aKeys[sID]
    
    for i in 0..2:
      iY = 10 + i * 80
      for j in 0..10:
        iX = 10 + i * 30 + j * 100
        case i * 11 + j
        of 10: iW = 150
        of 21: iW = 120
        else: iW = 90
        aKeyBtn[i * 11 + j] = Button(panel, label=aKeys[i * 11 + j], id=myID, pos=(iX, iY), size=(iW, 70), style=wBorderDouble)
        aKeyBtn[i * 11 + j].font = Font(32, faceName="Source Code Pro", weight=wFontWeightBold)
        myID += 1
        
    aKeyBtn[10].setToolTip("Test")
    frame.center()
    frame.show()
    app.mainLoop()
    Alles anzeigen

    Funktioniert wunderbar! Nochmals Danke für Deine Hilfe, Bugfix!

    Solche kleinen Beispiele zu den einzelnen Funktionen fehlen noch bei Nim.

  • [Nim] Gibt es sowas wie @GUI_CtrlId in Nim

    • Oscar
    • 4. Mai 2020 um 19:21
    Zitat von BugFix

    So, hier ein Bsp.:

    Oh, klasse! Das hilft mir sehr viel weiter.

    Vielen Dank! :):thumbup:

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™