C# programm mit cmd-befehl

Hi,

ich habe ein eigenes De- und Encrypt Programm geschrieben (ja es is wahrscheinlich unsicher :stuck_out_tongue:).
Nun die Exe hat 3 Forms (Startmenu, Decrypt, Encrypt)…
ich habe nun vor, dass wenn man die Exe über CMD mit dem Befehl -decrypt das dann auch ausführt.
BSP:

C:\SerosDecrypt>serosdecrypt.exe -decrypt

Könnt ihr mir helfen und sagen wie ich das hinbekomme? Oder ist das mit C# nicht möglich?

Hi,
die Main Methode hat Argumente

static void Main(string[] args)
 {

jetzt rate mal was dieses string array enthält.

Gruss
joey

Hi,

ich schätze mal den „Befehl“
aber wenn ich:

 static void Main(string["-decrypt"] args)
 {
 }

benutze kommem folgende Fehler
Fehler 1 Bezeichner erwartet
Fehler 2 Ungültiges Token „“-decrypt"" in Klasse, Struktur oder Schnittstellenmemberdeklaration.
Fehler 3 Bezeichner erwartet
Fehler 4 Ungültiges Token „)“ in Klasse, Struktur oder Schnittstellenmemberdeklaration.

Auch ohne „“ kommen Fehler… kannst du mir erklären was ich da hinschreiben muss? Programmiere erst seit 6 Monaten und hab mcih damit noch nicht so befasst, allerdings gibt es für alles ein erstes mal :smile:

MFG Sero

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi

ich schätze mal den „Befehl“
aber wenn ich:

static void Main(string["-decrypt"] args)
{
}

benutze kommem folgende Fehler
Fehler 1 Bezeichner erwartet
Fehler 2 Ungültiges Token „“-decrypt"" in Klasse, Struktur
oder Schnittstellenmemberdeklaration.

Fehler 3 Bezeichner erwartet
Fehler 4 Ungültiges Token „)“ in Klasse, Struktur oder
Schnittstellenmemberdeklaration.

Da hast du einen kleinen Denkfehler :wink: In dem Array args _sind_ die Parameter:

static void main(string[] args) {
 foreach(String s in args)
 Console.WriteLine(s);
}

führt mit

C:\SerosDecrypt\>serosdecrypt.exe -decrypt 

zu der Ausgabe

-decrypt

Was Du machen willst, ginge also etwa so:

static void main(string[] args)
{
 if (args.Length != 3) 
 hilfe(); // Falsche Parameterzahl übergeben

 if (args[0].Equals("-decrypt"))
 decrypt(args[1], args[2]);
 else if (args[0].Equals("-encrypt"))
 encrypt(args[1], args[2]);
 else 
 hilfe(); // erster Paramter ist nicht decrypt/encrypt
}

static void decrypt(String infile, String outfile) { ... }
static void encrypt(String infile, String outfile) { ... }

Grüße
m4tt3n

ok danke! Man lernt eben immer etwas neues dazu :smile:. Aber, dass ich das so machen musste wusste ich nicht… ihr konntet ja helfen :smiley: ich werd das dann jetzt mal programmieren und euch bescheid geben, wenn ich nochmal Hilfe brauch.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,

hab nun folgenden fehler

System.IndexOutOfRangeException wurde nicht behandelt.
 Message="Der Index war außerhalb des Arraybereichs."
 Source="SerosDECRYPT"
 StackTrace:
 bei SerosDECRYPT.Program.Main(String[] args) in C:\Visual Studio 2008\Projects\_SerosDECRYPT\SerosDECRYPT\Program.cs:Zeile 23.
 bei System.AppDomain.\_nExecuteAssembly(Assembly assembly, String[] args)
 bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
 bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
 bei System.Threading.ThreadHelper.ThreadStart\_Context(Object state)
 bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
 bei System.Threading.ThreadHelper.ThreadStart()
 InnerException: 

habe es bei „Program.cs“. Wenn ich es bei Form1.cs reinmache, startet er ganz normal das Startmenu…

Die IndexOutOfRangeException wird geworfen, wenn du einen zu großen zu kleinen Arrayindex angibst:

Code:
int[] myArray = new int[] {1, 2, 15 }; // Erzeugt Array mit drei Werten
int a = myArray[1]; // a = 2
int b = myArray[3]; // IndexOutOfRangeException,
// weil nur Index 0 bis 2 gültig

hi,

hab nun folgenden fehler

System.IndexOutOfRangeException wurde nicht behandelt.
Message=„Der Index war außerhalb des Arraybereichs.“

Hi
zeig uns doch mal den Source-Code der Main-Methode.
Du überprüfst wahrscheinlich nicht, ob überhaupt Parameter übergeben wurden!

Grüße
m4tt3n