2012-03-28 11 views
0

Ich bin ein Anfänger und fragte mich, ob jemand helfen könnte.VB.NET 2010 Befehlszeilenprogramm muss Datei im selben Verzeichnis sein?

Ich stelle ein Frontend in Visual Basic (VS2010-Version) für ein CD-Aufnahme-Kommandozeilenprogramm namens cdrdao zusammen.

Hier ist der Link für eine Win32-Version. http://www.student.tugraz.at/thomas.plank/ Die dort veröffentlichte Version von cdrdao hängt von zwei DLL-Dateien ab. cygwin1.dll und cyggcc_s-sjlj-1.dll. Ich habe die drei Dateien in meinem Verzeichnis bin/debug.

Hier ist mein Code

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click 
    Dim myfile As String 
    myfile = OpenFileDialog1.ShowDialog() 
    myfile = OpenFileDialog1.FileName 
    lblFile.Text = myfile 
End Sub 

Private Sub btnBurn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBurn.Click 
    Dim strFile As String 
    Dim p As New Process 
    strFile = lblFile.Text 
    p.StartInfo.FileName = "cdrdao.exe" 
    p.StartInfo.Arguments = " simulate " + strFile 
    p.Start() 
    MessageBox.Show(p.StartInfo.Arguments.ToString(), "result") 

End Sub 

Als ich das laufen, es wird nicht die strFile erhalten. Das strFile ist das image.cue

Es zeigt, dass es in meiner Messagebox tut, aber es wird einfach nicht funktionieren.

Wenn meine strFile (Bilddatei) im selben Verzeichnis wie meine Exe ist und cdrdao in bin/debug und ich setze diese Argumente, und klicke auf btnBurn.

p.StartInfo.Arguments = " simulate " + "myimage.cue" 

Dann funktioniert es wie erwartet.

Hier ist ein Szenario, das funktioniert, wenn ich eine Eingabeaufforderung starte.

Ich habe einen Ordner auf meinem Desktop namens test, und es enthält CDRDAO und die DLLs. Ich habe einen Ordner auf G: Laufwerk namens Test, und es enthält die Bilddatei, die gebrannt werden soll.

Ich tippe dies in den cmd.

cd /d G:\test 
C:\Users\myname\Desktop\test\cdrdao simulate G:\test\myimage.cue 

Das funktioniert auch.

Ich habe mich gefragt, ob irgendjemand Hinweise darauf haben könnte, wie ich das funktionieren lassen kann? Ist es ein Verzeichnisproblem? Jede Hilfe würde sehr gut ankommen.

+0

aber Sie sagen uns, dass dies eindeutig ein Ordnerproblem ist .. p muss wissen, den Weg der Sache verwendet (es sei denn, sie sind eindeutig auf einen Standardordner). – gbianchi

+0

@ gbianchi Danke für die schnelle Antwort. Tut mir leid, dass ich so ein Noob bin. Kannst du mir ein Beispiel geben? – Wyatt

Antwort

0
p.StartInfo.FileName = "cdrdao.exe" 

Sollte der Pfad zum Programm enthalten sein.

strFile sollte auch den Pfad enthalten.

+0

@ gbianchi Die strFile zeigt den richtigen Pfad in meiner Messagebox, und ich habe es versucht: p.StartInfo.FileName = "C: \ Benutzer \ Wyatt \ Desktop \ cdrdao \ WindowsApplication1 \ bin \ Debug \ cdrdao.exe" Ich wünschte, ich könnte finde es heraus. – Wyatt

+0

Was sind die Berechtigungen für die Datei? Die App verfügt möglicherweise nicht über ausreichende Rechte zum Lesen oder Ausführen. – em3ricasforsale

+0

Die strFile funktioniert, wenn sie im selben Verzeichnis wie die Anwendung, aber nicht an einem anderen Speicherort ist. – Wyatt

Verwandte Themen