Status abfrage CD Laufwerk (offen oder geschlossen)

  • Hallo Zusammen,

    leider komme ich bei einem Problem nicht weiter. Hierzu habe ich schon in einem anderem Beitrag versucht Hilfe zu finden. Vielleicht klappt es über diesen Weg. Ist es möglich den Staus des CD Laufwerks auzulesen also ob es offen oder geschlossen ist? Ich kenne das Kommando CDTray aber damit kann man es maximal öffnen oder shcließen mehr nicht?

    Ich habe im engleischen Forum ziemlich komplexe SCSI Kommandos gesehen aber da blicke ich leider nicht ganz durch

    Hat jemand eine Idee?

    Danke und Grüße

    Alex

  • Hallo,

    danke für die Antwort. Naja es würde mir insofern weiterhelfen da ich quasi schon beim öffnen des Laufwerks ein kleines Skript ausführen könnte welches schonmal ein Programm startet. Wenn man dann die CD einlegt und schließt dann ist das Programm halt schon offen und kann mit dem AUtoplay starten. Ich weiß hört sich irgendwie doof an aber eine andere Möglichkeit sehe ich momentan nicht da sich das Programm nicht per shortcut für diese Funktion bedienen lässt.

    Ist es generell nicht möglich diesen TSatus abzufragen?

    Danke und Grüße

    Alex

  • Hallo,
    danke für den Link. Das hört sich schonmal gut an allerdings bringt das in meiner Konfiguration nichts weil dasProgramm leider nur dann reagiert wen eine Scheibe eingeschoben wird. Es gibt keine Shortcuts oder ähnliches deswegen bräuchte ich eben schon eine Art Vorbereitung übder den Laufwerksstatus.

    Nochmals also: Kenn jemand eine Möglichkeit den Status des CD / DVD Laufwerks (open/close) abzufragen.

    Vielen Dank und Grüße

    Alex

  • So evtl.

    ungetestet, aber sollte laufen:

    Spoiler anzeigen
    [autoit]


    $drives = DriveGetDrive('CDROM')
    For $i = 1 to $drives[0]
    If DriveStatus($drives[$i]) = 'READY' Then
    RUN($drives[$i] &"\start.exe") ; statt start.exe die Datei eintragen die er dann starten soll
    Else
    ContinueLoop
    EndIf
    EndIf
    Next

    [/autoit]

    Gruss,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hallo,

    vielen dank für das Skript aber damit frage ich ja nicht den Status (open/close) ab. Diese Abfrage habe ich aj bereits eingebaut. Und das funktioniert auch. Ich möchte lediglich den STATUS open oder eben close abfragen. Ich weiß dass man das CD Laufwerk mit CDtray(Laufwerk, "open) aufmacht aber ich möchte ja eben abfragen ob der Nutzer bereits das Laufwerk geöffnet hat?

    Ist das möglich

    Grüße

    Alex

  • Frag doch durch eine If/Then eine Datei con der Root auf der CD/DVD ab. Lesefehler? Dann kommt doch ein Error zurück, oder?
    Dann, wenn Error kommt, das verarbeiten, wenn kein Error kommt, das ist die Schublade zu.

    Theorie hoffe ich, habe gut rüber gebracht.

    Praxis? Das bekomme ich sicherlich nicht so schnell hin, wie die Profi-User Dir gleich sicherlich ein Bsp. posten. Wenn nicht, mache ich mich gerne ans Werk.

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Mmh, denke, dass es so einfach nicht ist. Wenn keine CD/DVD drin ist, dann kommt ein Lesefehler, obwohl die Schublade ja durchaus zu sein kann.

    Mir fallen jetzt 2 Möglickeiten ein.
    - Du kannst die Schublade einfach immer schliessen lassen. Danach weist du welchen Zustand sie hat. Wenn sie offen war, dann wird sie geschlossen, und wenn sie zu ist bleibt sie zu.
    . Die andere Möglichkeit wäre eien DLL. In deinem Fall winmm.dll. Ich habe schon ein VB script gesehen, dass dir den Zustand zurückgibt, einfach mal ein bisschen googlen. Dann musst du aber noch in AutoIt übersetzten, was jetzt auch nicht gerade einfach ist, aber dir wird bestimmt geholfen :). Nur ist die DLL so gut wie nicht Dokumentiert.

  • Hallo,

    vielen Dank für die Antworten. Genau dass mit diesert DLL hatte ich in einem englischen Forum auch schon gefunden allerdings habe ich da leider nicht ganz durchgeblickt und es nach etlichen Versuchen wieder sein lassen. Sehr schade dass das undokumentiert ist da tut man sich natürlich umso schwerer

    Gibt es eventuell ein kleines Freeware Programm oder ähnliches was mir da weiterhelfen könnte. Gefunden habe ich leider nichts.

    Vielen Dank nochmals und Grüße

    Alex

  • Hallo nochmals,

    also irgendwie begreife ich das nicht. Leider verstehe ich den Quellcode nicht daher habe ich testweise auf 2 Rechnern einfach mal das Skript ausgeführt.

    Bei meinem Notebook kam eine Fehlermeldung mit anschließendem Absturz. Bei meinem Desktop kam (Found 1 drive) und dann ist es auch schon vorbei ?????

    Entweder ich bin zu blöd...oder das Skript ist fehlerhaft

    Weiß jemand weiter?

    Vielen Dank nochmals

    Grüße

    Alex

    Edit: Habe das Problem in diesem Post gefunden: http://www.autoitscript.com/forum/index.php?showtopic=39368&hl=cdb

    Hier der richtige Code:

    int_ptr usage in DLLCall was deprecated.
    use int*
    no more crash...

    CODE: AutoIt
    $ret = DllCall( _
    "kernel32.dll", "int", _
    "DeviceIoControl", _
    "hwnd", $hVolume, _
    "int", $IOCTL_SCSI_PASS_THROUGH, _
    "ptr", DllStructGetPtr($sptwb), _
    "int", DllStructGetSize($spt), _
    "ptr", DllStructGetPtr($sptwb), _
    "int", DllStructGetSize($sptwb), _
    "int*", $returnvalue, _ ; was int_ptr
    "ptr", 0 _
    )

    2 Mal editiert, zuletzt von bentom (7. Oktober 2008 um 22:21)