Pagina 1 di 1
aiuto da esperto Visual Basic per interagire con MAME.exe
Inviato: 09/07/2012, 13:31
da pucci
sto provando a recuperare da Visual Basic .Net il listxml del MAME
uso questo codice:
Dim p As New ProcessStartInfo
p.FileName = "F:\MAME.exe"
p.Arguments = " -listxml >listxml.xml"
p.WorkingDirectory = "F:\"
p.WindowStyle = ProcessWindowStyle.Normal
Dim proc As New Process
proc = Process.Start(p)
MessageBox.Show(proc.ExitCode.ToString)
il programma lancia l'eseguibile del MAME (è visibile per qualche millisecondo la finestra di comando) e poi esce con exit code = 5 (MAMERR_NO_SUCH_GAME), come se pensasse che io volevo lanciare un gioco di nome " -listxml >listxml.xml"
in effetti se provo a modificare p.Arguments = "1942" mi lancia regolarmente il gioco e ottengo exit code = 0 (MAMERR_NONE)
dove sbaglio? io non voglio lanciare un gioco, ma obbligare il MAME a creare un file nella sua directory
p.s.: qui trovate gli exit code del MAME:
http://mamedev.org/source/src/emu/mame.h.html
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 09/07/2012, 15:36
da antoniomauro
Non so perchè non legga il parametro -listxml con la redirezione dell'output ma puoi fare cosi:
Codice: Seleziona tutto
Imports System.IO
Dim p As Process = New Process
p.StartInfo.FileName = "F:\MAME.exe"
p.StartInfo.WorkingDirectory = "F:\"
p.StartInfo.Arguments = "-listxml"
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = true
p.Start
Dim output As String = p.StandardOutput.ReadToEnd
Dim outputE As String = p.StandardError.ReadToEnd
p.WaitForExit
if p.ExitCode.ToString <> "0" then
MessageBox.Show(outputE & vbnewline & "exit code " & p.ExitCode.ToString)
Else
Dim sw As new StreamWriter("F:\listxml.xml")
sw.Write(output)
sw.Close()
MessageBox.Show("Fatto!")
end if
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 09/07/2012, 16:17
da IUR Dhurin
pucci ha scritto:
p.Arguments = " -listxml >listxml.xml"
Così ad occhio mi verrebbe da chiederti:
hai provato togliendo lo spazio prima di
-listxml?

Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 09/07/2012, 18:23
da pucci
IUR DHurin: ci avevo già provato senza risultato
antoniomauro: si vede che sai programmare! problema risolto! però mi piacere capire alcune cose (altrimenti non imparerò mai)
- tu hai usato un oggetto Process mentre io avevo usato un ProcessStartInfo: differenze?
- a cosa serve questo "p.StartInfo.UseShellExecute = False"?
- questa stringa "Dim output As String = p.StandardOutput.ReadToEnd" penso occupi un pò di memoria... non c'è modo di sbattere direttamente standard output in un XmlReader? (che è poi quello che uso io nel resto del programma)
p.s.: conosci bene il Visual Basic .NET o come tutti i programmatori windows "seri" programmi in C++ o C#? potresti darmi una mano nel progetto MAME Washer...
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 10/07/2012, 10:49
da antoniomauro
In passato mi dilettavo di più con c/c++ (bei tempi), poi per esigenze di lavoro siamo passati da vb,vb.net,c# a progetti opensource principalmente web-oriented (php,pyton,ecc..)
Se ti serve una mano sono a disposizione!
Per le spiegazioni:
- Anche tu utilizzavi l'oggetto "process" ma avevi semplicemente dichiarato le sue proprietà di avvio (ProcessStartInfo) in maniera esterna.
Non cambia nulla....
- "p.StartInfo.UseShellExecute = False" evita l'uso della shell di sistema e consente con "p.StartInfo.RedirectStandardOutput = True" a recuperare l'output come uno StreamReader
- In effetti "p.StandardOutput.ReadToEnd" è abbastanza oneroso in termini di memoria. Potresti realizzare una lettura asincrona dell'output per migliorare la cosa (
http://msdn.microsoft.com/it-it/library ... utreadline)
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 10/07/2012, 12:35
da pucci
bene, vedrò di sfruttare le tue competenze!
ancora il software è in fase molto embrionale, ma appena avrò un pò di tempo lo faccio avanzare un pò e ti giro i sorgenti
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 10/07/2012, 15:08
da antoniomauro
Adesso mi hai incuriosito!
Grosso modo di cosa si tratta?
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 10/07/2012, 17:54
da pucci
di un software che "dovrebbe" (tra virgolette perchè le mie capacità programmatorie sono sotto zero...) fare questa cosa qua:
viewtopic.php?f=56&t=8749&start=60#p97750
Re: aiuto da esperto Visual Basic per interagire con MAME.ex
Inviato: 11/07/2012, 9:39
da antoniomauro
ahh ora ricordo!