VB/AutoIt Merkwürdiges Problem

  • Moin,

    bin gerade am Coden von einem Scantool.
    Das Hauptprogramm ist in VB6 gecoded, da kann man Einstellungen vornehmen.
    Zum Beispiel: "Zweiseitig"
    Wenn jetzt also Zweiseitig angehakt ist, schreibt das VB6 Tool eine "1" in die "scansettings.txt" im Programmverzeichnis. Wenn nicht eine "0".
    Jetzt wird das AutoIt Script "scanscript.exe" per VB Shell-Befehl aufgerufen.
    Dieses liest dann, was in der "scansettings.txt" steht, also ob "1" oder "0".

    Was aber dabei SEHR Merkwürdig ist:
    Wenn ich das AutoIt Script mit Doppelklick starte, liest er die "scansettings.txt" ohne Probleme aus.
    Wenn aber das AutoIt Script per VB gestartet wird, kommt immer nur ein leerer String -> "" dabei raus.

    Hab schon vermutet, dass das VB Tool noch nicht fertig mit dem schreiben der TXT ist und deswegen vor dem Auslesen ein Sleep von 5 Sekunden im AutoIt Script eingebaut, aber das hilft nicht.

    Ich bin hier mehr oder weniger am verzweifeln, ich hoffe mal jemand weiß woran das liegen könnte.

    Hier der VB Code:

    Code
    Open App.Path & "\scansettings.txt" For Output As #fn
    If check_zweiseitig.Value = vbChecked Then
    Print #fn, "1"
    Else
    Print #fn, "0"
    End If
    Close #fn
    
    
    Shell (App.Path & "\scanscript.exe"), vbNormalNoFocus

    Hier das AutoIt Script:

    Code
    Sleep(5000)
    $zweiseitig = FileReadLine("scansettings.txt", 1)

    Einmal editiert, zuletzt von VERGiL (10. Oktober 2009 um 11:05)

  • Hi,

    probier mal den absoluten Pfad für Deine Textdatei, z.Bsp:

    $zweiseitig = FileReadLine(@Scriptdir & "\scansettings.txt", 1)

    ;-))
    Stefan

    P.S: Das VB sollte zu diesem Zeitpunkt schon fertig sein: Close #fn
    Also kannst Du das sleep weglassen.

  • Also:
    $zweiseitig = FileReadLine(@Scriptdir & "\scansettings.txt", 1)
    funktioniert nicht.

    Wenn ich den direkten Pfad angebe, funktionierts.
    Jetzt muss ich nurnoch wissen, wie ich das auch mit einem dynamischen Pfad hinbekomme.

  • Hi,

    1) Such mal in der Hilfe $cmdline. Somit kannst Du die Ini mit Pfad als Parameter an Dein Autoit Skript übergeben.
    2) Leg die Ini in das gleiche Verzeichnis wie dein Autoit Skript. Damit sollte Dein Pfad .\scansettings.txt lauten.

    ;-))
    Stefan

  • Also in vb wird es ja auch sowas wie @ScriptDIr geben oder? und dann kiannst du auch einfach versuchen den den ordner wo dein vb ist als Ausführordner anzugeben für die autoit exe

    mfg. Jam00

  • Scriptdir ist in VB "App.Path". Das AutoIt Script startet ja auch, jedoch ohne, dass es dann die Textdatei ausliest.

  • Ja, ist mir klar das das startet, aber es wird in einem andere Arbeitsverzeichniss geöffnet z.B. in einem Temp-Ordner
    darum muss du beim run im VB den parameter für Arbeitsverzeichniss mit App.Path ausfüllen, damit es auch in dem Ordner arbeitet

    mfg. Jam00