![]() |
Textdatei von Windows öffnen lassen
Hallo,
ich möchte in meinem Programm, wenn man in der AboutBox auf den Button "Lizenz" klickt, eine Textdatei namens "License.txt", die im selben Verzeichnis wie das Programm ist, von Windows öffnen lassen (das was ShellExecute bei Pascal machen würde). Bis jetzt habe ich folgenden Code:
Code:
Aber wenn ich auf den Button klicke, schmeißt der JIT-Compiler von .NET eine Fehlermeldung raus.
void BLicenseClick(object sender, System.EventArgs e)
{ try { Process.Start("License.txt"); } catch (Win32Exception) { MessageBox.Show("Datei \"License.txt\" konnte nicht gefunden werden.\nBitte überprüfen Sie ihre Installation oder suchen Sie selbst nach der Datei.", "Datei nicht gefunden", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } } Was mache ich falsch? Schon mal Danke im voraus, JayK |
Re: Textdatei von Windows öffnen lassen
Zitat:
|
Re: Textdatei von Windows öffnen lassen
Hi,
die Fehlermeldung, wie Luckie bereits erwähnte, wäre nicht schlecht zur Lösung des "Rätsels" ;) Aber allgemein kann ich Dir zu diesem Code-Schinppsel empfehlen - vllt. hilfts Dir ja weiter: 1.) Benutze keine relativen Pfadangaben. Gib den vollständigen Pfad mit an 2.) Prüfe vorher, ob die Datei nicht existiert. mfG mirage228 Edit: Man sollte schon seinen eigenen Nickname richtig schreiben können :mrgreen: |
Re: Textdatei von Windows öffnen lassen
Bei mir kommt keine Exception. Ist die Datei vorhanden, erscheint sie im Notepad. Ist sie nicht vorhanden, erscheint die selbst geschriebene Fehlermeldung aus dem catch-Teil. :gruebel: Bzgl. des Pfades und der Prüfung per "File.Exists" stimme ich meinen Vorrednern zu. :)
Code:
string licenseFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
licenseFile = Path.Combine(licenseFile, "License.txt"); |
Re: Textdatei von Windows öffnen lassen
Hallo,
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
oder so.
ExtractFilePath(paramstr[0])
Aber für C# kenn ich des noch nich. Zitat:
Zitat:
EDIT: *räusper* wo befindet sich der/die Strukt/Klasse/wasauchimmer Assembly? Wenn ich den Code einfach nur durchrauschen lasse, findet er kein Assembly. |
Re: Textdatei von Windows öffnen lassen
Jay: sorry, die Exceptionmeldung ist ja wohl eindeutig und Deutsch. Daher gibt´s von mir ein freches :mrgreen:.
1. Existiert die Datei?
Code:
2. Die benötigten Assemblies (ein paar kennst du sicher schon)
File.Exists
Code:
using System.Diagnostics; // Process
using System.ComponentModel; // Win32Exception using System.IO; // File.Exists, Path.xxx using System.Reflection; // Assembly |
Re: Textdatei von Windows öffnen lassen
Zitat:
Zitat:
Danke für die using-Sachen. So siehts bis jetzt aus:
Code:
Es kommt immer "Die Datei existiert nicht".
using System;
using System.Diagnostics; using System.IO; using System.Reflection; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; namespace JayTextEdit { /// <summary> /// Description of Form1. /// </summary> public class AboutBox : System.Windows.Forms.Form { private System.Windows.Forms.Label label12; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label8; private System.Windows.Forms.Button bOK; private System.Windows.Forms.Button bLicense; public AboutBox() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } [Windows Forms Designer Generated Code] void BOKClick(object sender, System.EventArgs e) { this.Close(); } void BLicenseClick(object sender, System.EventArgs e) { string licenseFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); licenseFile = Path.Combine(licenseFile, "License.txt"); if (File.Exists(licenseFile)) { try { Process.Start(licenseFile); } catch (Win32Exception) { MessageBox.Show("Datei \"License.txt\" konnte nicht gefunden werden.\nBitte überprüfen Sie ihre Installation oder suchen Sie selbst nach der Datei.", "Datei nicht gefunden", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } } else { MessageBox.Show("Die angeforderte Datei existiert nicht.", "Datei existiert nicht", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); } } } } Moment: Geistesblitz!!!! #develop speichert die Debug-Exes ja in einem Unterordner :wall: Klar das das nicht klappt! Ist ja dumm. |
Re: Textdatei von Windows öffnen lassen
So, ich hab die License.txt in den Debug-Ordner kopiert.
Jetzt klappts! Da hätte ich aber auch eher drauf kommen können. :wall: Danke leute. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz