DOSBox Fehler

  • Hallo zusammen,

    ich habe folgendes Problem, ich muss ein ziemlich altes programm unter DOS in Windows 7 zum laufen bekommen.
    Für dieses Programm gibt es keine Updates und ist auch nicht mehr geplant das da irgendwas passieren soll.
    Folgendes habe ich dann gemacht:

    • DOSBox installiert unter Windows 7
    • Programm auf root kopiert
    • per hand das ganze gestartet/geschrieben und siehe da es funktioniert und kann genutzt werden.

    jetzt will ich nicht jedesmal den ordner in der dosbox von hand mounten und wollte das mit Autoit automatisieren. hier das script

    Spoiler anzeigen
    [autoit]

    run("C:\Program Files (x86)\DOSBox-0.74\dosbox.exe")
    winwait("DOSBox 0.74, Cpu speed: 3000 cycles, Frameskip 0, Program: DOSBOX")
    send("mount d: c:\klsoft",1)
    send("{ENTER}")
    send("d:")
    send("{ENTER}")
    send("klstart.exe")
    send("{ENTER}")
    winwaitclose("DOSBox 0.74, Cpu speed: 3000 cycles, Frameskip 0, Program: KLSTART")

    [/autoit]


    jetzt habe ich nur folgendes problem, das er mir in Zeile 3 den pfad zum lokalen Ordner nicht richtig schreibt
    wenn ich selber in der dosbox von hand "AltGr+ß" drücke erkennt er mir das Backslash nur im script macht er mir ein ganz anderes zeichen.

    wo liegt der fehler?

    edit: hier noch bildlich der fehler [Blockierte Grafik: http://s3.directupload.net/images/110119/rey8g8mq.jpg

    2 Mal editiert, zuletzt von Psyche (20. Januar 2011 um 10:43)

  • Hallo Psyche,

    das liegt an unterschiedlichen Zeichensätzen von DOS und Windows. Sende einfach einmal alle CHR($i); $i>32 <255 Zeilenweise dann erkennst du das richtige,

    PS.: man kann Beiträge aucg editieren

    mfg autoBert

  • Leider kann ich dir nicht so ganz folgen, was du mit dem einfügen meinst.
    kannst du mir das an dem script verdeutlichen?

    Edit: Grund für das komische editieren der ersten nachricht, war mein inetexplorer ... ich weiss warum ich sonst immer nur firefox nutze

  • Hallo psyche,

    das zu sendende Zeichen kansst d hiermit ermitteln:

    [autoit]

    run("C:\Program Files (x86)\DOSBox-0.74\dosbox.exe")
    winwait("DOSBox 0.74, Cpu speed: 3000 cycles, Frameskip 0, Program: DOSBOX")
    For $i = 33 to 255
    Send($i & @TAB & Chr($i))
    send("{ENTER}")
    Next

    [/autoit]

    mfg autoBert

  • Versuchs so mal, der Backslash entspricht Chr 92 in Ascii

    Spoiler anzeigen
    [autoit]


    $Asc = Chr(92)
    run("C:\Program Files (x86)\DOSBox-0.74\dosbox.exe")
    winwait("DOSBox 0.74, Cpu speed: 3000 cycles, Frameskip 0, Program: DOSBOX")
    send("mount d: c: & $Asc & klsoft",1)
    send("{ENTER}")
    send("d:")
    send("{ENTER}")
    send("klstart.exe")
    send("{ENTER}")
    winwaitclose("DOSBox 0.74, Cpu speed: 3000 cycles, Frameskip 0, Program: KLSTART")

    [/autoit]
  • so mein erstes problem ist gelöst.
    hier der code mit dem es nun tut, habe in der hilfe den befehl gefunden und mit diesem tut es auch.

    Spoiler anzeigen
    [autoit]


    run("C:\Program Files (x86)\DOSBox-0.74\dosbox.exe")
    winwait("DOSBox 0.74, Cpu ")
    send("mount d: ")
    Send("{ASC 067}{ASC 058}{ASC 092}")
    send("klsoft",1)
    send("{ENTER}")
    send("d:")
    send("{ENTER}")
    send("klstart.exe")
    send("{ENTER}")

    [/autoit]


    jetzt muss ich nur noch daran arbeiten, wenn er mit dem program fertig ist, das die DOSBox auch wieder automatisch zu geht.