Gibt es eine möglichkeit, das wenn ich ein script über die Dosbox starte es mir einen Rückgabewert gibt? also das in der Dosbox etwas steht Datei nicht gefunden etc. ? Ich will meinem Prog einen Parameter übergeben wenn dieser nicht stimmt soll er etwas reinschreiben.
Returnwert an DosBox senden
-
- [ offen ]
-
Tam0r -
18. Mai 2007 um 19:54 -
Geschlossen -
Erledigt
-
-
ich wüsste nicht wie du das mit autoit realisieren willst, aber keine panik ich schau morgen mal nach ner lösung
snoozy
-
- Offizieller Beitrag
Hallo!
Tüllich is das mit autoit möglich Guck dir mal den Run befehl in der Hilfe an und da den Flag standard_i/o_flag.. Habe auch eine Funktion geschrieben die wartet bis das programm beendet ist und dann den Rückgabe wert ausliest, sie heißt _RunWait
Mfg Spider
-
- Offizieller Beitrag
Ich glaube Du hast das falsch verstanden, @Tam0r will das sein, mit AutoIt geschiebenes, Programm etwas in der DosBox ausgibt. So wie der Befehl printf oder cout in C/C++.
-
- Offizieller Beitrag
Hallo
wer lesen kann -.- hast recht bernd.. sry.
in einer dos Box schreiben ist momentan mit autoit leider nicht möglich. Nur halt in der Box von SciTe mit ConsoleWrite.
Mfg Spider
-
- Offizieller Beitrag
Hi!
Ich würde fast wetten, dass es mit der AU3Lib geht - habe ich allerdings nicht nachgeschaut.
Diese gibt es unter http://www.autoitscript.com .peethebee
-
- Offizieller Beitrag
Hi,
mit Controlsend oder Send geht es nicht?
So long,
Mega
-
Hallo,
da wir im Geschäft noch mit einer DOS-Auftragsbearbeitung arbeiten, und ich schon viele Schnittstellen erstellt habe, interessiert mich dieses Thema auch immer wieder.
Aber ich denke auch nicht dass es eine Möglichkeit gibt Daten zurück an das DOS-Programm zu schicken. In einer Lösung konnte ich das DOS-Programm dazu anhalten nach einer Datei 'Ausschau' zu halten, welche von AutoIT erstellt wurde. Das ist aber dann eine 'normale' Import-Funktion.
Wenn es nur darum geht eine Meldung auszugeben, so kann ja vielleicht einfach ein Fenster davor gesetzt werden. Ein Screenshot-Skript (siehe hier im Forum) bei der Markierung macht das ja ganz pfiffig.
Viele Grüße
Carsten -
- Offizieller Beitrag
Hi!
http://www.autoitscript.com/forum/index.php?showtopic=33677&hl=au3lib
Da ist die Lib. Mit den angeführten Pipes könnte es gehen, habe es aber nicht getestet.
peethebee
-
danke für die antworten, peet schau ich mir mal genauer an
-
Hallo,
ich habe mir das auch mal näher angeschaut. Dieses Script (siehe Link von peethebee, Beispiel 1 aus den Auto3Lib, Bereich 'Pipes') ist halt doch höhere AutoIt-Programmierkunst
Jedenfalls kapier ich nicht viel und funktionieren tut es auch nicht.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <A3LPipes.au3>
#include <A3LWinAPI.au3>Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Description ...: Shows how to use pipe functions to read the output from a console operation
; Author ........: Paul Campbell (PaulIA)
; Notes .........: This script MUST be run in SciTE in order to see the results
; ===============================================================================================================================; ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Main
; ===============================================================================================================================ExecuteCmd("cmd.exe /c dir c:\windows")
[/autoit] [autoit][/autoit] [autoit]
;ExecuteCmd("ping https://autoit.de/www.autoit.com"); ===============================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Execute a command and display the results
; ===============================================================================================================================
Func ExecuteCmd($sCmd)
Local $iBytes, $sData, $hReadPipe, $hWritePipe, $tBuffer, $tProcess, $tSecurity, $tStartup; Set up security attributes
[/autoit] [autoit][/autoit] [autoit]
$tSecurity = DllStructCreate($tagSECURITY_ATTRIBUTES)
DllStructSetData($tSecurity, "Length" , DllStructGetSize($tSecurity))
DllStructSetData($tSecurity, "InheritHandle", True); Create a pipe for the child process's STDOUT
[/autoit] [autoit][/autoit] [autoit]
_Pipe_CreatePipe($hReadPipe, $hWritePipe, $tSecurity); Create child process
[/autoit] [autoit][/autoit] [autoit]
$tProcess = DllStructCreate($tagPROCESS_INFORMATION)
$tStartup = DllStructCreate($tagSTARTUPINFO)
DllStructSetData($tStartup, "Size" , DllStructGetSize($tStartup))
DllStructSetData($tStartup, "Flags" , BitOR($STARTF_USESTDHANDLES, $STARTF_USESHOWWINDOW))
DllStructSetData($tStartup, "StdOutput", $hWritePipe)
DllStructSetData($tStartup, "StdError" , $hWritePipe)
_API_CreateProcess("", $sCmd, 0, 0, True, 0, 0, "", DllStructGetPtr($tStartup), DllStructGetPtr($tProcess))
_API_CloseHandle(DllStructGetData($tProcess, "hProcess"))
_API_CloseHandle(DllStructGetData($tProcess, "hThread" )); Close the write end of the pipe before reading from the read end of the pipe
[/autoit] [autoit][/autoit] [autoit]
_API_CloseHandle($hWritePipe); Read data from the child process
[/autoit]
$tBuffer = DllStructCreate("char Text[4096]")
while 1
_API_ReadFile($hReadPipe, DllStructGetPtr($tBuffer), 4096, $iBytes)
if $iBytes = 0 then ExitLoop
$sData = StringLeft(DllStructGetData($tBuffer, "Text"), $iBytes)
$sData = StringReplace($sData, @CR & @CR, @CR)
ConsoleWrite($sData)
wend
EndFuncIch bekomme folgende Fehlermeldung:
>Running:3.2.2.0:C:\Programme\AutoIt3\autoit3.exe "C:\Programme\AutoIt3\Auto3Lib\Pipes\Console.au3"
C:\Programme\AutoIt3\Include\A3LPipes.au3 (233) : ==> AutoIt has encountered a fatal crash as a result of:
Unable to execute DLLCall.:
$aResult = DllCall("Kernel32.dll", "int", "CreatePipe", "ptr", DllStructGetPtr($tPipes, "Read"), "ptr", DllStructGetPtr($tPipes, "Write"), "ptr", $pSecurity, "uint", $iSize)
+>AutoIT3.exe ended.rc:0Aber ich brauche hier auch keine Lösung, denn ich weiß momentan gar nicht wie ich das hier einsetzen könnte.... Ich wollte einfach nur meine kleine Erfahrung hiermit zum Besten geben.....