Serus
Zeile 21 muss ich ausklammern da es sonst zu einen Fehler kommt.
Aber wenn so ist läuft es gut, stimmt jetzt
[Blockierte Grafik: http://img183.imageshack.us/img183/25/hddbw1.jpg]
Gute Arbeit
Serus
Zeile 21 muss ich ausklammern da es sonst zu einen Fehler kommt.
Aber wenn so ist läuft es gut, stimmt jetzt
[Blockierte Grafik: http://img183.imageshack.us/img183/25/hddbw1.jpg]
Gute Arbeit
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:
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
Ahh! Stimmt! Diese verfluchten Leerzeichen!
Ich hab's oben geändert.
Ich hätte hier zwei Vorschläge als Ico (Eines der ersten beiden):
[Blockierte Grafik: http://www.freeiconsweb.com/Freeicons_big/Free_icons.jpg]
http://www.freedownloadscenter.com/Shell_and_Desk…Screenshot.html
Hi,
könntest noch einbauen, dass es Wechsellaufwerke wie z.B. USB-Sticks automatisch erkennt. (OnTheFly)
$strComputer = "."
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
$colEvents = $objWMIService.ExecNotificationQuery _
("Select * From __InstanceOperationEvent Within 5 Where " _
& "TargetInstance isa 'Win32_LogicalDisk'")
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
und die _GetDrives() Funktion kann man glaube ich ziemlich kürzen.
So long,
Mega
P.S. Ansonsten schon mal
Wie soll man die kürzen?
Hi Oscar, Xeno und Progandy
wie währe es etwas moderner (siehe Anhang), wenn schon auf motzen ?
Man liest sich...
Euer Ritzelrocker04
Hi,
hmmh evtl so :
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
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
oder
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
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
So long,
Mega
Hi Oscar, Xeno und Progandy
Alles zusammen, dann nicht mehr als SpaceBar sondern als SideBar zum seitlichen heraus fahren !
Der User kann dann seine Laufwerke von den eingebauten Cardreadern sofort erkennen !
Man liest sich...
Euer Ritzelrocker04
@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.
HI,
füg doch mal
If $aNDrive[$i] = 'a:' Then ContinueLoop
ein.
Ich habe kein Diskettenlaufwerk mehr.
So long,
Mega
@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.
Hi,
laß den Code mal allein laufen und steck einen USB Stick an und danach wieder ab. Dann solltest du es etwas in der Scite Console lesen können.
So long,
Mega
@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.
Ersetze Zeile 185 durch diese Zeile:
If ($aNDrive[$i] = 'a:') Or ($aNDrive[$i] = 'b:') Then ContinueLoop
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.
Hallo Oscar,
bei Ihm muss AutoIT jetzt wohl Alles machen, selbst die CD-Schubladen öffnen / schließen (Scherz) ?
Speicherkarten werden automatisch erkannt, man muss das richtige LW nicht mehr suchen. 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.
PS: langsam kommt man mit den Versionen durcheinander, Vorschlag (SpaceBar2008-01-09.zip)
Weiterhin viel Erfolg !
Man liest sich...
Euer Ritzelrocker04
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