• Offizieller Beitrag

    Nachdem ich das Programm meiner Nichte zum Testen gegeben habe, bekam ich einige Anregungen, was noch fehlt(e).

    Zum einen ist da, dass die Anzeige bei den CDROM-Laufwerken nicht so ganz passend ist, denn bei CDROMs ist ja immer 0% frei. -> Mit dieser Version behoben

    Dann ist auch der Füllbalken eigentlich 'falsch'. -> Ist jetzt so, dass ein blauer Balken angezeigt wird, wenn eine CD eingelegt ist und ein grauer Balken, wenn nicht

    Und dann gibt es noch das Problem mit den Wechseldatenträgern (USB-Stick, USB-Festplatten, Flash-Karten im Cardreader, usw.). -> Ein abziehen eines solchen wird jetzt erkannt und das LW aus der Liste entfernt
    Beim anschliessen eines Wechseldatenträgers muss man das Laufwerk manuell über 'Laufwerke neu einlesen' einbinden.

    Meine Nichte bemängelte auch, dass sich der Balken an der Seite ständig im Vordergrund befindet und somit einige Bedienelemente (teilweise) überdeckt. Das ist jetzt ebenfalls konfigurierbar. Machte aber einen Hotkey (ALT+s) nötig, um das Fenster schnell ein-/ausblenden zu können, auch wenn es sich nicht im Vordergrund befindet.

    Das Programm sieht jetzt bei mir so aus:

    kochflocke.jpg

    Script, Icon und Ini-Datei findet ihr im ZIP-Archiv im Anhang.

    Vielleicht findet sich ja jemand, der ein schöneres Icon gestaltet.

  • Die NeustartFunktion ging nicht immer. Wenn der SkriptPfad Leerzeichen enthilet und nicht Compiled war, gabs nen Fehler

    [autoit]

    Func _Neustart()
    IniWrite(@ScriptDir & '\SpaceBar.ini', 'Pos', 'bRefresh', True)
    If Not @Compiled Then
    Run('"' & @AutoItExe & '" "' & @ScriptFullPath &'"')
    Else
    Run(@AutoItExe)
    EndIf
    Exit
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Hi,

    könntest noch einbauen, dass es Wechsellaufwerke wie z.B. USB-Sticks automatisch erkennt. (OnTheFly)

    Spoiler anzeigen
    [autoit]

    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")

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

    $colEvents = $objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceOperationEvent Within 5 Where " _
    & "TargetInstance isa 'Win32_LogicalDisk'")

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

    While 1
    $objEvent = $colEvents.NextEvent
    If $objEvent.TargetInstance.DriveType = 2 Then
    Select
    Case $objEvent.Path_.Class()="__InstanceCreationEvent"
    Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been added." & @CR)
    Case $objEvent.Path_.Class()="__InstanceDeletionEvent"
    Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been removed."& @CR)
    EndSelect
    EndIf
    WEnd

    [/autoit]

    und die _GetDrives() Funktion kann man glaube ich ziemlich kürzen. :D

    So long,

    Mega

    P.S. Ansonsten schon mal :thumbup:

    • Offizieller Beitrag

    Hi,

    hmmh evtl so :

    Spoiler anzeigen
    [autoit]

    Func _GetDrives()
    If $bFIXED Then $aFDrive = _getDrivesHelper('FIXED')
    If $bNETWORK Then $aFDrive = _getDrivesHelper('NETWORK')
    If $bREMOVABLE Then $aFDrive = _getDrivesHelper('REMOVABLE')
    If $bCDROM Then $aFDrive = _getDrivesHelper('CDROM')
    If $bRAMDISK Then $aFDrive = _getDrivesHelper('RAMDISK')
    EndFunc ;==>_GetDrives

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

    Func _getDrivesHelper($type)
    Local $aNDrive = DriveGetDrive($type)
    If IsArray($aNDrive) Then
    For $i = 1 To $aNDrive[0]
    _ArrayAdd($aFDrive, $aNDrive[$i])
    $aFDrive[0] += 1
    Next
    EndIf
    Return $aFDrive
    EndFunc ;==>_getDrivesHelper

    [/autoit]

    oder

    Spoiler anzeigen
    [autoit]

    Func _GetDrives()
    If $bFIXED Then $aFDrive = _getDrivesHelper('FIXED')
    If $bNETWORK Then $aFDrive = _getDrivesHelper('NETWORK')
    If $bREMOVABLE Then $aFDrive = _getDrivesHelper('REMOVABLE')
    If $bCDROM Then $aFDrive = _getDrivesHelper('CDROM')
    If $bRAMDISK Then $aFDrive = _getDrivesHelper('RAMDISK')
    $aFDrive[0] = UBound($aFDrive)-1
    EndFunc ;==>_GetDrives

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

    Func _getDrivesHelper($type)
    Local $aNDrive = DriveGetDrive($type)
    If IsArray($aNDrive) Then
    For $i = 1 To $aNDrive[0]
    _ArrayAdd($aFDrive, $aNDrive[$i])
    Next
    EndIf
    Return $aFDrive
    EndFunc ;==>_getDrivesHelper

    [/autoit]

    So long,

    Mega

  • @Xeno.

    Störend bei den beiden Bsp. sind die LW-A Zugriffe. Erinnert mich an einen alten Wecker meiner Oma, wo dieser noch mit der rückseitigen Spannschraube am Leben gehalten wurde. Oben noch zwei "Glöcken" und der hozizontale Weckpendel. Ich glaub das Ding macht sogar noch Geräusche, wenn ich es mal wieder reanimieren würde.

    Kann man das irgendwie so machen, das beim LW-A der Zugriff nur dann erfolgt, wenn z. B. ein Datenträger eingeführt wurde und dann rechts ein Button getätigt wird.

    Für dei CD/DVD-LW noch ein Tip. Rechts ist noch Platz für jeweils 2 kleine Buttons namens (LW-öffnen / LW-schließen). Ja, hier sitzt gerade ein kreatives Köpfchen, das seit 2 Tagen fast nur am schlafen ist oder im Bett liegt und nachdenkt. TV und Laptop gibt es ja direkt am Bett.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    @xeno: Kürzung der _GetDrives()-Funktion umgesetzt, aber das mit den OnTheFly-einlesen der USB-Sticks ist mir zu hoch. Hab versucht das einzubauen, aber da ratterte das Diskettenlaufwerk, auch nachdem ich das Script beendet hatte. Erst ein Rechnerneustart brachte das wieder in den Normalzustand. Was genau bewirkt denn der Codeschnipsel?

    Alina: Toller Tip mit den Open/Close-Buttons. Habe ich jetzt eingebaut.

    Das Hauptfenster läuft jetzt im OnEventMode. Komme ich irgendwie besser mit klar.

    Screenshot:
    test.jpg

    Alles andere wieder im ZIP-Archiv (Anhang).

  • Das mit den Buttons hast Du super gemacht.

    Wir LW-A und LW-B jetzt nur einmal abgefragt ob vorhanden oder nicht? Oder sind die beiden LW noch nicht berücksichtigt wurden. Ja, ich habe noch ein LW-A udn LW-B, aber eher als "Diskettenkopiestation". ;)

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    @Xeno: Das Script funktioniert, aber es erzeugt ein Rattern des Diskettenlaufwerks und man kann das Script nicht mehr beenden. Erst ein abschiessen des AutoIt-Prozesses mit dem Taskmanager hilft hier weiter. Das Rattern des Diskettenlaufwerks bleibt aber trotzdem bis zum nächsten Windows-Neustart bestehen. Wenn man diese Mängel nicht beheben kann, dann ist es für mich wertlos, weil ich meinen Rechner nicht mühsam leise gemacht habe, um mich dann von einem ratternden Diskettenlaufwerk in den Wahnsinn treiben zu lassen. ;)

    Alina: Du besitzt tatsächlich noch zwei Diskettenlaufwerke? Na, egal! Jedenfalls ist das Programm nicht so sehr für Diskettenlaufwerke ausgerichtet. Ich habe das Laufwerk a: in dem Script ausgeklammert, aber genaugenommen müßte man auch Laufwerk b: ausklammern. :rolleyes:
    Ersetze Zeile 185 durch diese Zeile:

    [autoit]


    If ($aNDrive[$i] = 'a:') Or ($aNDrive[$i] = 'b:') Then ContinueLoop

    [/autoit]
  • OK, habe ich verstanden. Danke.

    Ja, zwei LW's für Disk ist doch praktisch, wenn man noch Disk hat die ab und an ein Kopie benötigen.

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Oscar,

    bei Ihm muss AutoIT jetzt wohl Alles machen, selbst die CD-Schubladen öffnen / schließen (Scherz) ? :D
    Speicherkarten werden automatisch erkannt, man muss das richtige LW nicht mehr suchen. 8) Disketten habe ich nicht. USB-Stick´s werden noch nicht erkannt. Die mitgelieferte ini-Datei muss übernommen werden, wenn nicht kommt es zu einer anderen Platzierung der GUI.
    :thumbup:
    PS: langsam kommt man mit den Versionen durcheinander, Vorschlag (SpaceBar2008-01-09.zip)

    Weiterhin viel Erfolg !

    Man liest sich...
    Euer Ritzelrocker04

  • Neue Version
    Changelog:

    Code
    - Refresh ohne Neustart, funktioniert auch mit allen Removable Disks
    - Explorer bei Klick auf Icon
    - Laufwerke a: und b: werden nicht mehr gescannt:)
    Code
    ============= SpaceBar =============
    ------------------------------------
    Version: 3.4.0.1
    Copyright: Ritzelrocker04, Xenobiologist, Oscar and Prog@ndy
    Language: German (Deutsch)
    Compiled by: Prog@ndy
    AutoIt Version: 3.2.8.1
    • Offizieller Beitrag

    Hi,

    hier ist mal wieder was zum abgucken:

    http://www.autoitscript.com/forum/index.php?showtopic=61395

    Edit: Habe das letzte Skript gerade mal getestet: Sind Fehler enthalten

    1. in _Update muss es
    If IsArray($temp) Then
    rein. (Ansonsten Zugriff eine Variable im ArrayKontext --> Fehler

    2. in _GetDrives muss ebenfalls
    If IsArray($aRemDrive) then $aRemDrive = $aRemDrive[0]
    rein. (Ansonsten Zugriff eine Variable im ArrayKontext --> Fehler

    3. Removable Drive entfernt, Anzeige wird nicht aktualisiert.

    So long,

    Mega