buttonBrowse
-
hallo
ich bin neu hier und und anfänger
habe auch gleich eine frage.und zwar versuche ich grad an ein buttonBrowse hinzubekommen
ich möchte eine datei öffnen und an ein programm weitergeben
so schau es bis jetzt aus:
private void buttonBrowse_Click(object sender, RoutedEventArgs e) { ofd = new OpenFileDialog(); ofd.DefaultExt = "file|*.*"; ofd.Filter = "file|*.*"; ofd.Multiselect = true; if (ofd.ShowDialog().HasValue) { Stream[] fileContents = ofd.OpenFiles(); string[] fileNames = ofd.SafeFileNames; { { Process process = new Process { StartInfo = { FileName = "test\\programm.exe", } }; process.Start(); process.WaitForExit(); {
nur leider wird die datei an das programm nicht übergeben
wäre für jeder hilfe dankebar
lg peter
-
Also erstmal ein paar Grundlegende Sachen.
1. Was sollen diese vielen Scope-Klammern? Ich hab ja nichts dagegen wenn man einen Scope zur Übersicht aufmacht, aber du hast es da etwas übertrieben
2. Die Dateien die du da Alle öffnest, solltest du nach Beendigung deines Programmes auch wieder schließen.
3. Und naja, du übergibst deinem neuem Prozess doch nirgends die Dateinamen die er öffnen soll. Woher soll er also wissen was er machen soll?
-
wie gesagt ich bin anfänger und hatte gefofft das mir jemand die richtung zeigt.
-
Ja hab ich das nicht gemacht?
Ich hab dir zum einen Tips gegeben was du Grundlegend falsch gemacht hast.Noch ein paar zusätzliche Tips:
Über die Klasse Process kannst du in der MSDN was durchlesen.
Und der Konstruktor bietet dir die Möglichkeiten dem Prozess beim Start diversen Informationen mit zu übergeben. Hier kannst du deiner Exe zum Beispiel das Array von FileNames übergeben was du bereits ermittelt hast. Dann kannst du sogar das öffnen der Dateien über
ofd.OpenFiles()
weglassen.
-
doch hast du gemacht nur ich weiß nicht wie ich das umsetzen soll
ich hab jetzt versucht :
private void buttonBrowse_Click(object sender, RoutedEventArgs e) { ofd = new OpenFileDialog(); ofd.DefaultExt = "file|*.pdf"; ofd.Filter = "filen|*.pdf"; ofd.Multiselect = true; if (ofd.ShowDialog().HasValue) { Stream[] fileContents = ofd.OpenFiles(); string[] fileNames = ofd.SafeFileNames; for (int i = 0; i < fileNames.Length; i++) { { Process process = new Process { StartInfo = { FileName = "test\\programm.exe", Arguments = string.Format("*.pdf") } }; process.Start(); process.WaitForExit(); {
aber es geht immer noch nicht
ich hoffe das du eventuell eine lösung weißt
-
Servus,
Firefighter teilt dir u.A. mit, dass du dich auch ein bisschen mit Grundlagen auseinander setzen müsstest. Vielleicht auch mal das ein oder andere Tutorial machen.
Zu den Grundlagen gehört auch der Umgang mit dem Debugger. Wenn du dir deine Arguments einmal ansiehst, dann wirst du feststellen, dass dort nur "*.pdf" drin steht. Ein string.Format ist an dieser Stelle unnötig.
Was möchtest du denn an dein auszuführendes Programm übergeben? Ein FileHandle oder der Dateiname? Wahrscheinlich nur den Dateinamen... Dann kannst du dir auch dein Openfiles sparen.
Du hast nun mehrere Möglichkeiten mit deinem Problem umzugehen. Entweder übergibst du jeden Dateinamen einzeln an dein Programm und führst es aus oder du übergibst z.B. Komma separiert, wenn das Programm damit umgehen kann, die Dateinamen.
Ein kleines Beispiel mit .Net 2.0 erstellt:
private OpenFileDialog ofd; private void button1_Click(object sender, EventArgs e) { this.ofd = new OpenFileDialog(); this.ofd.DefaultExt = "file|*.pdf"; this.ofd.Filter = "filen|*.pdf"; this.ofd.Multiselect = true; if (this.ofd.ShowDialog() == DialogResult.OK) { Process process = new Process(); foreach (string fileName in this.ofd.SafeFileNames) { // Hierbei ist aber zu beachten, dass fileName keine Pfadangabe enthält // Dateiname mit Pfad -> this.ofd.FileNames process.StartInfo = new ProcessStartInfo(@"C:\DeinProgramm\prog.exe", fileName); process.Start(); process.WaitForExit(); } } }
Ich habe das Beispiel ähnlich zu deinem Schnippsel gehalten, damit du die Zeilen auch nachvollziehen kannst.
Aber nochmal zur Verdeutlichung in Kurzform:
- Syntax kennen lernen und mit rumspielen
- Debugger ist "nicht" Bahh, es ist dein Freund
- Beispiele im Internet suchen -> z.B. google: Process start c#
- Tuts durchspielenWenns dann immernoch nicht klappt, dann einfach nachfragen... Die Antworten sind zwar manchmal sehr direkt aber nie Böse gemeint. Es sei denn, man beachtet die Ratschläge nicht
EDIT:
BTW. Das was ich dir jetzt ausführlich aufgeführt habe, hat dir Firefighter schon in seinem ersten Posting beschrieben und das eigentlich noch nicht mal zu knappgruß
Hellsgore
-
vielen dank erstmal
leider bekomme ich ein invalid error hatte nur zb pdf angegeben aber es handelt sich um ein *.xap file
liegt es eventuell daran das ich den folgenden abschnitt ändern musste damit das fenster zur auswahl aufgeht
private void buttonBrowse_Click(object sender, RoutedEventArgs e)
{
this.ofd = new OpenFileDialog();
this.ofd.DefaultExt = "file|.xap";
this.ofd.Filter = "filen|.xap";
this.ofd.Multiselect = true;
if (ofd.ShowDialog().HasValue)[/cs]
und bei den programm.exe steht das zur auswahl
wp7-deploy.exe path\to\xap\file.xap -destination[modifiers]
Example
wp7-deploy.exe c:\mytest2.xap -dsr
-
Hmm,
das sollte doch nun eigentlich ein Leichtes sein...
this.ofd = new OpenFileDialog(); this.ofd.DefaultExt = "Silverlight Application Package|*.xap"; this.ofd.Filter = "Silverlight Application Package|*.xap"; this.ofd.Multiselect = true; if (this.ofd.ShowDialog() == DialogResult.OK) { Process process = new Process(); string argument = string.Empty; foreach (string fileName in this.ofd.FileNames) { argument = string.Format("{0} -dsr", fileName); process.StartInfo = new ProcessStartInfo("wp7-deploy.exe", argument); process.Start(); process.WaitForExit(); } }
Das ist aber nun schon stark vorgekaut...
gruß
Hellsgore
-
ich weiß das ich scjon viel bekommen habe und bin auch echt dankbar
nur leider bekomme ich immer noch eine fehlermeldung stopped. incorrect aguments.
-
habe es so gelöst
argument = string.Format("\"{0}\" -dsr", string.Format("{0}", fileName));
vielen lieben dank euch beiden juhuu
pc.: gleich mal anmelden hier
-
Darf ich fragen warum du für alles ein
string.Format
benutzt? Ist in deinem letzten Post, bei dem zweiten Parameter doch gar nicht nötig.
-
stimmt hast recht thx
-
edit: hat sich erledigt
-
wäre toll wenn sich jemand finden lässt der mir bei der lösung helfen kann
gruß peter