Autor Beitrag
tomo2403
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

Win10
C#, VS 2019
BeitragVerfasst: Di 14.08.18 19:21 
Hi, :wink2:

ich habe zwei Projekte in einer Projektmappe. Eines ist eine WinForm und das andere eine KonsolenApp.
Ich möchte die KonsolenApp von der WinForm öffnen lassen so dass diese Angezeigt wird.
Habe aber keine Ahnunng wie das geht.

PS: Wenn mir jemand sagt wie ich beide Apps in ein Projekt bekomme wäre das auch nützlich. :)


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Di 14.08.2018 um 19:29
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 14.08.18 19:31 
Wenn du ein Extra-Konsolenfenster öffnen möchtest, dann geht das mittels der WinAPI-Funktion AllocConsole, s. z.B. Attaching a Console to a WinForms application.
tomo2403 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

Win10
C#, VS 2019
BeitragVerfasst: Mi 15.08.18 15:55 
Ich sag's ja nur ungern aber, ...

das Funktioniert bei getrennten Projekten nicht! :(
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 15.08.18 16:31 
Na klar geht das. Möglicherweise in deinen beiden konkreten Projekten nicht die kennen wir aber auch nicht. Wie man es im allgemeinen macht und auch funktioniert, auch wenn es beliebig viele Projekte sind, ist verlinkt.
tomo2403 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

Win10
C#, VS 2019
BeitragVerfasst: Do 16.08.18 16:06 
siehe Bild
Einloggen, um Attachments anzusehen!
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Do 16.08.18 16:53 
Versuchs damit:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
Process process = new Process();
process.StartInfo.FileName = "DeineKonsole.exe";        
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;        
process.Start();


Hier die Doku dazu:
docs.microsoft.com/e...ocess_StandardOutput

Alternativ: Du kannst Argumente in einem String Array übergeben und damit in deiner Konsole arbeiten.
ausblenden C#-Quelltext
1:
System.Diagnostics.Process.Start("Pfad/deineKonsole.exe", Argumente[])					
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 16.08.18 19:26 
Dazu müßte aber das Projekt eigenständig kompiliert sein.

Warum nicht einfach das Konsolenprojekt als Verweis (reference) zu dem anderen Projekt hinzufügen und dann ganz normal die Klassen und dessen Methoden verwenden?

PS: Wir hatten dieses Thema die letzten Tage schon in System.IO.Compression.ZipFile ist nicht vorhanden. Wenn du nicht weißt, wie man Verweise hinzufügt, dann schau dir den von Ralf Jansen geposteten Link an (nur daß du dann ein Projekt aus deiner Projektmappe hinzufügst, anstatt eine System-.NET-Assembly).
tomo2403 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 46

Win10
C#, VS 2019
BeitragVerfasst: Fr 17.08.18 13:16 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Dazu müßte aber das Projekt eigenständig kompiliert sein.

Warum nicht einfach das Konsolenprojekt als Verweis (reference) zu dem anderen Projekt hinzufügen und dann ganz normal die Klassen und dessen Methoden verwenden?

Wenn ich das anwende, wird die Konsole nur ausgeführt und nicht angezeigt.

Der Code von user profile iconlapadula funktioniert auch nicht. Ich kann zwar Text reinschreiben, aber ausgeführt wird nichts.


Zuletzt bearbeitet von tomo2403 am Fr 17.08.18 15:19, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 17.08.18 14:37 
Hallo, tomo2403!

Ich möchte Dich bitten, mal ein bisschen mehr Eigeninitiative zu zeigen. Zum einen, indem Du selber versuchst, Fehlermeldungen zu verstehen und darauf aufbauend Lösungen zu versuchen. Und wenn Du dann damit nicht weiter kommst, hier möglichst präzise zu beschreiben, was Du versucht hast, was nicht funktioniert und welche Fehlermeldungen Du erhälst.

Es kann nicht so weitergehen, dass man Dir jede Information aus der Nase ziehen muss und Du anscheinend erwartest, dass Dir hier "kopierfertiger" Code präsentiert wird. Du willst programmieren. Wir helfen Dir gerne dabei, auch bei Grundlagen-Fragen. Aber wir werden nicht für Dich programmieren.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: Th69
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Mo 20.08.18 14:33 
Bei mir gehts.

So öffnest du deine Konsolenanwendung in deiner WinForm-Anwendung und übergibts drei Argumente

ausblenden C#-Quelltext
1:
2:
3:
4:
private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start(@"C:\Users\myComputer\Documents\Visual Studio 2015\Projects\TestConsoleApplication\TestConsoleApplication\bin\x86\Debug\TestConsoleApplication.exe""Eins Zwei Drei");
        }


Und so in deiner Konsole, falls du die Argumente benutzen willst:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
static void Main(string[] args)
        {
            foreach (string item in args)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }


Damit die Konsole auch offen bleibt darfst du Console.Readline(); nicht vergessen, sonst läuft das einmal durch und geht automatisch wieder zu.