dateien und ordner offnen

hallo
ich bin dabei ein kleines programm zu basteln das uberpruft ob dateien und odner existieren.
Nun moechte ich aber auch das man diese dann offnen kann

der Path wird in eine TextBox1 geschrieben

fur datei offnen hab ich bisher

Shell(TextBox1.Text)

funktioniert aber nur bei .exe dateien wie kann man das fur alle datei typen machen?

und bei odnern hab ich

Shell("explorer.exe C:", vbNormalFocus)

C: wird geoffnet aber wie macht man das der odner aus TextBox1 geoffnet wird?

MfG ben

Nimm die Start()-Methode von Process aus System.Diagnostics. Die kann alle Dateiein (wenn sie einem Programm zugeordnet sind) und soweit ich weis auch Ordner direkt öffnen.
PS: Wie man Strings verkettet solltest du aber wissen.

Grüße, JasonDelife.

hallo
danke fur die antwort ich werde mich mal damit beschaftigen.
ich bin erst seit ca 3 wochen dabei und weis noch sehr wenig.aber so lerne ich immer mehr dazu deswegen probier ich ja immer rum :wink:
ich guck mal was ich hinkriege

danke
MfG ben

Hier die Komplettlösung

Hallo,
also grundsätzlich kann man mit Process.Start(); alles öffnen. Wenn es kein exe Programm ist, wird das dafür vorgesehene Standaradprogramm geöffnet. Gibt es kein Standardprogramm dafür, dann Stürtzt dein Programm ab. Deswegen würde ich dir empfehlen das in einem Try-Catch Block zu schreiben. Try {} wie der name schon sagt, versucht etwas und catch (Exception) {} fängt alle Fehler ab und führt dann aus, was im catch Block steht. Das Schlüsselwort Exception steht für alle Fehler. Mit z. b. Exception.DivideByZero wird nur der catch Block ausgeführt, wenn jemand versucht hatte durch 0 zu dividieren. Also du kannst also auch einen try Block haben, aber verschiedene catch Blöcke, die verschiedene Sachen abfangen. Wenn du deinen Benutzer wissen lassen, was schief gelaufen ist, dann hängst du einfach an Exception ein wort oder buchstaben noch an. z. b.:

catch (Exception e) { Console.WriteLine("Das ist schief gelaufen" + e); }

Grundsätzlich kannst du folgendermaßen prüfen, ob eine Datei existiert:

if (File.Exists(@"C:\Pfadname\Dateiname.Formatierungstyp")
{
     //Was passieren soll, wenn die Datei existiert.
}

Da ich mal Zeit habe zum Proggen, stelle ich dir hier die Komplettlösung mal vor (wenn ich deine Angaben richtig verstanden habe):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace projekt_htmlforum
{
    public partial class Form1 : Form
    {
        string path = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            path = textBox1.Text; //Speichert zeichen Für Zeichen in dem String "path" Wenn du sehen willst, wie es arbeitet, dann mache die Kommentarzeichen aus der nächsten Zeile raus:
            /*if (path != "")
            {
                MessageBox.Show("Sie haben einen Buchstaben eingegeben!");
            }*/
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Prüfen, ob die Datei existiert:
            try
            {
                if (File.Exists(@path))
                {
                    Process.Start(@path);
                    MessageBox.Show("Datei gefunden, die Datei wurde gestartet!");

                    //falls du nach öffnen der Datei das Prgromm beenden möchtest:
                    //this.Close();
                    //oder verstecken (läuft immer nocher weiter):
                    //this.Hide();
                }
            }

            catch (Exception fehler)
            {
                MessageBox.Show("Ein Fehler ist aufgetreten, bitte überprüfen Sie ihre Pfadangabe \n Programmfehler: " + fehler);
                path = null;
            }



        }

       
    }
}

Ich stelle dir hier nur die Codierung bereit, um deine Windows Form, also wie sie aussieht, das musst du noch selber machen. Ich bin bei dem Textfeld und dem Button von den Standardwerten ausgegangen. Also das Button z. b. heißt bei mir immer noch „button1“. Das Programm (mit einer Windows Form) würde so an sich gehen, habs selbst mit VS getestet!


Falls du sonst noch Fragen hast, melde dich bei mir (PN). Ich weiß wie das ist, wenn man programmieren lernt, aber keinen Ansprechpartner hat, der einem weiterhelfen kann. So hatte ich auch auch mal angefangen vor Jahren.

MFG derwunner

danke
ich habe das mal in ein neues programm kopiert und das zeigt mit 54 errors an
ich habe visual basics 2008 express edition die windows form hab ich so gemacht wie du gesagt hast textbox und button so gelassen nicht umbennant.

Public Class Form1 End Class
hab ich an anfang und ende sonst zeigt der mit die windows form nicht mehr an. aber ich habs auch ohne versucht dann nur 53 errors
hier mal die error liste

Description      Line     Column
1    'Class' statement must end with a matching 'End Class'.    1    1
2    Statement cannot appear outside of a method body.    2    5
3    Statement cannot appear outside of a method body.    3    1
4    Statement cannot appear outside of a method body.    4    1
5    Statement cannot appear outside of a method body.    5    1
6    Statement cannot appear outside of a method body.    6    1
7    Statement cannot appear outside of a method body.    7    1
8    Statement cannot appear outside of a method body.    8    1
9    Statement cannot appear outside of a method body.    9    1
10    Statement cannot appear outside of a method body.    10    1
11    Statement cannot appear outside of a method body.    11    1
12    'Namespace' statements can occur only at file or namespace level.    13    1
13    'Namespace' statement must end with a matching 'End Namespace'.    13    1
14    Syntax error.    14    1
15    Declaration expected.    15    34
16    Syntax error.    16    5
17    Syntax error.    17    9
18    Syntax error.    20    9
19    Declaration expected.    21    13
20    Syntax error.    22    9
21    End of statement expected.    24    22
22    Syntax error.    25    9
23    Syntax error.    27    9
24    End of statement expected.    29    22
25    Syntax error.    30    9
26    Declaration expected.    31    13
27    Syntax error.    32    13
28    Syntax error.    33    13
29    Declaration expected.    34    17
30    Syntax error.    35    13
31    Syntax error.    36    9
32    End of statement expected.    38    22
33    Syntax error.    39    9
34    Syntax error.    40    13
35    Statement cannot appear outside of a method body.    41    13
36    Syntax error.    42    13
37    Statement cannot appear outside of a method body.    43    17
38    Syntax error.    44    17
39    Declaration expected.    45    21
40    Declaration expected.    46    21
41    Syntax error.    48    21
42    Syntax error.    49    21
43    Syntax error.    50    21
44    Syntax error.    51    21
45    Syntax error.    52    17
46    Syntax error.    53    13
47    Statement cannot appear outside of a method body.    55    13
48    Syntax error.    56    13
49    Declaration expected.    57    17
50    Declaration expected.    58    17
51    Syntax error.    59    13
52    Syntax error.    63    9
53    Syntax error.    66    5
54    Syntax error.    67    1

ich hab bei meinem programm das mit process gemacht und es offnet das mit dem default programm und einen check button ob die datei/ordner existiert hab ich extra sind zwei verschiedene buttons und dann offnen nochmal ein button aber ich koennte auch offnen klicken wenn die datei nicht existiert

danke
MfG ben

Sorry :wink:

Achso, sorry, du benutzt Visual Basic. Ja das kann ich natürlich nicht. Das dann Fehler kommen ist logisch. Das Programm was ich dir gegeben habe, war in C# gemacht. Also sprich mit Visual C# 2008. Dein Syntax sah für mich nach C# aus.
Ich würde dir auch empfehlen, auf C# zu wechseln, weil visual basic macht heute fast keiner mehr. Außerdem ist C# sehr mächtig.

MFG derwunner

Abgesehen davon, dass ich von Komplettlösungen wenig halte, ist Visual Basic (ohne S) 2008 genauso Mächtig wie C#. Es hat ein paar Features, die meiner Meinung nach verdammt werden sollten, aber das macht es nicht gleich schlecht.
Try-Catch sieht in VB so aus:

Try ' Dein Versuchscode Catch e As Exception ' Dein Fehlercode End Try Es heißt übrigens DivideByZeroException und nicht Excpetion.DivideByZero.
Desweietren empfehle ich einfach mal ein Grundlagenbuch durchzuarbeiten, da kommt das ganze Zeug ausführlich erklärt dran.

Viele Grüße, JasonDelife.

Schon klar. Aber hallo? In welchen Jahr sind wir denn? 1950 oder was? So wie ich das aus dem Try Catch Block rauslesen konnte, gibts in Visual Basic keine Klammern, nur end Befehle und so Einrückungsscheiß, das finde ich genauso schwachsinnig wie RPG!
Also nicht falsch verstehen, ist meine meinung dazu.

MFG derwunner

@derwunner:
Ich bin selbst ein Kind der C-Style-Programmiersprachen und ich habe mit Visual Basic eher weniger am Hut, weil es meiner Meinung nach zu viele „Features“ hat, die zu inkonsequenter Programmierung verleiten. Beispiel: Der My-Namespace bringt Grundfunktionen von .NET als prozedurähnliche Befehle mit. Man muss doppelt lernen (der .NET-Way und der prozedural-käse von VB). Außerdem entsteht durch das My.Application.AForm eine große inkonsequenz in Sachen Kapselung und OOP. Das Fehlen von Klammern hingegen sehe ich angesichts dieser Tatsachen als zu vernachlässigende Lapalie an.
Sollte jemand Visual Basic programmieren wollen, dann ist das seine persönliche und zu respektierende Entscheidung.

Grüße, JasonDelife.

leute nicht gleich kloppen

erstmal danke fur eure hilfe und tipps

ich lerne zuhause VB aus spass
und in der schule haben wir einen programmier club und da lern ich jetzt C#

hab auf meinem PC zuhause Microsoft Visual Basic 2008 express edition und
Microsoft Visual C# 2010 Express - ENU

bin dabei beides zu lernen
ich hab mir auch schon javascript so halb selbst beigebracht und mit der hilfe von html.de geht das :smiley:

also beruhigt euch und danke nochmal lol