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

Beiträge von Micha_he

  • Windows 8.1 exe Fehler

    • Micha_he
    • 2. April 2015 um 08:18

    Nur so zur Info:

    Ich kompiliere meine Tools unter Win7 x64, meist als x86-Anwendung.
    Keine Probleme mit den kompilierten Anwendung auf dem Win 8.1 x64 Notebook meiner Frau.
    Ohne '#RequireAdmin und ausgeführt als normaler Benutzer. Keine Auffälligkeiten...

  • Pc Modell auslesen und mit IF then verknpfen

    • Micha_he
    • 1. April 2015 um 13:31

    Du hast so viele Vergleiche in deinem Beispiel, das ich nicht gesehen habe, das Du 2x verschieden vergleichst (Zeile 5 & 7)

    Ändere am besten Zeile 2 in:

    [autoit]

    $Modell = StringStripWS(ObjGet("winmgmts:\\localhost\root\CIMV2").ExecQuery("SELECT Model FROM Win32_ComputerSystem", "WQL", 0).ItemIndex(0).Model, 3)

    [/autoit]

    und vergiss meinen Post #12...
    (Wobei dann eigentlich die Zeilen 3-6 unnötig sind ;-))

    Edit: Eklärung warum $Modell hinter Zeile 5 immer noch Leerzeichen enthält - StringCompare() und auch das von mir hinzugefügte StringStripWS() verändern die Variable $Modell die Du als Parameter mitgibst, NICHT !
    StringCompare() macht nur einen Vergleich und gibt einen Integerwert zurück und bei StringStripWS() müsstest Du es mit $Modell = StringStripWS($Modell, 3) der Ausgangsvariablen wieder zuweisen, damit Du es später weiterverarbeiten kannst.

  • Pc Modell auslesen und mit IF then verknpfen

    • Micha_he
    • 1. April 2015 um 12:30

    Zeile 5 ändern in:

    [autoit]

    $result = StringCompare(StringStripWS($Modell, 3), $Modell_1)

    [/autoit]
  • Pc Modell auslesen und mit IF then verknpfen

    • Micha_he
    • 27. März 2015 um 14:14

    Oder

    [autoit]

    StringStripWS()

    [/autoit]
  • Pc Modell auslesen und mit IF then verknpfen

    • Micha_he
    • 27. März 2015 um 11:32

    Teste mal vor der IF-Abfrage mit 'MsgBox(0,"",StringLen($Modell))' ob die Länge passt.
    Manchmal haben die ermittelten Zeichenfolgen Leerzeichen am Anfang/Ende oder in der Mitte 2 Leerzeichen, statt einem. Wäre möglicherweise ein Grund...

  • Registry Schlüssel richtig anlegen

    • Micha_he
    • 27. März 2015 um 09:38

    Wichtig ist u.a. folgendes:

    Kompilierst Du ein AutoIt-Tool (oder auch Installer) als 32bit landen die Einträge bei Verwendung von HKLM\Software\ (oder HKEY_LOCAl_MACHINE\Software\) abhängig vom Typ des Betriebssystem in folgendem Ordner:
    - 32bit: HKEY_LOCAL_MACHINE\Software\
    - 64bit: HKEY_LOCAL_MACHINE\Software\Wow6432Node\

    Bei 64bit kompilierten Tools hat sich das ja erledigt, da sie nur auf 64bit laufen.

    Bei der Kontrolle muss man dies auch beachten, ober z.B. der Zugriff von einem 32bit oder einem 64bit Tool passiert! Ich hab mich schon dumm und dusselig gesucht... Starte mal den RegEdit aus einem anderen 32bit Tool (z.B. TotalCommander) und vergleiche den Pfad HKEY_LOCAL_MACHINE\Software\. Hier im speziellen den dann fehlenden Unterordner Wow6432Node !

  • Registry Schlüssel richtig anlegen

    • Micha_he
    • 26. März 2015 um 16:04

    Dazu müsstest Du mal sagen, um was es eigentlich geht. Die komplette Registry aufzuschlüsseln, ist etwas schwierig.

    Fangen wir mal im ROOT an:
    HKEY_CLASSES_ROOT - Alias für HKEY_LOCAL_MACHINE\SOFTWARE\Classes
    HKEY_CURRENT_USER - Alias für den angemeldeten Benutzer (verwaist auf den eigenen Unterschlüssel in HKEY_USERS\ mit der eigenen SID)
    HKEY_LOCAL_MACHINE - Einträge die das System (Software, Betriebssystem, Sicherheit, Dienste) betreffen.
    HKEY_USERS - Einträge für die Benutzer (Default, Admin, normale Benutzer)
    HKEY_CURRENT_CONFIG - Alias für HKEY_LOCAL_MACHINE\SYSTEM\Hardware Profiles\Current (dies ist wiederrum ein Alias auf einen der Schlüssel Alias für HKEY_LOCAL_MACHINE\SYSTEM\Hardware Profiles\000x.

    Lassen wir also die Alias'e weg, bleiben nur 2 Einträge: HKEY_LOCAL_MACHINE oder HKEY_USERS.

    Unter HKEY_LOCAL_MACHINE muss man also nun unterscheiden, ob Hardware, Anmeldung (SAM), Sicherheit, Software (hier wiederum 64bit, 32bit oder 32bit im 64bit System [zu finden im Unterschlüssel ...\Software\Wow6432Node]) oder das Windows-System.
    Unter dem eigenen Schlüssel in HKEY_USERS (oder einfacher den Alias HKEY_CURRENT_USER verwenden) finden sich alle Benutzer-Konfigurationen für Programme, System, u.a..


    Edit: Für eigene Programm-Informationen bieten sich also 3 mögliche Ablageorte an:

    HKEY_LOCAL_MACHINE\Software\{Name Hersteller}\{Name Programm}
    HKEY_LOCAL_MACHINE\Software\Wow6432Node\{Name Hersteller}\{Name Programm} (wenn 32bit Tool in einem 64bit BS)
    Diese beiden Orte wird vom Admin bei der Installation genutzt und enthält z.B. die Grundeinstellungen, wenn der Benutzer das Tool das erste mal ausführt. Änderungen sind für Benutzer eigentlich nicht (jedenfalls ohne Anpassungen des Admins) möglich.

    HKEY_CURRENT_USER\Software\{Name Hersteller}\{Name Programm} (wobei hier eigentlich nicht nach 32/64bit unterschieden wird, obwohl MS einen speziellen Unterschlüssel angelegt und mit einigen Daten gefüllt hat)
    Dieser Ort bieten sich für die Einstellungen an, die ein Benutzer schreiben können sollte und auch nur für diesen gelten.

    So jetzt erstmal Du, wenn Dir die Infos nicht schon reichen....

  • _WallpaperGDI UDF

    • Micha_he
    • 23. März 2015 um 22:21

    @extended ist 0, habe ich schon getestet...

    Aber mach Dir keinen Kopf, ist nicht wichtig (wenn es nur bei mir nicht klappt).

  • _WallpaperGDI UDF

    • Micha_he
    • 23. März 2015 um 17:29

    Die Funktion _GDIPlus_ImageSaveToFile() deiner _WallpaperGDI.au3 legt zwar die Bilder im Temp-Ordner an, wird aber mit einem Errorcode 1 beendet, daher zeigt die folgende If-Bedingung das Bild nicht an.

    Ich konnte aber noch nicht in Erfahrung bringen, warum die Funktion fehlschlägt !

  • Programm teils als Admin

    • Micha_he
    • 23. März 2015 um 11:46

    Eine Idee wäre:

    - Programm zweimal erstellen, das zweite mit #RequireAdmin
    - Im Programm ermitteln ob Settings.ini vorhanden, wenn nicht 2tes Programm starten und erstes beenden

    Zweite Idee:
    Standard-Settings im Programmcode und Settings.ini (mit den Anpassungen des Benutzers) im Benutzerprofil-Ordner (@AppDataDir) anlegen

  • _WallpaperGDI UDF

    • Micha_he
    • 20. März 2015 um 22:17
    Zitat von chip

    Welches Betriebssystem?

    Win7 HomePremium x64 ohne Admin-Rechte. Aber ich schaue nachher nochmal, ob ein Icon die Zeit verdeckt haben könnte.

    Edit: Nix zu finden von der Uhrzeit. Haut irgendwie nicht hin bei mir...

  • _WallpaperGDI UDF

    • Micha_he
    • 20. März 2015 um 17:13

    Dachte,.... schau ich mir mal an. Und...
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Edit: Fehler kommt, wenn man kein Hintergrundbild gewählt hat. Jetzt habe ich mal einen der Windows-Standard-Hintergründe gewählt, das Programm zeigt keinen Fehler, aber auch sonst nichts !

  • hoher CPU Verbrauch

    • Micha_he
    • 13. März 2015 um 08:55

    Was hab ihr denn für Firmenrechner ? Wenn ich das mache ist ein Kern ausgelastet. AutoIt-Prozess beenden und gut.
    Aber was hat mein Windows-Profil damit zu tun !? Wenn das jedesmal nen 'Knacks' bekommen würde, hätte ich schon seit Jahren Schwierigkeiten...

    Aber nun nicht zu weit vom Thema abschweifen....

  • GUICtrlCreateLabel verschluckt das &-Zeichen

    • Micha_he
    • 11. März 2015 um 11:33

    Du musst mit StringReplace() aus '&' die Zeichenfolge '&&' machen..., soweit ich aus dem Kopf jetzt weiß.

  • MusikPlayer mit Equalizer,Playlist, etc.

    • Micha_he
    • 7. März 2015 um 09:44

    Ich habe den Player testweise auf dem dafür vorbereiteten älteren Musik-Notebook genutzt. Das hat natürlich keine 1920er Größe...

    Eine Lösung wäre vielleicht, das man ermittelt wie groß der Text ist (da gab es mal eine Funktion für MsgBox glaube ich) und bei Bedarf anfängt den Text zu scrollen.
    Hier die damals von mir archivierte Version 'TextMeter':

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>
    Opt("GUIOnEventMode", 1)
    Opt("MustDeclareVars", 1)
    Global $btChoose, $btMeasure, $cbBold, $cbItalic, $cbStrike, $cbUnderlined, $eText, $Group1, $gui, $inFont, $inHeight, $inSize
    Global $Label1, $Label2, $Label3, $Label4, $Label5, $Label6, $Label7, $Label8, $inWidth, $1stChoose = 1
    Global $bkCol = 0x1E90FF, $LemonChiffon = 0xFFFACD, $Salmon = 0xFA8072
    Global $aFont[8] = [8,0,'Courier New',10,400,0,0,0]

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

    $gui = GUICreate("TextMeter", 452, 367)
    GUISetOnEvent($GUI_EVENT_CLOSE, "guiClose")
    GUISetBkColor($bkCol)
    $Group1 = GUICtrlCreateGroup(" Font ", 15, 16, 420, 121)
    $inSize = GUICtrlCreateInput("", 331, 56, 35, 21, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $LemonChiffon)
    $inFont = GUICtrlCreateInput("", 65, 56, 204, 21, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $LemonChiffon)
    $Label1 = GUICtrlCreateLabel("Name", 30, 59, 32, 17)
    $btChoose = GUICtrlCreateButton("...", 388, 57, 20, 20, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "btChooseClick")
    GUICtrlSetBkColor(-1, $Salmon)
    $Label2 = GUICtrlCreateLabel("PointSize", 280, 59, 48, 17)
    $Label4 = GUICtrlCreateLabel("FontAttribute", 30, 98, 64, 17)
    $cbItalic = GUICtrlCreateCheckbox("", 195, 96, 17, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Italic", 215, 98, 40)
    $cbUnderlined = GUICtrlCreateCheckbox("", 265, 96, 17, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Underlined", 285, 98, 60, 17)
    $cbStrike = GUICtrlCreateCheckbox("", 360, 96, 17, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Strike", 380, 98, 40, 17)
    $Label5 = GUICtrlCreateLabel("Auswahl", 379, 33, 44, 17)
    $cbBold = GUICtrlCreateCheckbox("", 120, 96, 17, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel("Bold", 140, 98, 40, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $eText = GUICtrlCreateEdit("", 15, 171, 420, 105)
    GUICtrlSetBkColor(-1, $LemonChiffon)
    $btMeasure = GUICtrlCreateButton("Ausmessen", 335, 288, 100, 20, $WS_GROUP)
    GUICtrlSetOnEvent(-1, "btMeasureClick")
    GUICtrlSetBkColor(-1, $Salmon)
    $Label3 = GUICtrlCreateLabel("Dein Text", 15, 152, 50, 17)
    $Label6 = GUICtrlCreateLabel("Benötigter Platz", 40, 322, 78, 17)
    $inWidth = GUICtrlCreateInput("", 140, 320, 60, 21, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $LemonChiffon)
    $Label7 = GUICtrlCreateLabel("X", 220, 324, 11, 17)
    $inHeight = GUICtrlCreateInput("", 250, 320, 60, 21, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $LemonChiffon)
    $Label8 = GUICtrlCreateLabel("pt", 330, 323, 26, 17)
    GUISetState(@SW_SHOW)

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

    setFont()

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

    While 1
    Sleep(100)
    WEnd

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

    Func btChooseClick()
    Local $aTmp
    If $1stChoose Then
    $aTmp = _ChooseFont()
    Else
    Local $weight = 400
    If BitAND($aFont[1], 1) Then $weight = 600
    $aTmp = _ChooseFont($aFont[2], $aFont[3], 0, $weight, BitAND($aFont[1], 2), BitAND($aFont[1], 4), BitAND($aFont[1], 8))
    EndIf
    If $aTmp = -1 Then Return
    $aFont = $aTmp
    $1stChoose = 0
    setFont()
    EndFunc

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

    Func setFont()
    If BitAND($aFont[1], 2) Then
    GUICtrlSetState($cbItalic, $GUI_CHECKED)
    Else
    GUICtrlSetState($cbItalic, $GUI_UNCHECKED)
    EndIf
    If BitAND($aFont[1], 4) Then
    GUICtrlSetState($cbUnderlined, $GUI_CHECKED)
    Else
    GUICtrlSetState($cbUnderlined, $GUI_UNCHECKED)
    EndIf
    If BitAND($aFont[1], 8) Then
    GUICtrlSetState($cbStrike, $GUI_CHECKED)
    Else
    GUICtrlSetState($cbStrike, $GUI_UNCHECKED)
    EndIf
    If $aFont[4] > 400 Then
    GUICtrlSetState($cbBold, $GUI_CHECKED)
    $aFont[1] = BitOR($aFont[1], 1)
    Else
    GUICtrlSetState($cbBold, $GUI_UNCHECKED)
    EndIf
    GUICtrlSetData($inFont, $aFont[2])
    GUICtrlSetData($inSize, $aFont[3])
    EndFunc

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

    Func btMeasureClick()
    Local $nText = GUICtrlRead($eText)
    If $nText = '' Then Return
    _GDIPlus_Startup()
    Local $hFormat = _GDIPlus_StringFormatCreate(0)
    Local $hFamily = _GDIPlus_FontFamilyCreate($aFont[2])
    Local $hFont = _GDIPlus_FontCreate($hFamily, $aFont[3], $aFont[1], 3)
    Local $tLayout = _GDIPlus_RectFCreate(15, 171, 0, 0)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui)
    Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $nText, $hFont, $tLayout, $hFormat)
    Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width"))
    Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height"))
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ShutDown()
    GUICtrlSetData($inHeight, $iHeight)
    GUICtrlSetData($inWidth, $iWidth)
    EndFunc

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

    Func guiClose()
    Exit
    EndFunc

    [/autoit]

    Unglücklich ist u.a. auch folgende Situation: Abspielen tue ich mit einem externen Device auf die Lautsprecher, vorhören des zweiten Player mit dem Kopfhörer am lokalen Sounddevice. Nachdem Beenden muss ich alles neu konfigurieren, da bei Devices wieder leer (=Std) sind. Hatte ich aber schon bei meiner Aufzählung der abzuspeichernden Settings genannt.

    Auf das 'sanfte' Überblenden habe ich nun mal genauer drauf geachtet: Ist kaum (gar nicht) zu bemerken! Die meisten Lieder werden am Ende sowieso leiser, da fällt das wohl nicht ins Gewicht. Auf dem bisherigen Party-Player nutze ich hier die Möglichkeit ca. 20s (war einstellbar) werden der aktuelle und der neue parallel gespielt und langsam übergeblendet.
    Dagegen ist mir bei den Titel die 'am Ende nicht leiser werden' ! aufgefallen, das teilweise der Player zu schnell (ca. 1s) vor Ende des Titels abbricht/wechselt. Da fehlt dann sogar etwas vom Ende !

    Noch zwei Verbesserungsideen:
    - Ausblendbare Objekte wie z.B. den Equalizer. Schafft Platz für andere Objekte (zweite Playlist) oder längere Playlistanzeige. Der Equalizer wird doch meist sowieso nur einmal eingestellt und verbleibt dann so (was er ja z.Zt. noch nicht kann).
    - Multi-Select in der Playlist wenn mann z.B. mal 10-15 Titel in einem Rutsch löschen möchte (Löschfunktionen sollte sich aber in einem später möglichen 'sicheren Modus' abschalten lassen, damit der nächste meine Titelwahl nicht jedesmal wieder revidiert).

    Edit: Noch eine Idee zur Verbesserung - Ordner und Dateien in einem Fenster. Oscar hatte u.a. mal eine Funktion, die einen kompletten Explorer nachgebildet hat. Schau einmal ob Du sie ggf. verwenden kannst:

    Spoiler anzeigen
    [autoit]

    ; Autor: [email='oscar@autoit.de'][/email]
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>
    #include <StructureConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate('FileExplorer', 400, 400)
    $hTreeview = GUICtrlCreateTreeView(10, 10, 380, 360)
    $hWndTreeview = GUICtrlGetHandle($hTreeview)
    $hOk = GUICtrlCreateButton('Ok', 240, 375, 60, 22)
    $hCancel = GUICtrlCreateButton('Cancel', 320, 375, 60, 22)

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

    $hImage = _GUIImageList_Create(16, 16, 5, 1)
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 3) ; Verzeichnis-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 110) ; Verzeichnis-Icon mit Haken
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 1) ; Datei-Icon
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 5) ; Diskette
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 7) ; Wechseldatenträger
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 8) ; Festplatte
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 11) ; CDROM
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 12) ; Netzwerklaufwerk
    _GUIImageList_AddIcon($hImage, 'shell32.dll', 53) ; Unbekannt
    _GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)

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

    GUISetState()
    GUICtrlSetStyle($hTreeview, Default, $WS_EX_COMPOSITED + $WS_EX_CLIENTEDGE)

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

    $aDrives = DriveGetDrive('ALL')
    ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
    For $i = 1 To $aDrives[0]
    $iLWindex = 0
    Switch DriveGetType($aDrives[$i])
    Case 'Fixed'
    $iLWindex = 5
    Case 'CDROM'
    $iLWindex = 6
    Case 'RAMDisk'
    $iLWindex = 7
    Case 'Removable'
    $iLWindex = 4
    If StringLeft($aDrives[$i], 2) = 'a:' Or StringLeft($aDrives[$i], 2) = 'b:' Then $iLWindex = 3
    Case Else
    $iLWindex = 8
    EndSwitch
    $hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, StringUpper($aDrives[$i]), $iLWindex, $iLWindex)
    If DriveStatus($aDrives[$i]) <> 'READY' Then ContinueLoop
    _GUICtrlTreeView_BeginUpdate($hTreeview)
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hRoot, $aDrives[$i], 1)
    _GUICtrlTreeView_EndUpdate($hTreeview)
    Next
    ToolTip('')

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

    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $hCancel
    Exit
    Case $hOk
    $iSelect = _GUICtrlTreeView_GetSelection($hTreeview)
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $iSelect), '|', '\')
    MsgBox(0, 'Selected Path/File', $sTree)
    EndSwitch
    WEnd

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

    Func _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    GUIRegisterMsg($WM_NOTIFY, '')
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iCode = DllStructGetData($tNMHDR, 'Code')
    If $hWndFrom = $hWndTreeview And $iCode = $NM_CLICK Then
    ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
    _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
    ToolTip('')
    EndIf
    GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_NOTIFY

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

    Func _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
    Local $aTVPos, $aPos, $hItem, $hChild, $sTree
    $aTVPos = ControlGetPos($hGui, '', $hTreeview)
    $aPos = GUIGetCursorInfo($hGui)
    $hItem = _GUICtrlTreeView_HitTestItem($hTreeview, $aPos[0], $aPos[1] - $aTVPos[1])
    If _GUICtrlTreeView_GetExpanded($hTreeview, $hItem) Then Return
    $hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hItem)
    If $hChild <> 0 Then
    _GUICtrlTreeView_BeginUpdate($hTreeview)
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
    _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
    Do
    $hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
    If $hChild <> 0 Then
    $sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
    _GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
    $iTimer = TimerInit()
    _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
    EndIf
    Until $hChild = 0
    _GUICtrlTreeView_EndUpdate($hTreeview)
    EndIf
    EndFunc ;==>_GUICtrlTreeView_FileExplorer

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

    Func _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hItem, $sPath, $iRec)
    Local $aDirList, $aFileList, $tmp
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    $iRec -= 1
    $aDirList = _MyFileListToArray($sPath, 2)
    If IsArray($aDirList) Then
    For $sDir In $aDirList
    $tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $sDir, 0, 1)
    If $iRec > 0 Then _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $tmp, $sPath & $sDir, $iRec)
    Next
    EndIf
    $aFileList = _MyFileListToArray($sPath, 1)
    If IsArray($aFileList) Then
    For $sFile In $aFileList
    $tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $sFile, 2, 2)
    Next
    EndIf
    EndFunc ;==>_GUICtrlTreeView_FileExplorerRecursive

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

    Func _MyFileListToArray($sPath, $iFlag)
    Local $sFileList = '', $hSearch, $sFile
    $hSearch = FileFindFirstFile($sPath & '*')
    If @error Then Return
    While True
    $sFile = FileFindNextFile($hSearch)
    If @error Then ExitLoop
    If ($iFlag + @extended = 2) Then ContinueLoop
    $sFileList &= $sFile & '|'
    WEnd
    FileClose($hSearch)
    If $sFileList = '' Then Return
    Return StringSplit(StringTrimRight($sFileList, 1), '|', 2)
    EndFunc ;==>__FileListToArray

    [/autoit]

    Ein Problem was mir noch auffiel:
    Der Player greift beim Start immer auf die CD im Laufwerk zurück (welches erst hochfahren muss) und das obwohl ich sogar einen 'festen' Startordner angegeben habe. Dies verzögert jedesmal den Start...

  • MusikPlayer mit Equalizer,Playlist, etc.

    • Micha_he
    • 6. März 2015 um 19:37

    Kanashius: Schon gar nicht schlecht der Player. Hut ab dafür, auch an ProgrammingDonkey.

    Ein kleinen Schönheitsfehler habe ich beim Testen gesehen: Wenn der Titel für die Anzeige im Player zu lang wird, zeigt er den Rest in einer zweiten Zeile an. Von dieser ist aber nur die obere Hälfte sichbar.

    Was mir jetzt hauptsächlich noch fehlt (ich suche einen Player für die Party, zur Zeit DSD-Jukebox wenn Autobetrieb und Winamp wenn ich selber reagieren und abspielen will) sind folgende Funktionen:
    - zweite Playlist
    - Auto-Crossfader (je Einstellung wird der nächste Titel immer aus einer [zweite dient z.B. für Jingles] oder abwechseln aus den Playlisten geholt und x-Sekunden sanft aus-/eingeblendet). Ich wollte mir immer mal den alten AutoIt-Player 'CrapDJ' an Drag'nDrop anpassen. Bei diesem kann Du dir auch das Crossfaden ansehen!

    und

    - Abspeichern von Einstellungen beim Beenden. Z.B. Position, Musikarchiv-Ordner für den TreeView (wenn der Ordner noch vorhanden ist), Lautstärke, Equalizer-Settings und Audio-Output-Devices.

    Das wären so meine Ideen / Anregungen...

  • Macros wie @OSVersion und @OSServicePack von einem Remote-Client abfragen

    • Micha_he
    • 4. März 2015 um 12:38

    (Lokales) Autoit-Script remote per PSExec ausführen. Wenn notwendig kann man sich die Daten dann per TCPSend zusenden lassen.
    Wenn du jetzt noch fragst, was mache ich wenn ich ohne Adminrechte PSExec nicht remote ausführen (installiert glaube ich einen notwendigen Service) darf, dann weiß ich auch nicht mehr weiter.

    Dann höchstens noch als Startscript (per Gruppenrichtlinie) und Sammeln der Daten per TCP oder zentralem Logfile...

  • Macros wie @OSVersion und @OSServicePack von einem Remote-Client abfragen

    • Micha_he
    • 4. März 2015 um 11:24

    Mein Tip: WMI.

    Hier ein Beispiel im englischen Forum: http://www.autoitscript.com/forum/topic/27…em/#entry196018

  • Lokale User auslesen und in Variablen speichern

    • Micha_he
    • 3. März 2015 um 12:09

    Dein(e) Benutzername(n) sind doch innerhalb der For-Schleife (weil z.B. an einem Server mehr als ein User möglich wäre) schon in der Variablen '$aUSer.Name'.

    Was willst Du da noch ? Oder was habe ich falsch verstanden ?

  • Ältere Ordner löschen

    • Micha_he
    • 25. Februar 2015 um 15:13

    Jetzt verstehe ich, Du meinst den rein technischen Ablauf des Löschvorgangs auf Betriebssystem-Ebene. Da magst Du Recht haben. Nur glaube ich nicht, das PopupBlocker sich darin vertiefen will...

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™