Avatar billede moddi100 Seniormester
06. maj 2010 - 17:38 Der er 14 kommentarer og
1 løsning

Hente output fra externt program i winform

Hej,

Jeg har flere programmer liggende i samme mappe. Alle skal bruge programmet 'user.exe' til at validere brugernavn/password.

1) Hvordan kan jeg få output fra 'user.exe' ind i mit andet windows-form program?

2) Det kunne garanteres laves med en dll-fil i stedet, men her har jeg ingen viden, så hvis det er muligt ville et par links også være godt.

Jeg kan godt tænke mig at kende svaret på begge spørgsmål :)

Mvh
Morten
Avatar billede arne_v Ekspert
06. maj 2010 - 17:57 #1
Du kan godt laese output fra et program der koeres med Process.Start
Avatar billede arne_v Ekspert
06. maj 2010 - 17:59 #2
ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = "user.exe";
            psi.Arguments = "bla bla bla";
            psi.CreateNoWindow = true;
            psi.UseShellExecute = false;
            psi.RedirectStandardOutput = true;
            Process p = Process.Start(psi);
            StreamReader sr = p.StandardOutput;
            String res = sr.ReadToEnd();
            sr.Close();
            p.Close();
Avatar billede arne_v Ekspert
06. maj 2010 - 17:59 #3
Hvis den EXE er en .NET exe kan du faktisk bruge den ligesom en DLL !!
Avatar billede moddi100 Seniormester
07. maj 2010 - 14:50 #4
Jeg kender mere eller mere intet til DLL'er, kan du give mig nogle steder at læse om dem?
Avatar billede arne_v Ekspert
07. maj 2010 - 15:10 #5
DLL'er i .NET er meget nemt.

Du tilfoejer en ref til DLL og saa kan du bruge al funktionalitet i DLL.
Avatar billede moddi100 Seniormester
07. maj 2010 - 21:22 #6
hvordan laves output i en windows form?
Avatar billede arne_v Ekspert
07. maj 2010 - 21:29 #7
Du mener hvordan det vises?

tb.Text = res;

(se #2 for hvor res kommer fra)
Avatar billede moddi100 Seniormester
07. maj 2010 - 22:35 #8
user.exe indeholder som sagt funktioner vedrørende brugeren. Det er denne fil der bliver kaldt og som skal give output.

Alt efter hvad jeg bruger af argumenter, skal den give forskelligt resultat/output. Men hvordan gør jeg så user.exe giver resultatet "deleted". Altså inde fra selve user.exe?
Avatar billede arne_v Ekspert
08. maj 2010 - 00:10 #9
Ingen anelse. Jeg kender ikke dit user.exe program.
Avatar billede moddi100 Seniormester
08. maj 2010 - 19:31 #10
Du misforstår mig. Hvordan angiver jeg i user.exe at en given værdi skal udskrives og gemmes i Process.StandardOutput?
Avatar billede arne_v Ekspert
08. maj 2010 - 21:55 #11
Den kommer automatisk til at indeholde console output. C# Console.Write*, C printf, C++ cout << etc..
Avatar billede moddi100 Seniormester
08. maj 2010 - 23:23 #12
hvad så hvis begge programmer er en form-applikation?
Avatar billede arne_v Ekspert
08. maj 2010 - 23:38 #13
Så ser det ret sort ud med hensyn til at fange hvad der læses og skrives.
Avatar billede moddi100 Seniormester
02. september 2010 - 09:20 #14
Jeg endte med at konventere mit andet program (user.exe) til et console-program og derved løses problemet.

Du skal have mange tak for hjælpen arne_v. Ønsker du point?
Avatar billede arne_v Ekspert
02. september 2010 - 15:29 #15
jo tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester