Entwickler-Ecke

WPF / Silverlight - WPF aus DOS starten


kostonstyle - Mi 11.08.10 14:21
Titel: WPF aus DOS starten
Hallo miteinander
wenn man eine Verknüpfung von einer Programm erstellt, kann man in der Verknüpfung parameter mitgeben z.B bei mstsc.exe -c. Ich habe nun ein Konsoleprogramm geschrieben. Nun möchte ich eine Verknüpfung zu diesem Programm erstellen und ein Parameter mitgeben, Z.B. Kosole.exe -c. Der Parameter -c sollte bewirken, dass nebenbei ein WPF Programm gestartet werden sollte und dabei Konsole Programm beendet wird.

Gruss kostonstyle


Greenberet - Mi 11.08.10 14:32

die Main Methode hat einen Parameter string[]args, in diesem stehen alle Parameter drinnen.

MSDN -> Main Command Line Arguments [http://msdn.microsoft.com/de-de/library/acy3edy3%28VS.100%29.aspx]


kostonstyle - Mi 11.08.10 15:37

viele dank....


kostonstyle - Mi 11.08.10 15:57

entschuldige, habe noch eine Frage...
wie kann ich von DOS aus WPF Programm starten?
Habe mal so etwas versucht, aber leider Exception ausgelöst.
MainWindow win = new MainWindow();

Danke kostonstyle


Kha - Mi 11.08.10 19:06

Glaube nicht, dass man das Framework noch unter Dos zum Laufen bekommt...

Eine WPF-Anwendung ohne explizite App-Klasse kannst du mit new Application().Run(new MyWindow()) starten. Denke aber daran, die Main-Methode mit [STAThread] auszustatten (deine namenlose Exception?). Vorher kannst du über FreeConsole [http://www.pinvoke.net/default.aspx/kernel32.freeconsole] das Konsolenfenster verstecken.


kostonstyle - Do 12.08.10 10:17

das konsoleprogramm sollte das wpf programm aufrufen, also ein programm ruft ein anderes Programm auf, und konsole sollte gekillt werden. Sollte ich ein neuer Thread für WPF erstellen?

danke kostonstyle


Kha - Do 12.08.10 18:26

user profile iconkostonstyle hat folgendes geschrieben Zum zitierten Posting springen:
das konsoleprogramm sollte das wpf programm aufrufen, also ein programm ruft ein anderes Programm auf, und konsole sollte gekillt werden.
Solange du nicht zwei getrennte Prozesse meinst ("Programm" ist ein sehr schwammiger Begriff), macht das mein Code. Ein zweiter Thread hilft nichts, das Konsolenfenster schließt sich (ohne FreeConsole) erst am Ende des Prozesses.


kostonstyle - Mi 18.08.10 15:52

@Kha
Könntest du mir bitte sagen, wie man freeconsole benutzt? Hab keine Ahnung davon :-(.

Danke kostonstyle


Kha - Mi 18.08.10 19:36

Du kopierst die verlinkte Signatur in deine Klasse und rufst die Methode auf. Bei den Parametern kann man ja jedenfalls nicht sonderlich viel falsch machen ;) .


kostonstyle - Fr 20.08.10 13:56

Ich weiss wirklich nicht, wie man die Methode FreeConsole benutzt
Konsole Code sieht wie folgt aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Xaml;
using System.Runtime.InteropServices;
using CopyCostumizing;

namespace CopyFolderFiles
{
    class Program
    {
        [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
        static extern bool FreeConsole();

        static void Main(string[] args)
        {
            new Application().Run(new MyWindow()) 
        }
    }
}

die WPF Anwendung befindet sich in diesen Namensraum.

C#-Quelltext
1:
using CopyCostumizing;                    


Bitte dringend um Hilfe.....