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

  • MasterCode

    • Oscar
    • 24. September 2018 um 17:08
    Zitat von Musashi

    Zum Build der MasterCode.au3 benötigt man offenbar eine AutoIt-Version GRÖßER 3.3.14.0. , korrekt ?

    Das kann gut sein! Ich benutze v3.3.14.5 und damit funktioniert das.

    Ich konnte jetzt im Changelog auch nichts derartiges finden, aber wenn da nur die eine Funktion fehlt:

    AutoIt
    ; #FUNCTION# ====================================================================================================================
    ; Author.........: Yashied
    ; Modified.......: jpm
    ; ===============================================================================================================================
    Func _WinAPI_GetMonitorInfo($hMonitor)
        Local $tMIEX = DllStructCreate('dword;long[4];long[4];dword;wchar[32]')
        DllStructSetData($tMIEX, 1, DllStructGetSize($tMIEX))
    
        Local $aRet = DllCall('user32.dll', 'bool', 'GetMonitorInfoW', 'handle', $hMonitor, 'struct*', $tMIEX)
        If @error Or Not $aRet[0] Then Return SetError(@error + 10, @extended, 0)
    
        Local $aResult[4]
        For $i = 0 To 1
            $aResult[$i] = DllStructCreate($tagRECT)
            _WinAPI_MoveMemory($aResult[$i], DllStructGetPtr($tMIEX, $i + 2), 16)
            ; Return SetError(@error + 10, @extended, 0) ; cannot really occur
            ; EndIf
        Next
        $aResult[3] = DllStructGetData($tMIEX, 5)
        Switch DllStructGetData($tMIEX, 4)
            Case 1 ; MONITORINFOF_PRIMARY
                $aResult[2] = 1
            Case Else
                $aResult[2] = 0
        EndSwitch
        Return $aResult
    EndFunc   ;==>_WinAPI_GetMonitorInfo
    Alles anzeigen
  • MasterCode

    • Oscar
    • 24. September 2018 um 14:35

    Ich habe mal wieder ein kleines Spiel programmiert. Einen MasterMind-Clone.

    Ich nenne es MasterCode. Falls das Spiel nicht bekannt ist, hier die

    Spielregeln:

    Bei Spielstart generiert das Programm einen 4stelligen Code aus 6 Farben (Doppelte sind erlaubt). Diese sind ganz oben zu sehen (natürlich erstmal verdeckt).

    Der Spieler muss nun versuchen diesen Code zu erraten. Dazu kann er mit den Buttons am unteren Spielfeldrand einen Code eingeben.

    Wenn man versehentlich eine "falsche" Farbe angeklickt hat, so gibt es den "Undo"-Button auf der rechten Seite, mit der man die letzte Eingabe zurücknehmen kann.

    Sind die 4 Felder gefüllt, erscheint ein "Haken"-Button, den man zur Bestätigung des Code anklicken muss.

    Nach der Bestätigung wertet das Programm die Spieler-Eingabe aus. Für jede richtige Farbe, die dazu am richtigen Platz steht, bekommt man einen schwarzen Pin. Für jede richtige Farbe, die aber am falschen Platz steht, bekommt man einen weißen Pin.

    Kein Pin heißt, alle Farben sind falsch. Vier schwarze Pins markieren das Spielende (logischerweise), denn dann hat man den Code ja erraten.

    Insgesamt hat man 12 Versuche. Wenn man den Code bis dahin nicht erraten hat, hat man das Spiel verloren.

    Das Spiel passt sich automatisch in der Größe dem Monitor an, von dem es gestartet wird (Mausposition).

    Ich habe das mit diversen Auflösungen getestet (von 640x480 bis 2560x1440). Es sollte aber auch mit noch höheren Auflösungen funktionieren. Bei den niedrigen Auflösungen sieht das Ganze nicht so schön aus, weil die Grafiken alle extrem runterskaliert werden müssen.

    Aber ich denke, dass die meisten wohl über Monitore von 1024x768 und darüber verfügen werden. :)

    Screenshot:

    Screenshot.png

    Im ZIP-Archiv (Anhang) findet ihr das Script, sowie alle benötigten Includes. Die Grafiken sind wieder BASE64-Codiert in "Ressources.au3". Deswegen, mal wieder, ein Dankeschön an UEZ für den "File to Base64 String Code Generator"! :rock:

    Dateien

    MasterCode_v1_0_0_0.zip 3,44 MB – 536 Downloads
  • FileOpenDialog zeigt Dateiname nicht vollständig an

    • Oscar
    • 24. September 2018 um 05:26

    Es geht sogar ohne globale Variable, wenn man stattdessen eine statische Variable einsetzt:

    AutoIt
    #include-once
    #include <Timers.au3>
    
    Func _FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions = 0, $sDefaultName = '', $hWnd = 0)
        If StringLen($sDefaultName) > 14 Then ; Problem mit der Anzeige des DefaultName im FileOpenDialog fixen, dass ab 15 Zeichen auftritt
            Local $hDummyGui = GUICreate('DummyGui'), $iIDTimer = _Timer_SetTimer($hDummyGui, 50, '_FileOpenCheck')
            _FileOpenCheck(0, $sTitle, 0, 0)
        EndIf
        Local $sWorkingDir = @WorkingDir, $sFile = FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions, $sDefaultName, $hWnd), $iError = @error, $iExtended = @extended
        FileChangeDir($sWorkingDir)
        If StringLen($sDefaultName) > 14 Then GUIDelete($hDummyGui)
        Return SetError($iError, $iExtended, $sFile)
    EndFunc
    
    Func _FileOpenCheck($hWnd, $iMsg, $iIDTimer, $iTime)
        Local Static $sFileOpenTitle
        If $hWnd = 0 Then
            $sFileOpenTitle = $iMsg ; bei Aufruf mit $hWnd = 0 den Fenstertitel in die statische Variable uebernehmen
            Return
        EndIf
        _Timer_KillTimer($hWnd, $iIDTimer)
        If WinWait($sFileOpenTitle, '', 3) Then ControlSend($sFileOpenTitle, '', '[CLASS:Edit; INSTANCE:1]', '{HOME}^a')
    EndFunc
    Alles anzeigen
  • FileOpenDialog zeigt Dateiname nicht vollständig an

    • Oscar
    • 23. September 2018 um 19:09
    Zitat von Bitnugger

    Habe mir da einen kleinen Fix für geschrieben...

    Ich hätte da noch eine Variante, bei der man keine zusätzliche Exe-Datei braucht.

    Eine globale Variable "$sFileOpenTitle" und zwei kleine Funktionen:

    Code
    #include <Timers.au3>
    Global $sFileOpenTitle = ''
    Global $sFile = _FileOpenDialog('Select File...', 'C:', 'All (*.*)', 0, 'Dateiname 1234567890')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFile = ' & $sFile & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
    Func _FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions = 0, $sDefaultName = '', $hWnd = 0)
        $sFileOpenTitle = $sTitle
        Local $hDummyGui = GUICreate('DummyGui')
        Local $hTimer = _Timer_SetTimer($hDummyGui,  250, '_FileOpenCheck')
        Local $sFile = FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions, $sDefaultName, $hWnd)
        GUIDelete($hDummyGui)
        Return $sFile
    EndFunc
    
    Func _FileOpenCheck($hWnd, $iMsg, $iIDTimer, $iTime)
        If Not WinExists($sFileOpenTitle) Then Return
        _Timer_KillTimer($hWnd, $iIDTimer)
        ControlSend($sFileOpenTitle, '', '[CLASS:Edit; INSTANCE:1]', '{HOME}')
    EndFunc
    Alles anzeigen

    Das funktioniert, weil die Funktion der Timer-UDF quasi parallel läuft und durch das FileOpenDialog nicht geblockt wird.

    Und so nebenbei kann man damit auch noch den FileOpenDialog in der Größe verändern und nach Wunsch auf dem Desktop plazieren:

    Code
    #include <Timers.au3>
    Global $sFileOpenTitle = ''
    Global $sFile = _FileOpenDialog('Select File...', 'C:', 'All (*.*)', 0, 'Dateiname 1234567890')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFile = ' & $sFile & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
    Func _FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions = 0, $sDefaultName = '', $hWnd = 0)
        $sFileOpenTitle = $sTitle
        Local $hDummyGui = GUICreate('DummyGui')
        Local $hTimer = _Timer_SetTimer($hDummyGui,  250, '_FileOpenCheck')
        Local $sFile = FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions, $sDefaultName, $hWnd)
        GUIDelete($hDummyGui)
        Return $sFile
    EndFunc
    
    Func _FileOpenCheck($hWnd, $iMsg, $iIDTimer, $iTime)
        Local $iWidth = 800, $iHeight = 600
        If Not WinExists($sFileOpenTitle) Then Return
        _Timer_KillTimer($hWnd, $iIDTimer)
        ControlSend($sFileOpenTitle, '', '[CLASS:Edit; INSTANCE:1]', '{HOME}')
        WinMove($sFileOpenTitle, '', @DesktopWidth / 2 - $iWidth / 2, @DesktopHeight / 2 - $iHeight / 2, $iWidth, $iHeight)
    EndFunc
    Alles anzeigen
  • Was hat es mit $IDCLOSE in der MsgBoxConstants.au3 auf sich?

    • Oscar
    • 23. September 2018 um 12:15
    Zitat von Bitnugger

    es steht doch in den Includes, was es damit auf sich hat.

    Diesen Rückgabewert bekommst Du aber nicht, wenn die MsgBox mit dem Close-Button beendet wird.

    Es kommt stattdessen "$IDCANCEL" (Wert: 2).

    Vielleicht ist/war das mal vorgesehen, dass dann $IDCLOSE gesendet wird!?

  • FileOpenDialog zeigt Dateiname nicht vollständig an

    • Oscar
    • 23. September 2018 um 08:45

    Unter Windos 7 "OS:WIN_7/Service Pack 1 CPU:X64 OS:X64 Environment(Language:0407)" tritt der Fehler auch auf:

  • Mit IE.au3 auf bereits geöffnete Instanz zugreifen

    • Oscar
    • 21. September 2018 um 05:21
    Zitat von JensSchwartz

    Ein anderes: Nachdem in einem Spiel eine Aktion bereits läuft, die zum Abschluss später noch ein paar Klicks braucht, soll bei Bedarf das Script diese ausführen.

    Und genau sowas unterstützen wir hier nicht! Forenregeln beachten!

    [Thread closed]

  • _WinAPI_ThemeSetProgress

    • Oscar
    • 20. September 2018 um 18:00

    Ok, Danke!

    Das funktioniert also auch unter Windows 10.

    Auch wenn es nicht so gut aussieht (ich verstehe immer noch nicht, warum man den AERO-Style aufgegeben hat). <X

  • _WinAPI_ThemeSetProgress

    • Oscar
    • 20. September 2018 um 16:00

    Ich habe mir mal die WinAPI-Theme Funktionen genauer angesehen und eine Progressfunktion damit erstellt.

    Diesen durchlaufenden "weißen" Balken fand ich immer nervig und außerdem wollte ich eine Prozentanzeige innerhalb der Progressbar.

    Schriftgröße und Schriftart sind konfigurierbar und man kann auch den Status (Normal = grün, Error = rot, Pause = gelb) setzen.

    Screenshot:

    screenshot.png

    Das ist ein Screenshot unter Windows 7, AERO-Style.

    Mich würde mal interessieren, wie das unter Windows 10 aussieht. Vielleicht kann mal jemand einen Screenshot machen?

    Dateien

    WinAPI_ThemeSetProgress.au3 2,51 kB – 336 Downloads WinAPI_ThemeSetProgress_Example.au3 1,03 kB – 331 Downloads
  • _FileListToArray

    • Oscar
    • 16. September 2018 um 08:49
    Zitat von autoiter

    Ich bin froh, dass ich kein Beispiel erstellt habe..

    Sehe ich nicht so dramatisch! :)

    Auch wenn er das im konkreten Fall nicht einsetzen möchte, kann es vielleicht ein Anderer gebrauchen (oder er in einem späteren Projekt).

    Das Prinzip gilt ja nicht nur für Dateien, sondern überhaupt für Arrays, wenn man Doppelte ausfiltern will und sowas kommt ja öfter vor.

  • _FileListToArray

    • Oscar
    • 15. September 2018 um 19:05
    Zitat von Mikki

    Hast du da ein Beispiel parat?

    Ok, hier mal ein Beispiel:

    AutoIt
    #include <Debug.au3>
    #include <File.au3>
    
    Global $aSourceFiles = _FileListToArrayRec(@SystemDir, '*', $FLTAR_FILES, $FLTAR_RECUR)
    ;~ _DebugArrayDisplay($aSourceFiles)
    Global $aDestFiles = $aSourceFiles
    ReDim $aDestFiles[UBound($aDestFiles) / 2] ; das Ziel-Array halbieren, damit nur die Haelfte der Dateien doppelt ist
    
    ConsoleWrite(StringFormat('%i Dateien in $aSourceFiles\r\n\r\n', UBound($aSourceFiles)))
    ConsoleWrite(StringFormat('%i Dateien in $aDestFiles\r\n\r\n', UBound($aDestFiles)))
    
    #Region *** 2 For-Schleifen ***
    Global $iDoubleCount = 0, $iTimer = TimerInit()
    For $sSource In $aSourceFiles
        For $sDest In $aDestFiles
            If $sSource = $sDest Then $iDoubleCount += 1
        Next
    Next
    ConsoleWrite(StringFormat('Ergebnis: "2 For-Schleifen"\r\nZeit: %0.3f Sekunden\r\n', Round(TimerDiff($iTimer) / 1000, 3)))
    ConsoleWrite(StringFormat('%i doppelte Dateien\r\n\r\n', $iDoubleCount))
    #EndRegion *** 2 For-Schleifen ***
    
    #Region *** Dictionary ***
    Global $iDoubleCount = 0, $iTimer = TimerInit()
    Global $oDict = ObjCreate('Scripting.Dictionary') ; Dictionary erstellen
    For $sDest In $aDestFiles ; nur ein Schleifendurchlauf vom Ziel-Array
        $oDict.Item($sDest) = 1 ; alle Array-Elemente aus dem Ziel-Array ins Dictionary eintragen
    Next
    For $sSource In $aSourceFiles ; nur ein Schleifendurchlauf vom Source-Array
        If $oDict.Exists($sSource) Then $iDoubleCount += 1 ; Hier findet der Vergleich statt, ob die Quelldatei im Dictionary vorhanden ist
    Next
    ConsoleWrite(StringFormat('Ergebnis: "Dictionary"\r\nZeit: %0.3f Sekunden\r\n', Round(TimerDiff($iTimer) / 1000, 3)))
    ConsoleWrite(StringFormat('%i doppelte Dateien\r\n\r\n', $iDoubleCount))
    #EndRegion *** Dictionary ***
    Alles anzeigen

    Da erhalte ich bei mir als Ergebnis:

    Code
    5025 Dateien in $aSourceFiles
    
    2512 Dateien in $aDestFiles
    
    Ergebnis: "2 For-Schleifen"
    Zeit: 7.832 Sekunden
    2512 doppelte Dateien
    
    Ergebnis: "Dictionary"
    Zeit: 0.034 Sekunden
    2512 doppelte Dateien
    Alles anzeigen

    Wie bereits geschrieben: "...um ein Vielfaches schneller." :)

    Und je mehr Dateien in den Arrays vorhanden sind, umso größer wird der Abstand zwischen den beiden Verfahren.

  • _FileListToArray

    • Oscar
    • 15. September 2018 um 07:57

    Schön, dass Du das Problem lösen konntest. Man könnte noch mehr Variablen einsparen ($Dateiname_Source, $Dateiname_Dest, $aMsgBox[54][0]), aber das bringt nicht so viel an Geschwindigkeit.

    Falls Du mal mehr Geschwindigkeit brauchst oder es im Source- und/oder Destordner zu voll wird (sehr viele Dateien), dann kannst Du auf das Dictionary-Objekt ausweichen.

    Statt alle Sourcedateien mit allen Destdateien zu vergleichen (zwei ineinander verschachtelte For...Next-Schleifen), geht das mit einem Dictionary um ein Vielfaches schneller.

  • _WinAPI_SetLayeredWindowAttributes, transparente Sektionen sind bei Windows 10 inaktiv, nicht bei Windows 7.

    • Oscar
    • 9. September 2018 um 16:17

    Im OnEventModus muss ein Sleep in die Endlosschleife, weil die sonst 100% Rechenzeit frisst:

    AutoIt
    While Sleep(1000)
    
    WEnd
  • Device change example

    • Oscar
    • 8. September 2018 um 19:38

    Damit das eigene Script mitbekommt, wenn sich an der Anzahl der Laufwerke etwas ändert, kann man GUIRegisterMsg mit $WM_DEVICECHANGE verwenden.

    Ich habe jetzt rausgefunden, dass man nicht nur rausbekommt welcher Laufwerksbuchstabe sich geändert hat, man bekommt auch raus, wenn ein Medium in ein Laufwerk gelegt wird bzw. daraus entfernt wird (z.B. bei CD-ROM Laufwerken).

    Das hat mir bei der neuen Version des FileCommander sehr geholfen. Vielleicht könnt ihr das ja auch gebrauchen. Ich habe mal ein kleines Beispielscript erstellt:

    AutoIt
    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StringConstants.au3>
    #include <WindowsConstants.au3>
    
    Global Const $tagDEV_BROADCAST_HDR = 'dword dbch_size; dword dbch_devicetype; dword dbch_reserved'
    Global Const $tagDEV_BROADCAST_VOLUME = 'dword dbcv_size; dword dbcv_devicetype; dword dbcv_reserved; dword dbcv_unitmask; dword dbcv_flags'
    Global Const $DBT_DEVICEARRIVAL = 0x8000
    Global Const $DBT_DEVICEREMOVECOMPLETE = 0x8004
    Global Const $DBT_DEVTYP_VOLUME = 0x00000002
    Global Const $DBTF_MEDIA = 0x0001
    Global Const $DBTF_NET = 0x0002
    
    Global $hGui = GUICreate('Device change example', 640, 400)
    Global $idListview = GUICtrlCreateListView('Time|Device|Event', 5, 5, 630, 390)
    GUICtrlSetFont(-1, 11, 400, 0, 'Verdana')
    GUICtrlSendMsg($idListview, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg($idListview, $LVM_SETCOLUMNWIDTH, 1, 70)
    GUICtrlSendMsg($idListview, $LVM_SETCOLUMNWIDTH, 2, 400)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_DEVICECHANGE, '_WM_DEVICECHANGE')
    
    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    
    Func _WM_DEVICECHANGE($hWnd, $Msg, $wParam, $lParam)
        ; Remarks:
        ; Although the dbcv_unitmask member may specify more than one volume in any message,
        ; this does not guarantee that only one message is generated for a specified event.
        ; Multiple system features may independently generate messages for logical volumes at the same time.
        ;
        ; Messages for media arrival and removal are sent only for media in devices that support a soft-eject mechanism.
        ; For example, applications will not see media-related volume messages for floppy disks.
        ;
        ; Messages for network drive arrival and removal are not sent whenever network commands are issued,
        ; but rather when network connections will disappear as the result of a hardware event.
        #forceref $hWnd, $Msg
        Local $tDEV_BROADCAST_HDR, $tDEV_BROADCAST_HANDLE, $tDEV_BROADCAST_VOLUME
        Local $iBitmask, $iFlags, $aDrives
        Switch $wParam
            Case $DBT_DEVICEARRIVAL
                $tDEV_BROADCAST_HDR = DllStructCreate($tagDEV_BROADCAST_HDR, $lParam)
                Switch DllStructGetData($tDEV_BROADCAST_HDR, 'dbch_devicetype')
                    Case $DBT_DEVTYP_VOLUME
                        $tDEV_BROADCAST_VOLUME = DllStructCreate($tagDEV_BROADCAST_VOLUME, $lParam)
                        $iBitmask = DllStructGetData($tDEV_BROADCAST_VOLUME, 'dbcv_unitmask')
                        $iFlags = DllStructGetData($tDEV_BROADCAST_VOLUME, 'dbcv_flags')
                        $aDrives = _BitmaskToDriveletterArray($iBitmask)
                        If Not @error Then
                            For $sDrive In $aDrives
                                Switch $iFlags
                                    Case $DBTF_MEDIA ; Change affects media in drive.
                                        GUICtrlCreateListViewItem(StringFormat('%s|%s|A media has been inserted', _NowTime(), $sDrive), $idListview)
                                    Case $DBTF_NET ; Indicated logical volume is a network volume.
    
                                    Case Else ; Change affects physical device or drive.
                                        GUICtrlCreateListViewItem(StringFormat('%s|%s|A device has been inserted', _NowTime(), $sDrive), $idListview)
                                EndSwitch
                            Next
                        EndIf
                EndSwitch
            Case $DBT_DEVICEREMOVECOMPLETE
                $tDEV_BROADCAST_HDR = DllStructCreate($tagDEV_BROADCAST_HDR, $lParam)
                Switch DllStructGetData($tDEV_BROADCAST_HDR, 'dbch_devicetype')
                    Case $DBT_DEVTYP_VOLUME
                        $tDEV_BROADCAST_VOLUME = DllStructCreate($tagDEV_BROADCAST_VOLUME, $lParam)
                        $iBitmask = DllStructGetData($tDEV_BROADCAST_VOLUME, 'dbcv_unitmask')
                        $iFlags = DllStructGetData($tDEV_BROADCAST_VOLUME, 'dbcv_flags')
                        $aDrives = _BitmaskToDriveletterArray($iBitmask)
                        If Not @error Then
                            For $sDrive In $aDrives
                                Switch $iFlags
                                    Case $DBTF_MEDIA ; Change affects media in drive.
                                        GUICtrlCreateListViewItem(StringFormat('%s|%s|A media has been removed', _NowTime(), $sDrive), $idListview)
                                    Case $DBTF_NET ; Indicated logical volume is a network volume.
    
                                    Case Else ; Change affects physical device or drive.
                                        GUICtrlCreateListViewItem(StringFormat('%s|%s|A device has been removed', _NowTime(), $sDrive), $idListview)
                                EndSwitch
                            Next
                        EndIf
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_DEVICECHANGE
    
    Func _BitmaskToDriveletterArray(ByRef $iBitmask)
        Local $sDriveLetter = ''
        If $iBitmask = 0 Then Return SetError(1, 0, '')
        For $i = 0 To 25
            If BitAND($iBitmask, 2 ^ $i) Then $sDriveLetter &= Chr(65 + $i) & ':,'
        Next
        Return StringSplit(StringTrimRight($sDriveLetter, 1), ',', $STR_NOCOUNT)
    EndFunc   ;==>_BitmaskToDriveletterArray
    Alles anzeigen
  • Verschieben der Buttons einer Toolbar

    • Oscar
    • 7. September 2018 um 15:24

    Das war's! Ich bin wieder weg von der Toolbar! :cursing::rolleyes:

    Nachdem mir mein Script (reproduzierbar) abgestürzt ist, wenn ich einen Rechtsklick auf eine der Toolbars gemacht habe, habe ich alle Toolbars wieder rausgelöscht.

    Ich habe mir jetzt etwas Eigenes gebastelt:

    Das sind Checkboxen mit "BitOR($BS_PUSHLIKE, $BS_AUTORADIOBUTTON)" als Style und jeweils einer ImageList für die Icons. Die habe ich auf einer Child-Gui erstellt, damit ich das vom Resizing her besser handeln kann.

    Auch das hinzufügen/entfernen (wenn sich an den Laufwerken etwas ändert) habe ich mittlerweile hinbekommen. Es kann jetzt endlich weitergehen. :)

  • Vertikale Scrollbar bei ListView

    • Oscar
    • 7. September 2018 um 09:59

    alpines: Dann wäre der Style "$LVS_NOCOLUMNHEADER" besser. Im Text-Parameter des Listviews muss aber mindestens ein Leerzeichen drin stehen.

  • Automatisch Bericht herunterladen und speichern - Aber wie?

    • Oscar
    • 7. September 2018 um 08:42
    Zitat von Sonderbaar

    Bist du noch nie über eine rote Ampel gefahren? Darfste auch nicht, haste aber sicherlich schon mal gemacht

    Ja, und wenn Du erwischt wirst, bekommst Du Punkte!

    Genau wie hier! :P

    [Thread closed]

  • Vertikale Scrollbar bei ListView

    • Oscar
    • 7. September 2018 um 08:39

    Was bezweckst Du denn mit dem Style "$LVS_SMALLICON", wenn Du gar keine Icons verwendest?

    Oder willst Du es nur so:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    
    $hGUI = GUICreate("listview items", 220, 250, 100, 250, -1, $WS_EX_ACCEPTFILES)
    $idListview = GUICtrlCreateListView(" ", 10, 10, 160, 150)
    _GUICtrlListView_SetColumnWidth($idListview, 0, 200)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUICtrlCreateListViewItem("2222222222   1234567890", $idListview)
    GUISetState(@SW_SHOW, $hGUI)
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    Alles anzeigen
  • GUICtrlCreateCombo spielt verrückt

    • Oscar
    • 5. September 2018 um 12:16
    Zitat von mirko2002

    Wie kann das sein, wenn ein Control gelöscht und neu erstellt wird, sich nichtmal hierbei der Fehler lösen läßt???

    autoBert hat es in Post#2 bereits geschrieben: Bitte poste ein lauffähiges Beispielscript, bei dem der Fehler auftritt!

    Dann hätten wir das Thema längst abgeschlossen.

  • Verschieben der Buttons einer Toolbar

    • Oscar
    • 2. September 2018 um 17:20
    Zitat von BugFix

    Da gibt es so einige Bugs.

    Wie wahr... :rolleyes:

    Nachdem ich mich mit den Einschränkungen abgefunden habe, versuche ich gerade einen Eintrag von einer Listview auf die Toolbar zu "draggen".

    Das geht nicht! Man bekommt keine Message! Weder mit GuiRegisterMsg WM_NOTIFY noch per WindowProc.

    Ich muss wohl doch noch ein transparentes Label drunterpacken... :/

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™