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

  • $WM_NOTIFY, TVN_SELCHANGEDW in TreeView meldet bei Mausclick zweimal

    • Oscar
    • 14. November 2014 um 17:09

    Es reicht, wenn Du den Switch etwas erweiterst:

    [autoit]


    Switch $iCode
    Case $NM_CLICK ; The user has clicked the left mouse button within the control
    Return 0 ; zero to allow the default processing
    Case $TVN_SELCHANGEDA, $TVN_SELCHANGEDW
    ConsoleWrite("changed " & @CR)
    EndSwitch

    [/autoit]
  • GUICtrlCreateListViewItem ist zu langsam? -> Problem gelöst, aber Warum ist das so?

    • Oscar
    • 12. November 2014 um 20:03

    Hier mal ein Zitat aus der Hilfe zu GuiSwitch:

    Zitat

    Using the tabitemID allow to create new control in the specified tabitem control. Don't forget to close tabitem definition GUICtrlCreateTabItem("")


    Und hier ein Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate("My GUI Tab", 400, 300)

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

    GUICtrlCreateTab(10, 10, 380, 280)
    $idTab0 = GUICtrlCreateTabItem("tab0")
    $idTab1 = GUICtrlCreateTabItem("tab1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $idTab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW)
    $idListView = GUICtrlCreateListView("1|2", 20, 50, 160, 140)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    Sleep(2000)
    GUICtrlDelete($idListView)

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

    GUISwitch($hGui, $idTab2)
    $idListView = GUICtrlCreateListView("A|B", 20, 50, 160, 140)
    GUICtrlCreateTabItem("")

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]
  • 1,245 GB AutoIt-Scripte

    • Oscar
    • 2. November 2014 um 08:40

    Naja, da bleibt die Frage, ob es in 100 Jahren noch ein funktionierendes M-Disc-Laufwerk gibt? ;)^^

  • Forum-Umstellung Problemsammlung

    • Oscar
    • 24. Oktober 2014 um 18:46

    Das Problem ist bekannt! Du musst einmalig die AutoIt-Cookies löschen, dann funktioniert es wieder.

  • Forum-Umstellung Problemsammlung

    • Oscar
    • 24. Oktober 2014 um 16:53
    Zitat von Alina

    Unter dem Punkt "Benutzer, die heute online waren", werde ich nicht geführt, obwohl ich nach Mitternacht bereits on war. Habe von einem anderen PC aus nachgesehen und das unangemeldet und auch jetzt als angemeldetet Userin bin ich nicht als "Benutzer, die heute online waren" geführt.


    In der Liste tauche ich auch nicht auf.

  • iMsg mit mehreren Buttons funktioniert nicht wie gewünscht

    • Oscar
    • 23. Oktober 2014 um 19:34

    Genau das ist das Problem! Du erstellst die Buttons während die MessageLoop-Schleife bereits läuft.
    Die Button-Variablen haben als "Vorbelegung" den Wert Null. Die Null von $iMsg stimmt also mit der "Vorbelegung" überein und somit wird dieser Switch-Case-Zweig ausgeführt.

    Bei dynamisch erzeugten Control-Elementen würde ich immer den OnEventMode einsetzen, denn dort kann man einfach jedem Control-Element eine Funktion zuordnen.
    Mit Hilfe von @GUI_CtrlId erhält man dann (innerhalb der Funktion) die ControlId, wenn man den Button anklickt.

  • MsgBox Ja/Nein

    • Oscar
    • 22. Oktober 2014 um 15:23
    Zitat von Tyronik

    Und wie bekomm ich es jetzt hin das mein erstelltes GUI nach einem Klick auf Ja geöffnet wird?


    Du schreibst die Zeile an den Anfang Deines Scripts. Alles, was nach der If-Anweisung folgt, wird bei "Ja" abgearbeitet.

  • MsgBox Ja/Nein

    • Oscar
    • 22. Oktober 2014 um 15:07

    Das ist doch nur ein Einzeiler:

    [autoit]

    If MsgBox(4, 'test', 'Ja oder Nein das ist hier die Frage') = 7 Then Exit

    [/autoit]
  • Forum-Umstellung Problemsammlung

    • Oscar
    • 22. Oktober 2014 um 14:23

    Bei den Dateianhängen ist die Dateiendung "au3" nicht erlaubt.
    Die max. Dateigröße ist mit 1 MB auch zu gering.

  • _FileRenameBox

    • Oscar
    • 22. Oktober 2014 um 14:17

    Hier mal eine Funktion, um eine Datei vom Anwender umbenennen zu lassen.
    Man übergibt den Dateinamen (Pfad kann man auch relativ übergeben, wird von der Funktion umgewandelt) und die Funktion übernimmt die Interaktion mit dem Anwender.

    AutoIt
    $sTestfile = @ScriptDir & '\test.txt'
    $hFile = FileOpen($sTestfile, 2)
    If $hFile <> -1 Then
        FileWrite($hFile, 'abc')
        FileClose($hFile)
    EndIf
    TraySetState(2)
    $hGui = GUICreate('Hauptfenster', 640, 480)
    GUISetState(@SW_SHOW, $hGui)
    $sNewFilename = _FileRenameBox('test.txt', Default, $hGui)
    ConsoleWrite('error: ' & @error & @CR & 'Neuer Dateiname: "' & $sNewFilename & '"' & @CR)
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
        EndSwitch
    WEnd
    
    
    ;===============================================================================
    ; Function Name:   _FileRenameBox($sOldFilename[, $sTitle = Default][, $hParent = 0])
    ; Description:     Hiermit kann man eine Datei umbenennen (mit Anwender-Interaktion)
    ; Parameter(s):    $sOldFilename = die Datei, die umbenannt werden soll (muss existieren)
    ;                  $sTitle = Ein Text, der als Titelzeile für das Fenster verwendet wird (optional)
    ;                  $hParent = das Handle zum Parent-Fenster (optional)
    ; Requirement(s):  -
    ; Return Value(s): Im Erfolgsfall wird der neue Dateiname zurückgegeben.
    ;                  ansonsten: wird ein Leerstring zurückgegeben und
    ;                  @error = 1 -> FileMove schlug fehl (z.B. Rechteproblem)
    ;                  @error = 2 -> Der Anwender hat das umbenennen abgebrochen
    ;                  @error = 3 -> Die Datei existiert nicht
    ; Author(s):       oscar (www.autoit.de)
    ;===============================================================================
    Func _FileRenameBox($sOldFilename, $sTitle = Default, $hParent = 0)
        $sOldFilename = FileGetLongName($sOldFilename, 1) ; evtl. vorhandenen relativen Pfad umwandeln
        If Not FileExists($sOldFilename) Then Return SetError(3, 0, '') ; wenn die Datei nicht existiert, dann Funktion abbrechen
        If $sTitle = Default Or $sTitle = '' Then $sTitle = 'Datei umbenennen...'
        Local $sPath = StringRegExpReplace($sOldFilename, '(.+\\).+', '$1') ; nur der Pfad vom alten Dateinamen
        Local $sFilename = StringRegExpReplace($sOldFilename, '.+\\(.+)', '$1') ; nur der Dateiname
        Local $iError = 0 ; Variable zur Fehlerbehandlung
        ; nachfolgend ein paar lokale Konstanten deklarieren, falls diese im Hauptscript nicht deklariert wurden
        If Not IsDeclared('GUI_EVENT_CLOSE') Then Local Const $GUI_EVENT_CLOSE = -3
        If Not IsDeclared('WS_SYSMENU') Then Local Const $WS_SYSMENU = 0x00080000
        If Not IsDeclared('WS_CAPTION') Then Local Const $WS_CAPTION = 0x00C00000
        If Not IsDeclared('ES_READONLY') Then Local Const $ES_READONLY = 0x0800
        If Not IsDeclared('ES_AUTOHSCROLL') Then Local Const $ES_AUTOHSCROLL = 0x0080
        If Not IsDeclared('GUI_DISABLE') Then Local Const $GUI_DISABLE = 0x80
        If Not IsDeclared('GUI_ENABLE') Then Local Const $GUI_ENABLE = 0x40
        If Not IsDeclared('GUI_FOCUS') Then Local Const $GUI_FOCUS = 0x100
        If Not IsDeclared('WS_EX_STATICEDGE') Then Local Const $WS_EX_STATICEDGE = 0x00020000
        Local $sNewFilename = $sFilename, $fFileExists = False
        Local $iWidth = 480, $iHeight = 260, $iLeft = -1, $iTop = -1
        If IsHWnd($hParent) Then ; wenn ein Parent-Fenster vorhanden ist, dann...
            Local $aPos = WinGetPos($hParent) ; die Position des Fensters holen
            If $aPos[0] <> -32000 Then ; wenn das Fenster nicht minimiert ist, dann...
                $iLeft = $aPos[0] + $aPos[2] / 2 - $iWidth / 2 ; die Box relativ zu diesem ausrichten
                $iTop = $aPos[1] + $aPos[3] / 2 - $iHeight / 2
            EndIf
            GUISetState(@SW_DISABLE, $hParent) ; das Parent-Fenster deaktivieren
        Else
            TraySetState(2) ; wenn kein Parent-Fenster vorhanden, dann das Tray-Icon ausblenden
        EndIf
        Local $iOldOpt = Opt('GUIOnEventMode', 0) ; auf MessageLoop-Modus schalten und alten Zustand merken
    
    
        Local $hGui = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_SYSMENU, $WS_CAPTION), Default, $hParent)
        GUISetFont(9, 400, 0, 'Tahoma', $hGui, 5)
        GUISetBkColor(0xE0E0E0, $hGui)
        GUISetIcon('shell32.dll', -24, $hGui)
    
    
        GUICtrlCreateGroup('Pfad:', 10, 10, 460, 52)
        GUICtrlCreateInput($sPath, 20, 30, 440, 23, BitOR($ES_READONLY, $ES_AUTOHSCROLL))
        GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5)
        GUICtrlSetBkColor(-1, 0xFFFFD0)
        GUICtrlCreateGroup('', -99, -99, 1, 1)
    
    
        GUICtrlCreateGroup('Dateiname (alt):', 10, 70, 460, 52)
        GUICtrlCreateLabel('"' & $sFilename & '"', 20, 92, 440, 24)
        GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5)
        GUICtrlCreateGroup('', -99, -99, 1, 1)
    
    
        GUICtrlCreateGroup('Dateiname (neu):', 10, 130, 460, 56)
        Local $idNewFilename = GUICtrlCreateInput($sNewFilename, 20, 152, 440, 24)
        GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5)
        GUICtrlCreateGroup('', -99, -99, 1, 1)
    
    
        Local $idRename = GUICtrlCreateButton('Umbenennen', 240, 200, 120, 25)
        Local $idCancel = GUICtrlCreateButton('Abbrechen', 370, 200, 100, 25)
    
    
        Local $idStatus = GUICtrlCreateLabel(' Bitte den neuen Dateinamen eingeben...', -2, 240, 484, 20, -1, $WS_EX_STATICEDGE)
        GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5)
    
    
        GUICtrlSetState($idNewFilename, $GUI_FOCUS)
        GUISetState(@SW_SHOW, $hGui)
        While True
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE, $idCancel
                    $iError = 2
                    ExitLoop
                Case $idRename
                    $sNewFilename = StringRegExpReplace(GUICtrlRead($idNewFilename), '.*\\(.+)', '$1') ; evtl. eingegebenen Pfad abtrennen
                    If Not FileExists($sPath & $sNewFilename) Then ; nur umbenennen, wenn bisher keine Datei mit dem neuen Namen existiert
                        $iError = FileMove($sOldFilename, $sPath & $sNewFilename) = 0 ; $iError bekommt hier den Wert "1", wenn das umbenennen nicht geklappt hat
                        ExitLoop ; While-Schleife verlassen
                    EndIf
            EndSwitch
            $sNewFilename = GUICtrlRead($idNewFilename)
            If $sNewFilename <> StringRegExpReplace($sNewFilename, '.*\\(.+)', '$1') Then GUICtrlSetData($idNewFilename, StringRegExpReplace($sNewFilename, '.*\\(.+)', '$1'))
            If $sNewFilename <> '' And $sPath & $sNewFilename <> $sOldFilename Then ; wenn ein neuer Dateiname eingegeben wurde, dann...
                If BitAND(GUICtrlGetState($idRename), $GUI_DISABLE) Then
                    If FileExists($sPath & $sNewFilename) Then
                        If Not $fFileExists Then GUICtrlSetData($idStatus, ' Achtung! Es existiert bereits eine Datei mit diesem Namen!')
                        $fFileExists = True
                    Else
                        GUICtrlSetState($idRename, $GUI_ENABLE) ; den "Umbenennen"-Button aktivieren
                        GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...')
                        $fFileExists = False
                    EndIf
                EndIf
            Else
                If $fFileExists Then GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...')
                $fFileExists = False
                If BitAND(GUICtrlGetState($idRename), $GUI_ENABLE) Then
                    GUICtrlSetState($idRename, $GUI_DISABLE) ; sonst deaktivieren
                    GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...')
                EndIf
            EndIf
        WEnd
        If IsHWnd($hParent) Then GUISetState(@SW_ENABLE, $hParent) ; das Parent-Fenster wieder aktivieren
        GUIDelete($hGui) ; das Eingabefenster löschen
        Opt('GUIOnEventMode', $iOldOpt) ; und den alten Zustand wiederherstellen
        If $iError Then Return SetError($iError, 0, '')
        Return SetError(0, 0, $sPath & $sNewFilename)
    EndFunc
    Alles anzeigen


    Screenshot:
    _FileRenameBox.png

    Dateien

    _FileRenameBox.au3 7,64 kB – 189 Downloads
  • FileMove (Rename) trotz READONLY-Attribut?

    • Oscar
    • 22. Oktober 2014 um 13:28

    Ok (diverse Tests später), das Verhalten ist doch etwas komplizierter.
    Ein verschieben der Datei (mit gesetztem R-Attribut) ist nur auf dem gleichen Laufwerk möglich.
    Sobald man versucht, die Datei auf ein anderes Laufwerk zu verschieben, verhält sich FileMove wie FileCopy. Es wird also eine Kopie erstellt und das Original bleibt erhalten.

    Jetzt verstehe ich zumindest, warum das mal funktioniert und mal nicht.
    So ganz einleuchtend finde ich das aber nicht. READONLY würde ich auch für "nicht löschen" (wird beim FileMove ja eigentlich gemacht) ansehen.
    Naja, damit ist das Thema erledigt.

  • StringSplit in 2D Array

    • Oscar
    • 22. Oktober 2014 um 08:31

    So:

    [autoit]


    #include <Array.au3>
    Global $string = 'computername|mitarbeiter' & @CRLF & 'xyz|Heinz, Karl' & @CRLF & 'zxy|Mann, Manfred'
    Global $aTemp = StringSplit($string, @CRLF, 3)
    Global $aOut[UBound($aTemp)][2], $aSplit
    For $i = 0 To UBound($aTemp) - 1
    $aSplit = StringSplit($aTemp[$i], '|', 2)
    If UBound($aSplit) > 2 Then ReDim $aOut[UBound($aTemp)][UBound($aSplit)]
    For $j = 0 To UBound($aSplit) - 1
    $aOut[$i][$j] = $aSplit[$j]
    Next
    Next
    _ArrayDisplay($aOut)

    [/autoit]
  • Forum-Umstellung Problemsammlung

    • Oscar
    • 22. Oktober 2014 um 05:24

    Mir ist noch etwas aufgefallen: und zwar, werden die neuen Beiträge nicht mehr im Forum angezeigt.
    Hier mal zwei Screenshots:
    Bei der Forenübersicht wird mir angezeigt, dass es 4 neue Beiträge gibt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Aber wenn ich dann in das Forum wechsle, dann kann ich die neuen nicht von den alten unterscheiden:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Früher waren die neuen Beiträge mit einem Sternchen gekennzeichnet.

  • FileMove (Rename) trotz READONLY-Attribut?

    • Oscar
    • 20. Oktober 2014 um 19:36

    Mir ist gerade etwas komisches aufgefallen. Und zwar kann man mit FileMove Dateien umbenennen und/oder verschieben, obwohl sie das READONLY-Attribut besitzen.
    Ich bin mir nicht ganz sicher, ob das schon immer so war, aber meiner Meinung nach ist das doch ein Fehler, oder?
    Hier mal ein Testscript:

    Spoiler anzeigen
    [autoit]


    $sTestfile = @ScriptDir & '\test.txt'
    $hFile = FileOpen($sTestfile, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, 'abc')
    FileClose($hFile)
    FileSetAttrib($sTestfile, '+R')
    EndIf

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

    FileMove($sTestfile, @ScriptDir & '\test\test_umbenannt.txt', 8)

    [/autoit]
  • iMsg mit mehreren Buttons funktioniert nicht wie gewünscht

    • Oscar
    • 20. Oktober 2014 um 15:22

    Poste bitte das komplette Script!
    Mit diesem Auszug kann man Dir nicht helfen.

  • ComboBox auslesen und als Deklaration verwenden

    • Oscar
    • 19. Oktober 2014 um 19:48

    Heute angemeldet, das erste Script mit _ImageSearch, Du suchst nach "Karotten" und "Acker", Du postest nicht Dein komplettes Script.
    Das alles sind klare Indizien für ein Botscript. Also klär uns doch mal auf, wofür das sein soll.

  • Forum-Umstellung Problemsammlung

    • Oscar
    • 18. Oktober 2014 um 14:55

    Bilder, die man in den Beitrag eingefügt hat, werden nicht mehr im Beitrag angezeigt, sondern nur als Link.
    Beispiel: Video-Archiv

  • Videodatei überprüfen, ob diese gerade erstellt wird

    • Oscar
    • 16. Oktober 2014 um 09:06

    Um mal eine andere Möglichkeit vorzuschlagen:
    Schau Dir mal das Beispiel zu "_WinAPI_ShellChangeNotifyRegister" an (neue AutoIt-Version).
    Damit kannst Du das Verzeichnis überwachen und bekommst eine Meldung, sobald sich etwas ändert (mit der entsprechenden Datei).

  • Suche lustige Lade Texte

    • Oscar
    • 15. Oktober 2014 um 10:28

    - "Der Prozessor wird vorgeheizt. Bitte warten!"
    - "Ich muss noch kurz die Bits und Bytes einparken!"
    - "Das abwaschen und abtrocknen der Daten dauert noch etwas!"

  • Like oder nicht Like - das ist die Frage!

    • Oscar
    • 15. Oktober 2014 um 10:06

    Wir hatten hier ja schonmal so etwas wie ein Punktesystem (Anzahl der Posts) und das führte eben genau zu dem Verhalten, dass möglichst viel gepostet (negative Qualität) wurde.
    Ich kann hier AspirinJunkie und Andy nur zustimmen. Ein Bewertungssystem (wie auch immer) verändert das Postingverhalten. Und ich glaube nicht, dass es positiv ausfällt.
    Mir ist das Forum, so wie es ist, immer noch am liebsten.

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™