Hi,
ich würde gerne wissen wie man in WPF/C# auf den Inhalt einer Datei zugreifen kann die das Programm geöffnet hat.
Bsp.: Ich öffne die Datei „xy.z“ und in dem Programm „z-Reader“ wird der Inhalt der Datei „xy.z“ in einem TextBlock angezeigt.
Lg der einzigware
Aloha
Irgendwie wirstehe ich nicht was du willst. Von welchem Programm sprichst du wenn du NUR „Programm“ schreibst.
zB hier:
ich würde gerne wissen wie man in WPF/C# auf den Inhalt einer
Datei zugreifen kann die das Programm geöffnet hat.
Willst du nur allgemein wissen, wie man den Inhalt einer Datei ausliest?
MfG IGnow
Hi,
also ich habe ein Programm geschrieben in dem man Pokémonlisten editieren und diese in dem Dateityp *.poké abspeichern kann. Wenn ich nun eine *.poké datei über einen Doppelklick im Explorer öffne wird NUR der Pokémoneditor geöffnet nicht aber die Pokémonliste die in der Datei gespeichert ist.
Ich hätte das gerne so wie bei Word, wenn ich über einen Doppelklick ein Dokument öffne wird der Inhalt in Word angeziegt.
Lg der einzigware
Ich verstehe was du meinst
Erstmal musst du natürlich die richtlinien festlegen damit die Software damit gestartet wird.
Dafür musst du ein Setup anlegen, ich weiß nicht wie weit du da schon bist…
In diesem Setup musst du festlegen dass das Setup die Dateierweiterung in deiner Regestry festlegt (Dafür gibt es extra den Punkt Dateitypen, wenn du ein Setup angelegt hast. Unter Rechtsklick aufs Setup: Anzeigen->Dateitypen bzw View->File Types. Dort kannst du Filetypen einfügen).
Wird nun eine .Net Software mit einer Datei geöffnet, wird der FilePath der Datei an die Software übergeben und im Objekt Command() als String hinterlegt. Sonst steht nix drin.
Das ist nun die ganze Runtime über auszulesen.
In deinem Fall musst du jetzt nur noch beim Laden der MainForm (Also beim Load event deiner Initialisierenden Form) den Command() auslesen und die Datei unter diesem String einlesen.
If Command() "" then
DateiOeffnen(Command) 'Wie auch immer du in dem Sub dann die Datei öffnest.
End If
ACHTUNG!!! Im Command() steht der Pfad mit " am Anfang und am Ende. Das muss man natürlich beachten
LG
Artur
Aloha
So würde es in VB.Net funktionieren. Bis auf paar Kleinigkeiten ist es in C# genau so. Dort findest du den Pfad der angeklickten Datei im Array
string[] args
Dieses wird der Main-Methode als Parameter übergeben. In
args[0]
solltest du den Pfad finden, den du brauchst (ohne Anführungszeichen). Über die gewöhnlich IO-Klassen greifst du dann auf den Inhalt der Datei zu, die sich hinter dem übergebenen Pfad verbirgt und lädtst derern Inhalt in dein Programm.
Die Main-Methode ist, anders als in Vb, auch in Forms-Anwendungen verfügbar.
MfG IGnow
Für die Argumente gibt es in vb.net auch einen args() string array.
also denke ich dass es in C# auch meine Lösung gehen?
Artur
Danke für die Antworten aber es gibt ein problem, ich arbeite in WPF nicht in WinForms in WPF sieht die Datei App.xaml/App.xaml.cs so aus:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace Elementtieditor
{
///
/// Interaktionslogik für "App.xaml"
///
public partial class App : Application
{
}
}
Lg der einzigware
Hallo!
Die WPF Application Klasse hat doch ein OnStartup, das Du überschreiben kannst. In den entsprechenden StartupEventArgs gibt es dann ein Args Property, welches die Aufrufparameter enthält.
Gruß,
Martin
Danke,
werds ma ausprobieren
Danke für all die Antworten hat super geklappt.
Hi,
ich arbeite in der Expressversion von Visual C# 2010 und da geht das nur mit ClickOnce und das will nicht wirklich?
Kann jemand mal beschreiben wie man da nen Dateityp hinzufügt?
Hab mir das schon bei MSDN durch gelesen aber das läuft auch nicht so wie es soll:frowning:
Lg der einzigware
Hey
Kannst du die Frage mal irgendwie anders stellen? Ich versteh da garnix!
Was genau geht nur mit ClickOnce und wo und warum willst du einen Datentyp hinzufügen?
MfG IGnow
Ok,
also ich benutze ClickOnce, weil ich „nur“ die Express version hab. In ClickOnce kann man einen Dateityp bei der Installation dem Programm zu ordenen. Z.B. *.poké zum Pokémoneditor. Nun ist das Problem, dass das hinzufügen eines Symbols(das braucht er zwangsweise) nicht so funktioniert wie es bei MSDN beschrieben ist.
Ich wollte wissen ob jmd weiß wie man das sonst noch machen kann.
Lg der einzigware
Ah okay…
Mit WPF kenn ich mich leider nicht so gut aus, ich weiß nur in etwa das es da etwas in der Registry zu ändern gibt, damit Symbol und Endung erkannt werden. Und ich weis in etwa wie man die Registry in C# bearbeitet.
Aber damit dieses Wissen was bringt müsste es schon irgendwie im Installer untergebracht werden, oder beim ersten Start deines Programmes ausgeführt werden.
MfG IGnow
Mit WPF kenn ich mich leider nicht so gut aus, ich weiß nur in
etwa das es da etwas in der Registry zu ändern gibt, damit
Symbol und Endung erkannt werden. Und ich weis in etwa wie man
die Registry in C# bearbeitet.Aber damit dieses Wissen was bringt müsste es schon irgendwie
im Installer untergebracht werden, oder beim ersten Start
deines Programmes ausgeführt werden.
Wäre schön wenn du mir mal sagen könntest wie man das in der Registry beim ersten Programmstart macht.
MfG IGnow
Lg der einzigware
Hallo
Also für Registry-Bearbeitung findet man bei Google ja so viel, dass solte nicht das Problem sein.
zB http://dotnet-snippets.de/dns/using-the-registry-SID…
Aber da braucht man den Namespace Microsoft.Win32. Ist mir aber nicht ganz klar woher man den bekommt.
Was genau in der Registry gedreht werden muss kann ich dir nicht sagen, das fragst du am besten mal im entsprechenden Brett.
Wenn das nur beim ersten Programmstart erledigt werden soll, dann macht man das so, das man irgendwo speichert, ob das Programm schoneinmal gestartet wurde. Entweder in einer extra Datei oder in den Settings. Und wenn es noch nicht gestartet wurde dann erst einmal alles in der Registry bearbeiten. (Wie das in etwa geht weist du doch oder soll ich das erklären?)
MfG IGnow
Gelöst
Hi,
ich hab das Problem mit easySetup gelöst, das ist ein kostenloses Programm mit dem man sich Setups erstellen kann. Dieses Programm bietet es an das man eine Dateiendung mit der zu installierenden Anwendung verknüpfen kann.
Lg der einzigware