[Visual C# WPF] Anwendung in Anwendung starten

05/07/2018 20:47 Du.ke#1
Hallo liebe Community,

ich habe zwei Projekte und möchte in Projekt A (innerhalb der Form) Projekt B (Die Anwendung) Starten.

Sprich das man Praktisch gesagt die Anwendung die in der anderen Anwendung gestartet wurde nur innerhalb dieser Anwendung bewegt werden kann.

Leider weis ich gar nicht wie ich das realisieren kann.

bitte helft mir.
05/07/2018 21:03 Serraniel#2
PHP Code:
Process.Start("AppB.exe"); 
[Only registered and activated users can see links. Click Here To Register...]
05/07/2018 21:08 dieserdano#3
Du meinst sowas im „Sandbox“ Prinzip?

Die Frage ist: Geht es dir um Sicherheit oder eher einfach nur darum, dass die Anwendung nur in der Anwendung gestartet wird. Ansonsten gäbe es dafür Sandboxie
05/07/2018 21:21 Du.ke#4
Um Sicherheit nicht da ich eine Visual Studio Enterprise Version gekauft habe und damit der Source nicht auslesbar ist. falls du das meintest.

Mir geht es darum etwas mehr Übersicht in mein Programm rein zu bringen.

Im Prinzip habe ich ein Großes Programm sag ich mal und mehrere kleine Tools und da ich nicht jedes Programm bzw. tool nocheinmal in einem ganzen Stück Verfassen möchte habe ich diese Variante gewählt.

Jedoch erscheint dieses Vorgehen in WPF schwerer als ich dachte wo hingegen es in Winforms leichter war.

Ich habe noch nie was von Sandboxie gehört ist dies denn mit WPF Kompatibel ?

Im Prinzip möchte ich meine Tools innerhalb meines Programms starten sprich die Form wird beispielsweise in einem Tabcontrol angezeigt. Ich suche mal ein Bild raus um dies besser zu veranschaulichen.

----------------------------------------Edit

[Only registered and activated users can see links. Click Here To Register...]






und




[Only registered and activated users can see links. Click Here To Register...]
05/07/2018 21:36 Serraniel#5
Quote:
Originally Posted by Du.ke View Post
Um Sicherheit nicht da ich eine Visual Studio Enterprise Version gekauft habe und damit der Source nicht auslesbar ist.
Das ist Schwachsinn. Der Code wird dadurch, dass du eine Enterprise Version der Entwicklungsumgebung (!) hast mehr geschützt. Wie kommst du darauf?

Zum eigentlichen Problem, was ich dazu auf die Schnelle gefundne hab ist lediglich, das WPF keine MDI Parents unterstützt: [Only registered and activated users can see links. Click Here To Register...]
05/07/2018 21:40 Du.ke#6
Visual Studio 2017 Enterprise bietet eine End-To-End lösung.

Probiert hab ich dies mit dem .Net Reflector alle Programm die darin Verfasst wurden konnten nicht ausgelesen werden.

Wohingegen die Programme der Prof. Version usw. alle ausgelesen werden konnten.
05/07/2018 22:06 Serraniel#7
Wäre mir neu, dass es da einen Unterschied gibt, ich selbst nutze die IDE ja auch, bei Microsoft selbst finde ich auch nichts dazu, was das beschreiben würde: [Only registered and activated users can see links. Click Here To Register...]

Du kannst diesbezüglich ja einfach mal ein simples Hallo Welt Tool kompillieren und hier anfügen wenn du willst...
05/07/2018 22:23 noahrmal#8
Zur besseren Strukturierung deiner Anwendung würde ich dir empfehlen das MVVM-Pattern zu verwenden. Dies wird oft bei größeren Business-Desktop-Anwendungen im .NET-Bereich eingesetzt. Es hat außerdem den Vorteil, dass du deine kleineren Anwendungen schön modular aufbauen kannst und Logik und Oberfläche voneinander trennen kannst. Die einzelnen Oberflächen der Anwendungen können dann in einem Tab-Control aufrufbar sein.

Damit könnte man dann solche kleineren Dialoge realisieren:
- [Only registered and activated users can see links. Click Here To Register...]
- [Only registered and activated users can see links. Click Here To Register...]

Auf den vermeintlichen Schutz von VS-Enterprise gegenüber Dekompilierung/Reverse Engineering würde ich mich aber nicht verlassen. Wer Informationen über Logik oder Daten in .NET Programmen sucht, der findet sie auch.
05/11/2018 16:39 SCORNI#9
VS Enterprise schützt nicht vor decompilieren.
Allein schon die Sprachkonstrukte "is" oder "typeof" benötigen .net reflection was ohne teile des Quellcodes garnicht geht.
Und selbst wenn es keinen Quellcode inder executable gäbe, .net wird nicht nach Maschinencode sondern MSIL übersetzt, jemand der das nicht erst seit gestern macht wird den Code wie wie ein Buch lesen ;)
Wenn du bislang darauf gesetzt hast, dass dein Programm bulletproof ist, dann solltest du dein Konzept überdenken.
Jeder von einem Computer ausführbare Programmcode kann auch von einem Menschen gelesen werden.


Topic:
Auf deinen Bildern sieht mir das danach aus als würde einfach ein neues Window erzeugt werden, was aber nicht das ist was du willst!?
Hast du den Quellcode von deinen "kleinen Tools"?

Wenn ja dann kannst du die Projekte in deine Projektmappe einbinden und aus dem Hauptprogramm darauf referenzieren.
Falls du keinen Quellcode dazu hast, bleibt dir wohl nix anderes als die Programme als eigenen Prozess zu starten, wie in Antwort #1 gezeigt.
05/12/2018 23:36 Römer 13:8-10#10
Moin Du.ke

Für mich hört es sich an, als ob dein Projekt A ein Framework ist, welches Projekt B in sich laden soll.

Wenn es dies so ist, dann schreib Projekt B als Script File, welche vom Framework (Projekt A) im Runtime kompiliert und eingebunden wird.
05/14/2018 12:27 warfley#11
Das was du suchst wird unter Windows Forms MDI genannt. Das Prinzip wurde von Microschrott vor vielen Jahren aufgegeben und ist in Windows Forms nur noch aus kompatibilitätsgründen, aber wurde nie in WPF integriert.

Separate Programme zu verwenden ist also keine gute Idee. Zwar kann man das mit tricks bestimmt immernoch zusammenhacken, ich würde allerdings eher den Vorteil von .Net nutzen Klassen über DLL's bereit zu stellen, und die entsprechenden Tools als Frame statt als Form zu realisieren und diese Frames dann dynamisch aus DLL's zu laden.

Ich habe noch nie wirklich mit WPF gearbeitet, von meinem verständis her müsste das allerdings möglich sein