Meerdere (console)commands in C#

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
Momenteel ben ik een klein programma'tje aan het schrijven, maar kom niet uit 1 dingetje.

code:
1
            Process.Start("telnet.exe ", @"/C 'Commands here.... & 'another command here'");


Dit stukje code had ik online gevonden, maar ik zoek eigenlijk iets waarmee ik de waarde van meerdere strings als command kan uitvoeren.

Het programma moet dus hetvolgende doen:

Gebruiker voert wat in in een form.
druk op GO!
het programma collect alle data, en gebruikt het als commands.


Nu moet ik erbij vermelden dat ik net ben begonnen met programmeren, en dus echt nog HEEL weinig weet.

Hulp is van harte welkom dus :), ik heb uiteraard gezocht op google, en ook een aantal antwoorden gevonden, ik ben alleen nog niet handig genoeg om ze toe te passen :(

(http://www.codeguru.com/f...e/index.php/t-512664.html)

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat is er niet duidelijk aan de documentatie? Wat is je concrete probleem? Wat werkt er wel/niet?

Is je probleem het "bouwen" van die arguments string of werkt 't uitvoeren van het commando i.c.m. de gebouwde argumentsstring niet (correct)? Heb je al gedebugged (Debuggen: Hoe doe ik dat?)?

Wat ik op gut feel verwacht dat je probleem is is het bouwen van de arguments string; in dat geval:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arguments = list<string>

if (SomeCheckbox.Checked)
  arguments.Add("/C")

if (SomeOtherCheckbox.Checked)
  arguments.Add("/Foo")

if (AnotherCheckbox.Checked)
  arguments.Add("/Bar")

var allArguments = JoinString(" ", arguments)

Process.Execute("myprocess.exe", allArguments)

En dan heb ik verdomd hard moeten nadenken om 't nog een beetje 'pseudo' te houden en niet alles in 1 keer weg te geven :P Dit kun je zo goed als 1:1 overnemen :P

[ Voor 44% gewijzigd door RobIII op 22-03-2012 00:03 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
Wat ik hieruit opmaak is dus dat het alles samenvoegd (in mijn geval iets wat in een textbox staat), en het vervolgens als verschillende commands uitvoert binnen de het gevraagde programma (in mijn geval cmd.exe)?

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
samaarst schreef op woensdag 21 maart 2012 @ 23:52:
Wat ik hieruit opmaak is dus dat het alles samenvoegd (in mijn geval iets wat in een textbox staat), en het vervolgens als verschillende commands uitvoert binnen de het gevraagde programma (in mijn geval cmd.exe)?
Euh. Nee :?
Het is wel handig als je enigszins wat basiskennis hebt, dat praat wat makkelijker op ooghoogte i.v.m. termen e.d. Misschien is 't slim een (basis)tutorial te doen zodat je in ieder geval wat termen en principes onder de knie hebt.

Wat hier gebeurt is dat je een "lijst" (list) bouwt van argumenten. Die plak je uiteindelijk aan elkaar in een enkel string met spaties ertussen (dus "/C /Foo /Bar" als alle 3 de checkboxes checked zouden zijn) en dat geef je als parameter mee aan het proces dat je aantrapt.

Als je, in jouw geval, een textbox hebt met daarin al "/C /Foo /Bar" hoef je alleen nog maar 't process aan te trappen met MyTextBox.Text als arguments parameter (aangenomen dat je die overload gebruikt en niet een van de andere).

Ik zie 't probleem dus niet.

[ Voor 16% gewijzigd door RobIII op 22-03-2012 00:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
Ik denk dat ik echt nog te weinig weet om dingen te vragen hier, mijn excuses. Ik ga eerst bijleren.

Dit had ik gemaakt (en ik weet dus dat ik goed fout zit! :) ):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            string smtpServer;
            string mailFrom;
            string mailTo;
            string textContents;


            smtpServer = txtSMTP.Text;
            mailFrom = txtFrom.Text;
            mailTo = txtTo.Text;
            textContents = txtData.Text;

            Process p = new Process();
            Process.Start("cmd.exe");
            Console.Write("telnet" + smtpServer + "25");
            Console.Write("Helo FakeMailuser");
            Console.Write("MAIL FROM:" + mailFrom);
            Console.Write("RCPT TO:" + mailTo);
            Console.Write("data");
            Console.Write(textContents);
            Console.Write(".");
            Console.Write("quit");
            MessageBox.Show("The mail has been sent!");


Dit topic kan eventueel op slot, ik merk duidelijk dat ik nog te weinig kan.

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
samaarst schreef op donderdag 22 maart 2012 @ 00:05:
Dit had ik gemaakt (en ik weet dus dat ik goed fout zit! :) ):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            string smtpServer;
            string mailFrom;
            string mailTo;
            string textContents;


            smtpServer = txtSMTP.Text;
            mailFrom = txtFrom.Text;
            mailTo = txtTo.Text;
            textContents = txtData.Text;

            Process p = new Process();
            Process.Start("cmd.exe");
            Console.Write("telnet" + smtpServer + "25");
            Console.Write("Helo FakeMailuser");
            Console.Write("MAIL FROM:" + mailFrom);
            Console.Write("RCPT TO:" + mailTo);
            Console.Write("data");
            Console.Write(textContents);
            Console.Write(".");
            Console.Write("quit");
            MessageBox.Show("The mail has been sent!");
Oei, hier zitten wel meer fouten in :P
[list=1]
• Je eerste regel zou zijn: telnetmijnsmtpserver.nl25; je moet daar dus sowieso spaties in zetten:
Console.Write("telnet " + smtpServer + " 25");
• Console.write output iets naar je console; je stuurt helemaal niets naar het proces (tenzij je aan redirection zou doen en dat doe je niet)
• Waarom gebruik je niet gewoon een SmtpClient?
Andere opmerkingen:
[list=1]
• De variabelen zijn in principe niet nodig;
    string smtpServer;
    ...
    smtpServer = txtSMTP.Text;
    ...
    Console.Write("telnet" + smtpServer + "25");

Kan ook als:

    Console.Write("telnet" + txtSMTP.Text; + "25");
(Even los van 't feit dat 't dus, functioneel gezien, niet doet wat je wil)
• Denk ook aan escaping!

[ Voor 15% gewijzigd door RobIII op 22-03-2012 00:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
In de eerste plaats, bedankt voor je reply(s).
Wat je aangeeft ga ik zeker proberen!, maar omdat ik aan het leren ben, wou ik het graag via deze manier werkend krijgen, zodat ik dit later weet hoe het in elkaar steekt :).
Ik zou dus graag willen weten hoe ik alles als commands krijg :), later zal ik de Class gebruiken (veel directere aanpak uiteraard).

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
samaarst schreef op donderdag 22 maart 2012 @ 00:18:
Ik zou dus graag willen weten hoe ik alles als commands krijg :)
Nogmaals: Op deze manier werkt 't niet (echt); ik zou meteen voor de class gaan.

Het is niet alsof "Console.Writeline" doet alsof je typed in de console ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
RobIII schreef op donderdag 22 maart 2012 @ 00:19:
[...]

Nogmaals: Op deze manier werkt 't niet (echt); ik zou meteen voor de class gaan.

Het is niet alsof "Console.Writeline" doet alsof je typed in de console ;)
Akkoord :), ga er me klooien, mijn vriendelijke dank!

Addict


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
Het programma werkt!, leek me de moeite om het even te posten.

code:
1
2
3
4
5
6
7
8
9
10
11
         {
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();

            message.To.Add(txtTo.Text);
            message.Subject = (txtSubject.Text);
            message.From = new System.Net.Mail.MailAddress(txtFrom.Text);
            message.Body = (txtData.Text);
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(txtSMTP.Text, 25);
            smtp.Send(message);
            MessageBox.Show("The email has been sent!");
        }


Bedankt!
(alleen vaag dat je geen valse email kunt opgeven, wat in telnet.exe wel kan)

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
samaarst schreef op donderdag 22 maart 2012 @ 01:02:
(alleen vaag dat je geen valse email kunt opgeven, wat in telnet.exe wel kan)
Kun je dat wat duidelijker uitleggen want 't ontgaat me even wat je hiermee bedoelt?
samaarst schreef op donderdag 22 maart 2012 @ 01:02:
code:
1
2
    message.Subject = (txtSubject.Text);
    message.Body = (txtData.Text);
De haakjes zijn hier helemaal niet nodig:
C#:
1
2
    message.Subject = txtSubject.Text;
    message.Body = txtData.Text;

[ Voor 43% gewijzigd door RobIII op 22-03-2012 01:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
RobIII schreef op donderdag 22 maart 2012 @ 01:10:

Kun je dat wat duidelijker uitleggen want 't ontgaat me even wat je hiermee bedoelt?
Jazeker :),
Binnen telnet kan je bijvoobeeld typen: valsemail@scheerapparaat.nl
Als ik een niet bestaande mail intyp, crashed het programma, wordt alleen verstuurd bij bestaande emailadressen.

Addict


Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Je SMTP sender address dus. Wat wil je hier eigenlijk mee uithalen? :)

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
samaarst schreef op donderdag 22 maart 2012 @ 01:22:
Als ik een niet bestaande mail intyp, crashed het programma
Define "crashed". Wat is de exacte exception die je krijgt? Tenzij je een ongeldig email-adres zou opgeven (zoals foo@bar@com) ofzo kan ik me niet voorstellen dat 't niet zou werken. Dat je mailserver het (wellicht) niet vreet (of vertikt te relayen) is andere koek, daarom moet je ook specifiek zijn in 't vermelden wat er fout gaat en heel goed lézen wat de foutmelding je probeert te vertellen ;)

Je kunt natuurlijk ook kijken naar Sockets en zelf "op 't vinkentouw" gaan zitten of gewoon een andere Smtp client zoeken zoeken (of hier of hier of hier of hier of...) die wellicht beter aan je eisen voldoet ;)

[ Voor 72% gewijzigd door RobIII op 22-03-2012 01:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
Boudewijn schreef op donderdag 22 maart 2012 @ 01:26:
Je SMTP sender address dus. Wat wil je hier eigenlijk mee uithalen? :)
Heeft verder geen belangrijk doel :), is meer om te leren.

Addict


Acties:
  • 0 Henk 'm!

  • Addict
  • Registratie: Augustus 2003
  • Laatst online: 08-09 13:10

Addict

Het leven is een plak kaas.

Topicstarter
RobIII schreef op donderdag 22 maart 2012 @ 01:29:
[...]

Define "crashed". Wat is de exacte exception die je krijgt? Tenzij je een ongeldig email-adres zou opgeven (zoals foo@bar@com) ofzo kan ik me niet voorstellen dat 't niet zou werken. Dat je mailserver (relay) het niet vreet is andere koek ;)
Mijn fout, ik zal idd iets verkeerds getypt hebben, werkt gewoon wel :).

Zo, nu nog ervoor zorgen dat het programma niet crashed bij foute imput.

Addict


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gebruik a.u.b. de edit knop ( Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/edit.gif ) als je iets toe te voegen hebt; je topic herhaaldelijk omhoogschoppen is niet nodig en die melding staat er niet voor niets:

Afbeeldingslocatie: http://tweakers.net/ext/f/93OGDVn8zio6RrIck1qYj8ne/full.png
;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Als het de bedoeling is om te leren van zelf een smtp client te maken kan je beter met sockets werken ipv gewoon de SmtpClient te gebruiken, want daar leer je niets van bij natuurlijk, die is enkel handig wanneer je asap het verzenden van mail werkende wil krijgen.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.

Pagina: 1