tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1024
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    hallo,

    ich suche schon seit tagen nach einer möglichkeit eine externe .exe datei innerhalb einer .net anwendung aufzurufen.
    dabei mein ich nicht per konsole die .exe in ihrem eigenen fenster zu starten, sondern ist es möglich ein bereich innerhalb eines projects zu definieren in dem die .exe dann ausgeführt wird?

    meine suche hatte bis immer nur die variante ausgespuckt, welche die .exe einfach startet als würde ich sie normal starten.

    danke schonmal
     

  2. #2
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.883
    Blog-Einträge
    34
    Hi

    Erstmal möchte ich dich auf die Netiquette aufmerksam machen. Vorallem auf Punkt 15
    Zitat Zitat von Netiquette
    Unser Forum ist kein Chatroom. Kurz-Beiträge ("Ein-Zeilen Postings"), die einfach so ins Forum "geklatscht" werden, werden ohne Vorwarnung von einem Moderator oder Administrator gelöscht. Das gleiche gilt insbesondere für Beiträge, die in Rechtschreibung, Satzbau und Verständlichkeit nicht ein vernünftiges, allgemein übliches und altersgruppen-übergreifendes Niveau erfüllen. Jugendsprache, regional verbreitete Dialekte und durchgehend kleingeschriebene Beiträge sind ebenfalls unerwünscht. Mit anderen Worten: wer erfolgreich die im Deutsch-Unterricht erlernten Kenntnisse praxisnah auf unserem Forum anwenden kann, wird nicht mit dieser Regel in Konflikt kommen. "Wiederholungstäter" werden, nachdem sie zuvor von einem Moderator auf die Mängel hingewiesen wurden, ggf. unbefristet gesperrt.
    Zum Problem:
    Was verstehst du unter einen Bereich definieren?
    Willst du die zu startende Anwendung in deine einbetten oder wie ist das zu verstehen?
    Prinzipiell lässt sich eine andere Anwendung über die Prozess-Klasse starten. Mit der statischen Start-Methode losgelöst der startenden Anwendung. mit den Instanzmethoden kannst du dir eine Referenz auf die neue Anwendung halten.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  3. #3
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Ich glaube londo will eine externe Window-Application starten und dann sozusagen dessen Form als Kind-Element von, sagen wir, einem Panel, in die eigene Anwendungen einbauen.
    Keine Ahnung ob das geht. Stellt unter WinXP/Vista bestimmt eine Zugriffsverletzung da, wenn man versucht im Speicher so zumzuschreiben, dass das Fenster dann plötzlich einer anderen Anwendung gehört.
     
    hihi = -h²

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.883
    Blog-Einträge
    34
    Ok, wenn es dass ist, wäre eine Variante, die zweite Exe als Referenz oder dynamisch zu laden und diese per Code zu Instanzieren und auszuführen. Dafür muss die zweite Anwendung aber entsprechend geschrieben sein.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  5. #5
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    hallo,

    versteh den hinweis auf die netikette nicht...wenns nicht mehr zu schreiben gibt:-/

    ok, also problem ist folgendes ich habe 2 programme. einmal nen c++ programm und einmal ne access lösung.
    das c++ tool wird über die access anwendung mit parameterübergabe gestartet und und führt dann paar berechnung aus und stellt die visuell dar.
    jetzt soll das alles geändert werden, dass nicht mehr 2 seperate programme gestartet werden müssen sondern alles über ein programm läuft.

    hatte mir jetzt überlegt die access geschichten in vb.net nochmal aufzubereiten und zu verbessern und das Berechnungtool dann in vb laden z lassen.
    quasi so, man hat an der seite eine steuerleiste wo man die ganzen importsachen etc. durchklicken kann und daneben wird aufn panel oder datagrid...alles dar gestellt.
    wenn man nun auf den button klickt der das berechnungstool starten soll, dann sollte auch dieses tool auf dem panel, oder was auch immer dann benutzt wird, dar gestellt werden.
    aber ich habe bis jetzt nur die möglichkeit gefunden es in einem neuen fenster starten zu lassen.

    eine weitere überlegung war das projekt in das bestehende vb projekt zu importieren, und dann als programmbestandteil laufen zu lassen.
    der import hat auch ohne probleme geklappt, jetzt sitz ich daran das importierte projekt über das main projekt zu starten.

    beste grüße
     

  6. #6
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.883
    Blog-Einträge
    34
    Zitat Zitat von londo Beitrag anzeigen
    versteh den hinweis auf die netikette nicht...wenns nicht mehr zu schreiben gibt:-/
    Dann lies dir doch nochmal den Auszug (oder besser die komplette Netiquette) durch und schau dir mal deine Posts an
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  7. #7
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    Guten Morgen,

    So hab die Netiquette nochmal gelesen, also da es kein ein Satz geklatsche ist muss es wohl an mein Ost-Deutsch liegen, aber glaub mir das ist schon deutsch

    nu aber wieder zum Problem,
    hab da noch eine Frage.
    Habe gestern noch einmal über den Import nachgedacht.
    Dabei kam mir folgender Gedanke, wenn ich das Projekt importiere und kompiliere erstellt der mir ja wieder ne .exe aus dem Berechnungstool weil es ja so Programmiert wurde. also habe ich doch im Endeffekt den selben Stand wie vorher?

    also müsste ich den code so anpassen das daraus keine .exe erstellt wird?
    Seh ich das so richtig oder bin ich falsch abgebogen irgendwo?

    danke
     

  8. #8
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Du musst bei deinem C++-Tool als Projekttyp Class Library (Klassenbibliothek) einstellen und dann im Haupt-Projekt eine Referenz auf deine Klassenbibliothek setzen. Es wird dir dann eine DLL anstatt einer exe-Datei erstellt.
    Ist hier alles erklärt: http://www.dotnetheaven.com/Uploadfi...01AM/pr12.aspx
     
    hihi = -h²

  9. #9
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    hallo skakie, Nico,

    nachdem ich nun eure Tipps beherzigt habe und dann bei der Umsetzung noch etwas rum gespielt habe, bin ich auf eine Lösung gestoßen, die wunderbar funktioniert.

    *thumbsup* für die Tipps

    Ich hab es jetzt so gelöst:
    Ich schaue nach aus welchem Fenster heraus der Aufruf kam.
    dann wird das Programm auf gerufen und in dem aufrufendem Form dar gestellt.
    funktioniert alles ohne Probleme.

    bei bedarf kann ich den Code posten.

    thema kann als erledigt betrachtet werden.

    danke
     

  10. #10
    Ardro Ardro ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    3
    Hallo londo,

    ich denke das es immer angebracht ist die Lösung zu posten.
    Damit auch andere User die Möglichkeit haben deine Lösung anzuschauen und evtl. für eigene Bedürfnisse zu verwenden...
    Ich würde mich sehr freuen, da ich auch gerade an einem ähnlichen Problem arbeite.

    Danke schon mal im Voraus!

    Grüße,
    Ardro
     

  11. #11
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    hallo ardro,

    ja konnt ich mir beinahe denke, war aber schon unterwegs als ich das schrieb.
    werde gleich morgen früh wenn ich auf arbeit bin die lösung posten.
    kannst so gegen 08.00 Uhr mit rechnen

    schönen abend noch
     

  12. #12
    londo londo ist offline Rookie
    Registriert seit
    Apr 2004
    Beiträge
    9
    Guten Morgen,

    hier nun meine Lösung für das oben beschriebene Problem.


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    Imports System.Runtime.InteropServices
     
    Public Class FormEins
        Public Class Win32Api
     
            <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
            Public Shared Function ShowWindow( _
              ByVal hWnd As IntPtr, _
              ByVal nCmdShow As Integer) As Boolean
            End Function
     
            <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
            Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
            End Function
     
            Public Const SW_MAXIMIZE As Int32 = 3
     
        End Class
     
        Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
          ByVal p As System.Windows.Forms.Panel)
            Try
     
                Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(CallingApplication)
                hProcess.WaitForInputIdle()
                Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
                Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString(), "Info")
            End Try
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Const APP_NAME As String = "notepad.exe"
            SetApplicationAsChild(APP_NAME, Panel1)
        End Sub
     
    End Class

    Also Funktion ShowWindow fragt ab ob das Fenster vor dem Aufruf sichtbar war.
    rückgabewert ungleich 0 wenn sichtbar ansonsten 0.

    Funktion SetParent setzt ein neues Elternfenster für ein bestimmtes Kindfenster.
    Rückgabewert Handle des Elternfensters ansonsten 0.

    Die Prozedur SetApplicationAsChild startet das gewünschte Programm und stellt es in der aufrufenden Form dar.

    naja und Button1_Click sollte wohl klar sein, löst das ganze aus.
    kleine Anmerkung, steht das zu öffnende tool im syspath brauch man nur den namen des tools eingeben wie hier "notepad.exe" ansonsten muss der komplette Pfad angegeben werden, damit vb weiss wo es suchen muss.

    beste grüße
     

Ähnliche Themen

  1. window.open dann das window.close
    Von kinsh im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 05.10.05, 16:28
  2. window.open und .close + refrech nachfolgendes window
    Von Tetsuo im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 21.02.05, 00:13
  3. Makro automatisch starten beim Starten von Word
    Von zoltan im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 17.11.04, 14:30
  4. Antworten: 8
    Letzter Beitrag: 11.11.04, 09:53
  5. mama window von cromeless window schließen
    Von Husky im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 19.10.01, 20:53