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

  • Android 12 - WLAN priorisieren

    • BugFix
    • 14. Juni 2025 um 18:26

    Hi,

    mein Smartphone priorisiert WLAN nach der Sendeleistung des WLAN. Es wechselt dann automatisch in das mit der besten Sendeleistung, manchmal dann auch zu Mobildaten.

    Nur sagt die Sendeleistung nichts über die Qualität des Netzes dahinter aus. Meine Fritz.Box strahlt horizontal und vertikal kräftig aus und steht im ganzen Haus mit Signalqualität "sehr gut" zur Verfügung. Leider hat der Anschluss nur eine räudige DL-Quote von ca. 8 Mbit.
    Da hier vielleicht in einem oder 2 Jahren mal Glasfaseranschluss kommt, habe ich mir jetzt Starlink zugelegt. Der zugehörige Router ist recht brauchbar in horizontaler Richtung, vertikal verschlechtert sich das Signal jedoch rapide. Das ist aber überhaupt kein Problem. Denn selbst bei minimaler Sendeleistung (Das WLAN Symbol hat nur einen Bogen) habe ich immer noch einen DL von min. 20 MBit.

    Ich würde gern festlegen, dass das Starlink WLAN absoluten Vorrang hat. Aber wenn ich im Smartphone den WLAN Schlüssel speichere, wird auch automatisch mit dem WLAN verbunden, sofern es die "beste" Sendeleistung hat.

    Ich werde sowieso noch WLAN-Repeater einsetzen, dann ist das Problem eh gelöst. Interessiert mich aber, ob es auch über irgendwelche Einstellungen ginge.

  • eine etwas andere uhr mit erweiterten features

    • BugFix
    • 8. Juni 2025 um 12:47

    Du kannst dir auch gerne Anregungen aus unseren Uhrprojekten hier aus dem Forum holen. Könnte 6 - 10 Jahre her sein, da haben wir mal ziemlich viele Uhrenskripte erstellt. (War möglicherweise auch ein Contest, weiß ich nicht mehr genau)

    Bemühe mal die Forensuche.

  • Formeln in eine CSV-Datei schreiben

    • BugFix
    • 23. Mai 2025 um 16:47
    Zitat von entsel

    Noch neuer ? ;)

    Gemeint ist die Version von AutoIt, nicht von Include Dateien. 😙

    Maps sind noch nicht allzu lange in der Standardversion enthalten. Links findest du im Portal.

  • Einzelne Daten (Mengenproblem) in einem String durch array austauschen?

    • BugFix
    • 14. April 2025 um 14:17

    Du solltest besser nicht das Original verändern, sondern das Ergebnis mit den Veränderungen extra speichern und zum Austausch wieder auf das Original zurückgreifen.

  • GUIRegisterMsg($WM_DRAWITEM, ...) Problem mit Map

    • BugFix
    • 3. März 2025 um 10:08
    Zitat von Kanashius

    Wenn ich mir $sText ausgeben lasse ist es halt manchmal ein leerer String

    Ja, ich war der (irrigen) Meinung, wenn ich die Listbox befüllt habe, ist doch da auf jeden Fall Inhalt. Der Inhalt, der in der Callbackfunktion relevant ist, entsteht ja erst beim Zeichnen desselben. Somit ist beim ersten Zeichnen der Wert von _GUICtrlComboBox_GetLBText noch leer und führt zum Crash.

    Ich habe die Callbackfunktion jetzt dahingehend angepasst, dass sie bei leerem Text wieder verlassen wird.

    AutoIt
    Func _WM_DRAWITEM($hWnd, $iMsg, $iwParam, $ilParam)
        Local Const $tagDRAWITEMSTRUCT = 'uint CtlType;' & 'uint CtlID;' & 'uint itemID;' & 'uint itemAction;' & _
                        'uint itemState;' & 'hwnd hwndItem;' & 'hwnd hDC;' & $tagRECT & ';ulong_ptr itemData;'
        Local $tDIS = DllStructCreate($tagDRAWITEMSTRUCT, $ilParam)
        Local $clrForeground = 0x000000, $clrBackground = 0xFFFFFF, $sText
        Local Static $clrPrev = $clrForeground
        $clrForeground = $clrPrev
        Local $iCtlType    = $tDIS.CtlType
        Local $iCtlID      = $tDIS.CtlID
        Local $iItemID     = $tDIS.itemID
        Local $iItemAction = $tDIS.itemAction
        Local $iItemState  = $tDIS.itemState
        Local $hWndItem    = $tDIS.hwndItem
        Local $hDC         = $tDIS.hDC
        Local $tRect       = DllStructCreate($tagRECT)
    
    
        If $iCtlType = $ODT_COMBOBOX And $iCtlID = $cCombo Then
            For $i = 1 To 4
                DllStructSetData($tRect, $i, DllStructGetData($tDIS, $i+7))
            Next
            _GUICtrlComboBox_GetLBText($hWndItem, $iItemID, $sText)
    ; ################################################		
    		If $sText = '' Then Return $GUI_RUNDEFMSG
    ; ################################################		
    
            Switch $iItemAction
                Case $ODA_DRAWENTIRE
                    $clrForeground = 0x000000
                    If BitAND($iItemState, $ODS_SELECTED) Then
                        $clrBackground = _WinAPI_SetBkColor($hDC, 0xD8D8D8)
                    Else
                        $clrBackground = _WinAPI_SetBkColor($hDC, 0xFFFFFF)
                    EndIf
                    If $mUnit[$sText]['access'] = 0 Then $clrForeground = 0x0000FF
                    $clrPrev = _WinAPI_SetTextColor($hDC, $clrForeground)
                    _WinAPI_DrawText($hDC, $sText, $tRect, $DT_LEFT)
                    _WinAPI_SetTextColor($hDC, $clrForeground)
                    _WinAPI_SetBkColor($hDC, $clrBackground)
            EndSwitch
        EndIf
        Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen
  • GUIRegisterMsg($WM_DRAWITEM, ...) Problem mit Map

    • BugFix
    • 2. März 2025 um 17:11

    Ich habe die Problematik mal auf ein mimimales Skript runtergebrochen.
    Im Original lese ich Daten aus einer INI in eine Map, habe ich hier nachgestellt.
    Diese Daten sollen abhängig von dem Wert in 'access' (0/1) in rot oder Schwarz in der Combobox gelistet werden. Das funktioniert auch grundlegend.
    Versuche ich jedoch innerhalb der WM_DRAWITEM-Funktion aus der Map den Wert für 'access' abzufragen, um entsprechend einzufärben, bekomme ich einen Fehler:

    Code
    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    If $mUnit[GUICtrlRead($cCombo)]['access'] = 0 Then $clrForeground = 0x0000FF
    If $mUnit[GUICtrlRead($cCombo)]^ ERROR

    Wie aber im Skript sichtbar ist, lasse ich zur Kontrolle die gesamte Map vorab in die Konsole ausgeben - problemlos.
    Eigentlich könnte ich statt GUICtrlRead($cCombo) auf das funktionsintern gelesene $sText zugreifen. Hatte das aber mal testweise geändert, um es als Fehlerquelle auszuschließen.

    Vielleicht hat ja schonmal jemand das Problem gehabt.

    In Zeilen #90 / #91 mal die Kommentierung tauschen, um den Effekt zu sehen.

    AutoIt
     #include <GUIComboBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    
    
    Global Const $ODT_COMBOBOX = 3
    Global Const $ODA_DRAWENTIRE = 1
    Global Const $ODA_SELECT = 2
    Global Const $ODS_SELECTED = 1
    
    
    Global $hGUI
    Global $cCombo, $inPath
    Global $sStr = ''
    
    $hGUI = GUICreate('Test', 600, 400)
    $cCombo = GUICtrlCreateCombo('', 100, 20, 300, 300, BitOR($WS_CHILD, $CBS_OWNERDRAWFIXED, $CBS_HASSTRINGS, $CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
    $inPath = GUICtrlCreateInput('', 100, 50, 300, 20)
    
    Global $sPathRoot = 'D:\Units'
    Global $mUnit[]        ; $m['Einheit']['path']  /  $m['Einheit']['template']  / $m['Einheit']['access']
    For $i = 1 To 15
        Local $m[]
        $mUnit['Einheit_' & $i] = $m
        $mUnit['Einheit_' & $i]['path'] = $sPathRoot & '\Einheit_' & $i
        $mUnit['Einheit_' & $i]['template'] = 'Template_' & Random(1,100,1)
        $mUnit['Einheit_' & $i]['access'] = Random(0,1,1)
    Next
    
    For $key in MapKeys($mUnit)
        $sStr &= '|' & $key
    Next
    
    GUICtrlSetData($cCombo, $sStr)
    
    ; ============================= Testausgabe Inhalt Map:
    For $key in MapKeys($mUnit)
        ConsoleWrite($key & ': ' & $mUnit[$key]['path'] & ' | ' & $mUnit[$key]['template'] & ' | ' & $mUnit[$key]['access'] & @CRLF)
    Next
    ; =============================================
    
    GUIRegisterMsg($WM_DRAWITEM, '_WM_DRAWITEM')
    
    GUISetState()
    
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $cCombo
                $sSel = GUICtrlRead($cCombo)
                GUICtrlSetData($inPath, $mUnit[$sSel]['path'])
        EndSwitch
    WEnd
    
    
    Func _WM_DRAWITEM($hWnd, $iMsg, $iwParam, $ilParam)
        Local Const $tagDRAWITEMSTRUCT = 'uint CtlType;' & 'uint CtlID;' & 'uint itemID;' & 'uint itemAction;' & _
                        'uint itemState;' & 'hwnd hwndItem;' & 'hwnd hDC;' & $tagRECT & ';ulong_ptr itemData;'
        Local $tDIS = DllStructCreate($tagDRAWITEMSTRUCT, $ilParam)
        Local $clrForeground = 0x000000, $clrBackground = 0xFFFFFF, $sText
        Local Static $clrPrev = $clrForeground
        $clrForeground = $clrPrev
        Local $iCtlType    = $tDIS.CtlType
        Local $iCtlID      = $tDIS.CtlID
        Local $iItemID     = $tDIS.itemID
        Local $iItemAction = $tDIS.itemAction
        Local $iItemState  = $tDIS.itemState
        Local $hWndItem    = $tDIS.hwndItem
        Local $hDC         = $tDIS.hDC
        Local $tRect       = DllStructCreate($tagRECT)
    
    
        If $iCtlType = $ODT_COMBOBOX And $iCtlID = $cCombo Then
            For $i = 1 To 4
                DllStructSetData($tRect, $i, DllStructGetData($tDIS, $i+7))
            Next
            _GUICtrlComboBox_GetLBText($hWndItem, $iItemID, $sText)
    
            Switch $iItemAction
                Case $ODA_DRAWENTIRE
                    $clrForeground = 0x000000
                    If BitAND($iItemState, $ODS_SELECTED) Then
                        $clrBackground = _WinAPI_SetBkColor($hDC, 0xD8D8D8)
                    Else
                        $clrBackground = _WinAPI_SetBkColor($hDC, 0xFFFFFF)
                    EndIf
    ; ##################################################################################################
    ;~                 If $mUnit[GUICtrlRead($cCombo)]['access'] = 0 Then $clrForeground = 0x0000FF
                    If Random(0,1,1) = 0 Then $clrForeground = 0x0000FF
    ; ##################################################################################################
    
                    $clrPrev = _WinAPI_SetTextColor($hDC, $clrForeground)
                    _WinAPI_DrawText($hDC, $sText, $tRect, $DT_LEFT)
                    _WinAPI_SetTextColor($hDC, $clrForeground)
                    _WinAPI_SetBkColor($hDC, $clrBackground)
            EndSwitch
        EndIf
        Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen
  • Verrücktes Icon

    • BugFix
    • 1. März 2025 um 10:43
    Zitat von Schnuffel

    Iconcache löschen

    Jo, Danke. Da sind wir inzwischen bei Win11, mit Hardwareanforderungen, die jedes Raumfahrtmodul übertreffen, aber sowas Sinnloses, wie ein Icon-Cache, der in Mikrosekunden befüllt ist, existiert immer noch. :Face:

  • Verrücktes Icon

    • BugFix
    • 1. März 2025 um 10:20

    Ich habe in einem Projektordner das verwendete Icon als "app.ico" gespeichert.
    Jetzt wollte ich es mit einem anderen Icon ersetzen, im Screenshot "app_neu.ico".

    Also habe ich das neue Icon in den Ordner kopiert als "app.ico" - Überschreiben bestätigt. Und danach, zu meiner Überraschung, sah es so aus:
      :?::?::?:

    Nun habe ich das neu kopierte Icon, das immer noch aussieht, wie das alte mal umbenannt:
      :rofl:

    ABER, sowie ich es wieder zurück benenne, bekommt es die alte Ansicht. :Face:

    Ich bin maximal verwirrt. :D Dachte mir noch, vielleicht gibt es ja irgendeinen Pufferspeicher für das Explorerfenster. Habe diesen also geschlossen, neu geöffnet und mich in das Verzeichnis durchgeklickt - unveränderte Situation.

    :whistling: :whistling: :whistling:


    EDIT:

    Also es liegt doch am Pufferspeicher, der wird nur nicht geleert, wenn man den Explorer beendet. Aber beim Wechsel von Miniaturansicht zu Maximalansicht wird das korrekte Bild angezeigt. - Also ein reines Explorerproblem.

  • AutoIt 3.3.16.1 deutsch / englische Hilfe verfügbar - Stand 2025.02.16

    • BugFix
    • 26. Februar 2025 um 21:10

    Ja, absoluten Respekt für deine Ausdauer. :thumbup:

    Als ich vor 18 Jahren mit AutoIt anfing, habe ich anfangs nur für mich Vieles übersetzt. Für Anfänger ist es wirklich extrem wichtig eine Hilfe in der Muttersprache zu haben.

    Später habe ich, wie so viele Andere hier auch, intensiv an deinem Übersetzungsprojekt mitgearbeitet. Wobei ich für mich dann feststellen konnte, dass mit steigender Anzahl an Übersetzungen und wachsenden Fähigkeiten, ich lieber mit der englischen Hilfe arbeite.

    Aber nochmal Tweaky - dein Engagement ist bewundernswert.:klatschen:

  • Ordnernamen in Variable schicken

    • BugFix
    • 22. Februar 2025 um 22:16

    Ich setze hier mal einen Schlusspunkt, ehe das hier noch irgendwie ausartet. Zumal der TE sich bisher nicht wieder gemeldet hat und das ursprüngliche Thema somit durch ist.

  • Favoriten Menü

    • BugFix
    • 21. Februar 2025 um 10:19
    Zitat von Racer

    INI-Files die der Benutzer erstellt sollten immer unter dem Userprofilepfad befinden.

    In einer Mehrbenutzerumgebung stimme ich dir zu. Aber ich schätze mal, dass mehr als 70% der privat genutzten PC nur von einem User genutzt werden. Ich persönlich kenne niemanden, bei dem auf dem Privat-PC mehrere User angelegt sind.

    Aber natürlich kann jeder, der das Programm nutzen möchte, diese minimale Änderung einpflegen (Ändern einer Variablenzuweisung). :whistling:


    Nachtrag:

    Wenn ich Software für andere erstelle, schreibe ich erst recht nicht in die AppData. Für den "Normaluser" ist dieser Bereich nicht sichtbar, es sei denn er gibt die Ordneradresse per Hand ein. Somit läuft man Gefahr, dass sich dort viel Datenmüll ansammelt.
    Mehrbenutzerverwaltung lässt sich auch in einer INI ohne Probleme realisieren. Bekommt einfach jeder User seine Sektion. :P

  • Favoriten Menü

    • BugFix
    • 20. Februar 2025 um 12:35
    Zitat von Peter S. Taler

    Funktioniert das nur für Programme oder ev. auch für Ordnerpfade? Bzw könnte man die Pfade ev. in der *.ini hinterlegen?

    In der Auswahl ist ein Filter für EXE Dateien, müsstest du also per Hand in die INI schreiben.
    z.B.

    Code
    [apps]
    ...
    MeinLieblingsordner=D:\Peters_Katzenfotos\2025

    :D

    Bei Klick auf den Menüpunkt wird der Ordner im Dateiexplorer geöffnet. Wenn du die Einträge in der INI vornimmst, während das Menüprogramm läuft, musst du danach zumindest das Verwaltungsmenü Öffnen und Schließen, damit die Änderungen eingelesen werden. Icon hast du allerdings keines.

    EDIT:

    Wenn du die folgende geänderte Funktion ins Skript einfügst (ca. Zeile 270) wird bei nicht gefundenem Icon automatisch das Ordnersymbol verwendet.

    AutoIt
    Func _GUICtrlCreateListViewImgItem($_sText, $_idLV, $_sPathImg, $_iOrdImg=-1)
    	Switch $_sPathImg
    		Case 'Verwalten'
    			$_sPathImg = $SHELL32DLL
    			$_iOrdImg = -322
    		Case 'Sleep'
    			$_sPathImg = $SHELL32DLL
    			$_iOrdImg = -212
    		Case 'Restart'
    			$_sPathImg = $SHELL32DLL
    			$_iOrdImg = -239
    		Case 'Shutdown'
    			$_sPathImg = $SHELL32DLL
    			$_iOrdImg = -216
    	EndSwitch
    	GUICtrlCreateListViewItem('  ' & $_sText, $_idLV)
    	If GuiCtrlSetImage(-1, $_sPathImg, $_iOrdImg) = 0 Then
    		GuiCtrlSetImage(-1, $SHELL32DLL, -5)
    	EndIf
    EndFunc
    Alles anzeigen
  • Favoriten Menü

    • BugFix
    • 20. Februar 2025 um 10:00

    In diesem Thread hatte ich die Problematik, Listview Einträge mit Icon untereinander anzuordnen.
    Benötigt habe ich das hierfür - mein eigenes Favoritenmenü. Natürlich kann man das alles auch im Windows Startmenü anpinnen. Ich wollte jedoch ein Menü ausschließlich für meine Favoriten.

    Das Menü wird eingeblendet mit <Strg+Shift+M> und kann mit <Esc> ausgeblendet werden. Je nach Position der Taskbar wird auch das Menü positioniert, in Windows 11 ist das ja offiziell nur noch unten erlaubt. <X
    Links-Klick auf einen Eintrag führt die hinterlegte Anwendung aus, Rechts-Klick zeigt einen Tooltipp mit dem Anwendungspfad.
    Falls gewollt, kann man die Menüanwendung mit <Strg+Alt+M> beenden.

    Beim ersten Start wird eine INI Datei im Ordner der EXE erstellt, mit dem Namen der EXE. Beim ersten Aufruf des Menüs ist nur ein Eintrag zum Start der Verwaltungsoberfläche enthalten.
      

    Die Nutzung der Verwaltungsoberfläche ist eigentlich selbsterklärend:
      
    Als Alias wird automatisch der Programmname verwendet, ist aber frei editierbar. Die System-Events: Abmelden / Neustart / Herunterfahren können per Checkbox in das Menü übernommen werden.
    Mit jedem Menüeintrag wird das Menü dynamisch angepasst. Die Icon der Anwendungen werden in das Menü übernommen.
    Werden mehrere Anwendungen nacheinander durch Zwischenspeichern erfasst, wird beim Aufruf des Auswahlmenüs automatisch der zuletzt verwendete Pfad verwendet. Vermeidet lästiges Durchklicken. ;)

    Die Änderungen sind sofort im Menü gültig:

    Die Apps lassen sich einfach durch Demarkieren der Checkbox wieder vom Menü entfernen.

    AutoIt: FavoritenMenu.au3
    ; TIME-STAMP 2025-02-17 14:16:12
    
    #cs ====    Favoriten Menü   ====
    
        Dynamisch anpassbares Menü für App-Favoriten
    
        Kompilierte *.exe in eigenem Ordner speichern, dort wird dann die zugehörige INI-Datei erstellt.
    
        Einfügen in Autostart:
        • <Win+R> "shell:startup" (oder händisch öffnen: "C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
        • Link zur *.exe einfügen
    
        Einblenden Menü:        <Ctrl+Shift+M>
        Ausblenden Menü:        <Esc>            (nur erforderlich, wenn kein Menüpunkt gewählt wird)
        Menüprogramm Beenden:    <Ctrl+Alt+M>
    
        Links-Klick Menüeintrag:    Ausführen der hinterlegten Anwendung
        Rechts-Klick Menüeintrag:    Anzeige Anwendungspfad als Tooltipp
    
    #ce ====
    
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <Misc.au3>
    #include <StaticConstants.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    
    If _Singleton(@ScriptName, 1) = 0 Then
        MsgBox(48+262144, @ScriptName, 'Eine Instanz dieses Programms ist bereits gestartet!')
        Exit
    EndIf
    
    ; Gui nicht mit ESC schließen
    Opt("GUICloseOnESC", 0)
    ; kein Traymenü anzeigen
    Opt("TrayMenuMode", 1)
    ; Trayicon verstecken
    Opt("TrayIconHide", 1)
    
    
    Global $INI = @ScriptDir & "\" & StringLeft(@ScriptName, StringInStr(@ScriptName, '.', 0, -1)) & "ini"
    If Not FileExists($INI) Then
       IniWrite($INI, 'remarks', 'Info', '[apps] "Alias=Anwendungspfad"')
       IniWrite($INI, 'winitem', 'logout', '0')
       IniWrite($INI, 'winitem', 'restart', '0')
       IniWrite($INI, 'winitem', 'shutdown', '0')
    EndIf
    Global $aApps[1][2]
    
    Global $SHELL32DLL = @WindowsDir & '\System32\SHELL32.dll'
    Global $PROGRAMFILES = StringLeft(@WindowsDir, 3) & "Program Files"
    
    ; Variablen Manage-Gui (für Hinzufügen/Entfernen von Apps)
    Global $hGuiNew, $hTab
    Global $tabNew, $inPath, $btSelect, $sSel, $inAlias, $btNext, $btEnd, $aBuffer[1][2] = [[Null]], $sRes, $sPathLast = $PROGRAMFILES
    Global $tabDel, $btDel, $LVDel, $hLVDel
    Global $icoLogout, $icoRestart , $icoShutdown, $cbLogout, $cbRestart, $cbShutdown
    
    _Manage_CreateGUI()
    
    ; Variablen Main-Gui (Menü)
    Global $hGUImain, $idDummy
    Global $nWGUImain = 220, $nHGUImain = @DesktopHeight
    Global $nXGUImain = 0, $nYGUImain = 0
    Global $idLVmain, $hLVmain
    Global $nXLVmain = 5, $nYLVmain = 5
    Global $nWLVmain = $nWGUImain - (2 * $nXLVmain)
    Global $nHLVmain = $nHGUImain - (2 * $nYLVmain)
    Global $bManage = False    ; Schleifenvariable zum Öffnen 'Anwendungen verwalten'
    
    _Main_Create()
    
    ; Hotkey zum Ausblenden des Menüs an GUI-Main koppeln
    Global $aAccKeys[1][2] = [['{ESC}', $idDummy]]
    GUISetAccelerators($aAccKeys, $hGUImain)
    
    _Main_MenuSetEntries()
    
    ; Hotkey zum Einblenden des Menüs
    HotKeySet("^+m", "_Main_ShowGui")    ; Strg+Umsch+M
    ; Hotkey zum Beenden der Anwendung
    HotKeySet("^!m", "_Exit")            ; Strg+Alt+M
    
    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")
    
    
    
    Global $aMsg
    While True
        If $bManage Then
            _GUICtrlListView_DeleteAllItems($hLVDel)
            _Manage_SetLVDelete()
           If IniRead($INI, 'winitem', 'logout', '0') = '1' Then GUICtrlSetState($cbLogout, $GUI_CHECKED)
           If IniRead($INI, 'winitem', 'restart', '0') = '1' Then GUICtrlSetState($cbRestart, $GUI_CHECKED)
           If IniRead($INI, 'winitem', 'shutdown', '0') = '1' Then GUICtrlSetState($cbShutdown, $GUI_CHECKED)
            $bManage = False
            GUISetState(@SW_SHOW, $hGuiNew)
        EndIf
        $aMsg = GUIGetMsg(1)
        Switch $aMsg[1]
            Case $hGUImain
                Switch $aMsg[0]
                    Case $idDummy
                        GUISetState(@SW_HIDE, $hGUImain)
                EndSwitch
            Case $hGuiNew
                Switch $aMsg[0]
                   Case -3
                        GUISetState(@SW_HIDE, $hGuiNew)
                       GUICtrlSetData($inAlias, '')
                       GUICtrlSetData($inPath, '')
                        $sPathLast = $PROGRAMFILES
                        _Main_MenuSetEntries()
                        GUISetState(@SW_SHOW, $hGUImain)
                    Case $btSelect
                        $sSel = FileOpenDialog('Anwendung', $sPathLast, 'Application (*.exe)', 1+2)
                        If $sSel <> '' Then
                            GUICtrlSetData($inPath, $sSel)
                            $sPathLast = StringLeft($sSel, StringInStr($sSel, '\', 0, -1) -1)
                            $sAlias = GUICtrlRead($inAlias)
                            If $sAlias = '' Then
                                $sAlias = StringTrimLeft($sSel, StringInStr($sSel, '\', 0, -1))
                                $sAlias = StringLeft($sAlias, StringInStr($sAlias, '.', 0, -1) -1)
                                GUICtrlSetData($inAlias, $sAlias)
                            EndIf
                            GUICtrlSetState($btNext, $GUI_ENABLE)
                            GUICtrlSetState($btEnd, $GUI_ENABLE)
                        EndIf
                    Case $btNext    ; Zwischenspeichern
                        If $aBuffer[0][0] <> Null Then ReDim $aBuffer[UBound($aBuffer)+1][2]
                        $aBuffer[UBound($aBuffer)-1][0] = GUICtrlRead($inAlias)
                        $aBuffer[UBound($aBuffer)-1][1] = GUICtrlRead($inPath)
                        GUICtrlSetData($inAlias, '')
                        GUICtrlSetData($inPath, '')
                    Case $btEnd
                        $sRes = ''
                        If $aBuffer[0][0] <> Null Then
                            For $i = 0 To UBound($aBuffer) -1
                                $sRes &= _IniWriteOnce($INI, 'apps', $aBuffer[$i][0], $aBuffer[$i][1]) & @CRLF
                            Next
                            ReDim $aBuffer[1][2]
                            $aBuffer[0][0] = Null
                        EndIf
                        If GUICtrlRead($inAlias) <> '' And GUICtrlRead($inPath) <> '' Then
                            $sRes &= _IniWriteOnce($INI, 'apps', GUICtrlRead($inAlias), GUICtrlRead($inPath)) & @CRLF
                            GUICtrlSetData($inAlias, '')
                            GUICtrlSetData($inPath, '')
                        EndIf
                        If $sRes <> '' Then MsgBox(262144+64, 'Übernahme Apps', $sRes)
                        GUISetState(@SW_HIDE, $hGuiNew)
                       _Main_MenuSetEntries()
                       GUISetState(@SW_SHOW, $hGUImain)
                   Case $cbLogout
                       IniWrite($INI, 'winitem', 'logout', (BitAND(GUICtrlRead($cbLogout), $GUI_CHECKED) ? '1' : '0'))
                   Case $cbRestart
                       IniWrite($INI, 'winitem', 'restart', (BitAND(GUICtrlRead($cbRestart), $GUI_CHECKED) ? '1' : '0'))
                   Case $cbShutdown
                       IniWrite($INI, 'winitem', 'shutdown', (BitAND(GUICtrlRead($cbShutdown), $GUI_CHECKED) ? '1' : '0'))
                    Case $btDel
                        GUISetState(@SW_HIDE, $hGuiNew)
                        ; Einträge mit entferntem Haken aus der INI löschen
                        For $i = 0 To _GUICtrlListView_GetItemCount($hLVDel) -1
                            If Not _GUICtrlListView_GetItemChecked($hLVDel, $i) Then
                                IniDelete($INI, 'apps', _GUICtrlListView_GetItemText($hLVDel, $i))
                            EndIf
                        Next
                        _Main_MenuSetEntries()
                       GUISetState(@SW_SHOW, $hGUImain)
                EndSwitch
        EndSwitch
    WEnd
    
    
    Func _IniWriteOnce($_ini, $_section, $_key, $_value)    ; Key kann nicht mit neuem Wert überschrieben werden
        Local $aSec = IniReadSection($_ini, $_section)
        If Not @error Then
            For $i = 1 To $aSec[0][0]
                If $aSec[$i][0] = $_key Then Return '"' & $_key & '" - [Fehler] Bereits vorhanden!'
            Next
        EndIf
        IniWrite($_ini, $_section, $_key, $_value)
        Return '"' & $_key & '" - [OK] Eingetragen'
    EndFunc
    
    
    Func _Exit()
        Exit
    EndFunc
    
    
    Func _Main_ShowGui()
        GUISetState(@SW_SHOW, $hGUImain)
    EndFunc
    
    
    Func _Main_Create()
        $hGUImain = GUICreate('', $nWGUImain, $nHGUImain, $nXGUImain, $nYGUImain, $WS_POPUP, $WS_EX_TOPMOST)
        GUISetIcon($SHELL32DLL, -323)
        $idDummy = GUICtrlCreateDummy()
        $idLVmain = GUICtrlCreateListView('', $nXLVmain, $nYLVmain, $nWLVmain, $nHLVmain)
        GUICtrlSetStyle($idLVmain, BitOR($LVS_NOCOLUMNHEADER,$LVS_SMALLICON))
        $hLVmain = GUICtrlGetHandle($idLVmain)
        _GUICtrlListView_SetColumnWidth($hLVmain, 0, $LVSCW_AUTOSIZE_USEHEADER)
    EndFunc
    
    
    Func _Main_MenuSetEntries()
        ; Reset Size & Position
        WinMove($hGUImain, '', $nXGUImain, $nYGUImain, $nWGUImain, $nHGUImain)
        ControlMove($hGUImain, '', $idLVmain, $nXLVmain, $nYLVmain, $nWLVmain, $nHLVmain)
    
        _GUICtrlListView_DeleteAllItems($hLVmain)    ; alle Einträge im Listview löschen
        $aApps = _ReadAppsFromINI()                    ; gespeicherte Apps aus INI lesen
    
        ; Eintrag für Verwaltung an Index 0
        $aApps[0][0] = '>> EINTRÄGE VERWALTEN <<'
        $aApps[0][1] = 'Verwalten'
    
        ; Einträge für Abmelden, Neustart und Shutdown zufügen, wenn gewählt
       If IniRead($INI, 'winitem', 'logout', '0') = 1 Then
           ReDim $aApps[UBound($aApps)+1][2]
           $aApps[UBound($aApps)-1][0] = '>> ABMELDEN <<'
           $aApps[UBound($aApps)-1][1] = 'Sleep'
       EndIf
       If IniRead($INI, 'winitem', 'restart', '0') = 1 Then
           ReDim $aApps[UBound($aApps)+1][2]
           $aApps[UBound($aApps)-1][0] = '>> NEUSTART <<'
           $aApps[UBound($aApps)-1][1] = 'Restart'
       EndIf
       If IniRead($INI, 'winitem', 'shutdown', '0') = 1 Then
           ReDim $aApps[UBound($aApps)+1][2]
           $aApps[UBound($aApps)-1][0] = '>> HERUNTERFAHREN <<'
           $aApps[UBound($aApps)-1][1] = 'Shutdown'
       EndIf
    
        For $i = 0 To UBound($aApps) -1
            _GUICtrlCreateListViewImgItem($aApps[$i][0], $idLVmain, $aApps[$i][1])
        Next
    
        ; Position Menü (relativ zur Taskbar) & Größe (abhängig von Menüeinträgen) ändern
        Local $aView = _GUICtrlListView_GetItemRect($hLVmain, _GUICtrlListView_GetItemCount($hLVmain)-1, $LVIR_LABEL)
        Local $iDiffX = $aView[2] - ($nWGUImain - (2 * $nXLVmain))    ; Änderung der Listviewbreite für Anpassung Fensterbreite
        Local $iDiffY = $aView[3] - ($nHGUImain - (2 * $nYLVmain))    ; Änderung der Listviewhöhe für Anpassung Fensterhöhe
        Local $aWin = WinGetPos($hGUImain)
        Local $tTB = _GetTaskBarProps(True)
        Local $nX = $aWin[0], $nY = $aWin[1], $nW = $aWin[2], $nH = $aWin[3]
        Switch $tTB.sEdge
            Case 'LEFT'
                $nX = $tTB.right
                $nY = 0
            Case 'TOP'
                $nX = 0
                $nY = $tTB.bottom
            Case 'RIGHT'
                $nX = $tTB.left - $nW
                $nY = 0
            Case 'BOTTOM'
                $nX = 0
                $nY = $tTB.top - ($nH + ($iDiffY)) - $nYLVmain
        EndSwitch
        WinMove($hGUImain, '', $nX, $nY, $nW, $nH + ($iDiffY) + 2*$nYLVmain)
        ControlMove($hGUImain, '', $idLVmain, $nXLVmain, $nYLVmain, $nW - (2 * $nXLVmain), $nHLVmain + ($iDiffY) + 2*$nYLVmain)
    EndFunc
    
    
    Func _GUICtrlCreateListViewImgItem($_sText, $_idLV, $_sPathImg, $_iOrdImg=-1)
        Switch $_sPathImg
            Case 'Verwalten'
                $_sPathImg = $SHELL32DLL
                $_iOrdImg = -322
            Case 'Sleep'
                $_sPathImg = $SHELL32DLL
                $_iOrdImg = -212
            Case 'Restart'
                $_sPathImg = $SHELL32DLL
                $_iOrdImg = -239
            Case 'Shutdown'
                $_sPathImg = $SHELL32DLL
                $_iOrdImg = -216
        EndSwitch
        GUICtrlCreateListViewItem('  ' & $_sText, $_idLV)
        GuiCtrlSetImage(-1, $_sPathImg, $_iOrdImg)
    EndFunc
    
    
    Func _ReadAppsFromINI()
        Local $a = IniReadSection($INI, "apps")
        If Not IsArray($a) Then
            $a = StringSplit('|', '|', 2)
            ReDim $a[1][2]
        Else
            _ArraySort($a, 0, 1)
        EndIf
        Return $a
    EndFunc
    
    
    Func _Manage_CreateGUI()
        $hGuiNew = GUICreate('Anwendungen verwalten', 600, 400, 80, (@DesktopHeight/2 -200), -1, $WS_EX_TOPMOST)
        GUISetIcon($SHELL32DLL, -323)
        $hTab = GUICtrlCreateTab(10, 5, 580, 390)
    
        $tabNew = GUICtrlCreateTabItem('Neue Apps')
        GUICtrlCreateLabel('Programmpfad', 20, 53, 80)
        $inPath = GUICtrlCreateInput('', 100, 50, 455, 20, $ES_READONLY)
        $btSelect = GUICtrlCreateButton('...', 560, 50, 20, 20)
        GUICtrlCreateLabel('Anzeigename', 20, 83, 80)
        $inAlias = GUICtrlCreateInput('', 100, 80, 455, 20)
        _GUICtrlEdit_SetCueBanner($inAlias, 'Kurzname eintragen', True)
        GUICtrlCreateLabel('Eintrag Zwischenspeichern oder gespeicherte/aktuelle Daten Übernehmen', 100, 113)
        $btNext = GUICtrlCreateButton('Zwischenspeicher', 100, 140, 120, 20)
        GUICtrlSetState(-1, $GUI_DISABLE)
        $btEnd = GUICtrlCreateButton('Übernahme/Ende', 435, 140, 120, 20)
        GUICtrlSetState(-1, $GUI_DISABLE)
       GUICtrlCreateGroup(' Windows Menüeinträge (Änderungen werden beim Schließen des Fensters übernommen)', 20, 180, 560, 100)
       $icoLogout   = GUICtrlCreateIcon($SHELL32DLL, -212, 128, 210, 32, 32, $SS_ICON)
       $icoRestart  = GUICtrlCreateIcon($SHELL32DLL, -239, 268, 210, 32, 32, $SS_ICON)
       $icoShutdown = GUICtrlCreateIcon($SHELL32DLL, -216, 408, 210, 32, 32, $SS_ICON)
       $cbLogout   = GUICtrlCreateCheckbox(' Abmelden', 100, 245, Default, Default, $BS_ICON)
       $cbRestart  = GUICtrlCreateCheckbox(' Neu Starten', 230, 245, Default, Default, $BS_ICON)
       $cbShutdown = GUICtrlCreateCheckbox(' Herunterfahren', 370, 245, Default, Default, $BS_ICON)
       GUICtrlCreateGroup("", -99, -99, 1, 1)
        GUICtrlCreateTabItem('')
    
        $tabDel = GUICtrlCreateTabItem('Apps Löschen')
        GUICtrlCreateLabel('Für zu löschende Apps die Markierung entfernen', 20, 43)
        $btDel = GUICtrlCreateButton('Übernehmen', 500, 40, 80, 20)
        $LVDel = GUICtrlCreateListView('App|Pfad', 20, 65, 560, 325, BitAND(Default,$LVS_NOCOLUMNHEADER), _
                                            BitOR($LVS_EX_CHECKBOXES,$LVS_EX_GRIDLINES))
        $hLVDel = GUICtrlGetHandle($LVDel)
        _GUICtrlListView_SetColumnWidth($hLVDel, 0, 150)
        _GUICtrlListView_SetColumnWidth($hLVDel, 1, $LVSCW_AUTOSIZE_USEHEADER)
        GUICtrlCreateTabItem('')
    EndFunc
    
    
    Func _Manage_SetLVDelete()
        Local $aApp = _ReadAppsFromINI()
        If UBound($aApps) > 1 Then
            For $i = 1 To UBound($aApp) -1
                GUICtrlCreateListViewItem($aApp[$i][0] & '|' & $aApp[$i][1], $LVDel)
                GUICtrlSetState(-1, $GUI_CHECKED)
            Next
        EndIf
    EndFunc
    
    
    Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $wParam
        Local $HWndLV = $hLVmain
        If Not IsHWnd($HWndLV) Then $HWndLV = GUICtrlGetHandle($HWndLV)
        Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        Local $iCode = DllStructGetData($tNMHDR, "Code")
        Local $idx
        Switch $hWndFrom
            Case $HWndLV
                $idx = _GUICtrlListView_GetSelectedIndices($HWndLV)
                Switch $iCode
                    Case $LVN_ITEMCHANGED
                        ToolTip('')
                    Case $NM_CLICK
                        If $aApps[$idx][1] = "Verwalten" Then
                            $bManage = True
                            GUISetState(@SW_HIDE, $hGUImain)
                        ElseIf $aApps[$idx][1] = "Sleep" Then
                            GUISetState(@SW_HIDE, $hGUImain)
                            Shutdown(0+32) ; $SD_LOGOFF
                        ElseIf $aApps[$idx][1] = "Restart" Then
                            GUISetState(@SW_HIDE, $hGUImain)
                            Shutdown(1+2+4) ; $SD_LOGOFF + $SD_REBOOT + $SD_FORCE
                        ElseIf $aApps[$idx][1] = "Shutdown" Then
                            GUISetState(@SW_HIDE, $hGUImain)
                            Shutdown(1+4+8) ; $SD_SHUTDOWN + $SD_FORCE + $SD_POWERDOWN
                        Else
                            ShellExecute($aApps[$idx][1])
                            GUISetState(@SW_HIDE, $hGUImain)
                        EndIf
                    Case $NM_RCLICK
                        ToolTip($aApps[$idx][1])
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_NOTIFY
    
    
    ;===================================================================================================
    ; Function Name....: _GetTaskBarProps
    ; Description......: gibt Eigenschaften und Position der Taskbar zurück
    ; Parameter(s).....: [optional] $_bReturnStruct - Rückgabe als (True) Struktur, (False - Standard) Array
    ; Return Value(s)..: Array / Struktur mit den Taskbarwerten
    ; Author...........: BugFix
    ;===================================================================================================
    Func _GetTaskBarProps($_bReturnStruct=False)
       Local Const $ABM_GETSTATE = 0x4         ; specify the cbSize.
       Local Const $ABM_GETTASKBARPOS = 0x5    ; specify the cbSize.
       Local Const $ABM_GETAUTOHIDEBAR = 0x7   ; specify the cbSize and uEdge. Returns the handle to the autohide appbar
    
       ; ABM_GETSTATE
       Local Const $ABS_AUTOHIDE = 0x1
       Local Const $ABS_ALWAYSONTOP = 0x2  ; ab Win7 nicht mehr!! --> wenn NICHT $ABS_AUTOHIDE ist es $ABS_ALWAYSONTOP
    
       ; uEdge - ABM_GETAUTOHIDEBAR
       Local Const $ABE_LEFT = 0
       Local Const $ABE_TOP = 1
       Local Const $ABE_RIGHT = 2
       Local Const $ABE_BOTTOM = 3
    
       Local $hWndAppBar = DllCall("user32.dll", 'long', "FindWindowA", 'str', "Shell_traywnd", 'str', "")[0]
       Local $iState, $iEdge, $hWnd, $shell32 = DllOpen("shell32")
       Local $tRC = DllStructCreate("struct;int left;int top;int right;int bottom;endstruct")
       Local $tAPPBARDATA = DllStructCreate("dword cbSize;int hWnd;uint;uint uEdge;int left;int top;int right;int bottom;int")
       $tAPPBARDATA.cbSize = DllStructGetSize($tAPPBARDATA)
       $tAPPBARDATA.hWnd = $hWndAppBar
    
       ; get pos
       $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETTASKBARPOS, 'ptr', DllStructGetPtr($tAPPBARDATA))
       For $i = 1 To 4
           DllStructSetData($tRC, $i, DllStructGetData($tAPPBARDATA, $i+4))
       Next
    
       ; get state
       $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETSTATE, 'ptr', DllStructGetPtr($tAPPBARDATA))
       $iState = $ret[0]
    
       ; get Edge
       If $iState = $ABS_AUTOHIDE Then
           For $i = 0 To 3
               $tAPPBARDATA.uEdge = $i
               $ret = DllCall($shell32, 'int', 'SHAppBarMessage', 'int', $ABM_GETAUTOHIDEBAR, 'ptr', DllStructGetPtr($tAPPBARDATA))
               $hWnd = $ret[0]
               If $hWnd Then
                   $iEdge = $i
                   ExitLoop
               EndIf
           Next
           DllClose($shell32)
       Else
           If $tRC.top < 1 And $tRC.left < 1 Then
                   If $tRC.bottom > $tRC.right Then $iEdge = 0
                   If $tRC.right > $tRC.bottom Then $iEdge = 1
           ElseIf $tRC.top < 1 And $tRC.left > 0 Then
               $iEdge = 2
           Else
               $iEdge = 3
           EndIf
       EndIf
    
       ; return array or structure: [.hWnd, .autohide(True/False), .uEdge(0..3), .sEdge(left..bottom), .left, .top, .right, .bottom]
       Local $aEdge[] = ['LEFT','TOP','RIGHT','BOTTOM']
       Local $aRet[] = [$hWndAppBar, ($iState = $ABS_AUTOHIDE), $iEdge, $aEdge[$iEdge], $tRC.left, $tRC.top, $tRC.right, $tRC.bottom]
       Local $tRet = DllStructCreate('int hWnd;bool autohide;uint uEdge;char sEdge[' & StringLen($aEdge[$iEdge]) & '];int left;int top;int right;int bottom;')
       For $i = 0 To UBound($aRet) -1
           DllStructSetData($tRet, $i+1, $aRet[$i])
       Next
    
       Return ($_bReturnStruct ? $tRet : $aRet)
    EndFunc  ;==>_GetTaskBarProps
    Alles anzeigen

    Dateien

    FavoritenMenu.au3 17,76 kB – 76 Downloads
  • Listview mit Icon - Item untereinander anzeigen

    • BugFix
    • 8. Februar 2025 um 21:35
    Zitat von SOLVE-SMART

    Viel Erfolg weiterhin

    Jetzt tut sich ein anderes Problem auf, kann ich leider nicht im Testskript nachstellen.

    In meiner Anwendung wird das Fenster im Hintergrund befüllt, die Größe angepasst und per Hotkey eingeblendet.

    Mit Listview-UDF erstelltem Listview wird das Fenster angezeigt, mit nativ erstelltem Listview nicht. :rofl: Ich kann nur noch nicht nachvollziehen, was da so reingrätscht.


    EDIT:

    Gefunden - Man darf den Style nicht beim Erstellen setzen, sondern hinterher mit GUICtrlSetStyle.

  • Listview mit Icon - Item untereinander anzeigen

    • BugFix
    • 8. Februar 2025 um 20:49
    Zitat von SOLVE-SMART

    der Trick ist, einfach nicht _GUICtrlListView_Create zu benutzen 😅 .

    He, Danke.
    Meist verwende ich auch die nativen Funktionen. Da ich hier aber im Folgenden die Funktionen aus der UDF brauche, wollte ich konsequenterweise kpl. die UDF nutzen - falsch gedacht. :rofl:

  • Listview mit Icon - Item untereinander anzeigen

    • BugFix
    • 8. Februar 2025 um 13:51

    Problem:
    Ich erstelle ein Listview (ohne Header) und ordne den Item Icon zu. Aber die Einträge werden nebeneinander angeordnet und erst wenn die Listviewbreite erreicht ist, geht es in die nächste Zeile.
    Ich habe schon verschiedene Stylekombis ausprobiert, aber ich bekomme es nicht hin, jeden Eintrag in einer Zeile anzuzeigen.

    Wo liegt mein Fehler?

    Hier das Testskript

    AutoIt
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    
    Global $w_Gui = 400, $h_Gui = 200
    Global $hGui = GuiCreate('', $w_Gui, $h_Gui)
    
    ; Listview erstellen
    Global $hLV = _GUICtrlListView_Create($hGui, '', 5, 5, $w_Gui-10, $h_Gui-10, BitOR($LVS_NOCOLUMNHEADER,$LVS_SMALLICON))
    _GUICtrlListView_InsertColumn($hLV, 0, '')
    _GUICtrlListView_SetColumnWidth($hLV, 0, $LVSCW_AUTOSIZE_USEHEADER)
    
    ; ImageList erstellen
    Global $hImage = _GUIImageList_Create(24, 24)
    _GUIImageList_AddIcon($hImage, @WindowsDir & '\System32\SHELL32.dll', 156, True)
    _GUIImageList_AddIcon($hImage, @WindowsDir & '\System32\SHELL32.dll', 211, True)
    _GUIImageList_AddIcon($hImage, @WindowsDir & '\System32\SHELL32.dll', 238, True)
    _GUIImageList_AddIcon($hImage, @WindowsDir & '\System32\SHELL32.dll', 215, True)
    _GUICtrlListView_SetImageList($hLV, $hImage, 1)
    
    ; Item eintragen
    _GUICtrlListView_AddItem($hLV, "  IRGENDEIN EINTRAG", 0)
    _GUICtrlListView_AddItem($hLV, "  Logout", 1)
    _GUICtrlListView_AddItem($hLV, "  Restart", 2)
    _GUICtrlListView_AddItem($hLV, "  Shutdown", 3)
    
    GUISetState()
    
    Do
    Until GUIGetMsg() = -3
    Alles anzeigen
  • AutoIt auf Domänenrechner mit User-Rechten

    • BugFix
    • 7. Februar 2025 um 16:34

    Hab jetzt die Hauptursache entdeckt. Das Userprofil wurde von einem Systemhaus, das unsere Technik betreut, erstellt. Und das sind in meinen Augen Vollidioten. In meinem Userzweig \Appdata habe ich NUR Leserechte. Was haben die denn gedacht, wozu ich den PC nutze - zum Zeitung Lesen?

    Das werde ich dann nächste Woche klären.

  • AutoIt auf Domänenrechner mit User-Rechten

    • BugFix
    • 7. Februar 2025 um 10:12
    Zitat von water

    Meine SciTEUser.properties liegt in C:\Users\<Username>\AppData\Local\AutoIt v3\SciTE

    Ja, so kenne ich das seit Jahrzehnten - und nur so funktioniert es. Daher war ich verwirrt, diese im Programmordner vorzufinden. Zumal ein Erstellen im User-AppData nichts bringt, wenn SciTE zuerst im Programmordner sucht. :/

  • AutoIt auf Domänenrechner mit User-Rechten

    • BugFix
    • 6. Februar 2025 um 18:26

    Ich habe an meinem Arbeitsplatz jetzt einen Rechner bekommen, der an unsere Domäne angeschlossen ist. Daher habe ich auch keine Adminrechte ;(.

    Folgendes Problem:
    Unter meinem Account wurde durch den Administrator AutoIt und SciTE4AutoIt installiert. Nun wollte ich Anpassungen in SciTE vornehmen - geht aber nicht, da die SciTEUser.properties bereits während der Installation erstellt wurde und völlig sinnfrei im Programmordner von SciTE gespeichert ist. Dort habe ich natürlich keine Schreibrechte. Ich kann somit auch nicht auf eine andere Startup.lua außerhalb des Programmordners verweisen. Das macht kein Spaß. Ebenso funktioniert zum Bsp. Autovervollständigung nicht. Also alles, was ich sonst über eigene Einstellungen in den Properties regele fällt flach. Da kann ich dann meine Programme gleich von Hand auf Papier schreiben - kaum ein Komfortunterschied. :rofl:

    Hat jemand einen hilfreichen Gedanken?

  • [Erledigt] SciTE versus VSCode <==> potenzielle Veränderungen

    • BugFix
    • 6. Februar 2025 um 13:48
    Zitat von mumpel

    Z.B. Syntax hervorheben. Das kann Notepad++ bei au3-Dateien sogar

    Die Syntaxhervorhebung ist gerade das Hauptproblem bei NPP. Weil das nicht vernünftig angepasst werden kann, hatte ich damals das Projekt (Notepad++ und AutoIt) nicht weiter verfolgt.

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™