Externes Program in Form integrieren

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Externes Program in Form integrieren

    Hallo! Ich habe auf meiner Form ein Panel.

    Ich will das wenn ich einen Button klicke ein Programm sich öffnet und in dem Panel integriert ist.
    Folgenden Code habe ich versucht: Schau mal

    Bei Notepad funktioniert der Code wunderbar - nur bei meiner Anwendung nicht - es wird zwar meine Anwendung gestartet nur leider wird sie nicht integriert!

    Hat jemand eine Lösung für mich?
    Hi! Also der PFad stimmt - dsa Programm wird ja gestartet nur in das Panel bettet es sich nicht ein!

    Die Anwendung die ich starten will hab auch ich geschrieben und daher weis ich das die anzuzeigende Form als 1. gestatet wird

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vierkant“ ()

    habe genau das selbe problem wie vierkant
    mit notepad.exe und write.exe geht es aber mit anderen programmen wie zb paint,icq,teamspeak und weitere geht es allerdings nicht!

    jetzt wollte ich mein updater was ein eigenes programm ist in mein hauptprogramm mit einbauen sogar selbst das geht nicht?
    bei teamspeak habe ich die fehlermeldung bekommen" das programm hat womögliche keine grafische oberfläsche" ähhh doch hat es oder nicht?

    aber wie bekomme ich dne nun ein eigenes programm in mein panel? das müsste doch eig einfach sein oder?
    coding-area.net/index.php?page=Thread&threadID=15
    Versuchs hiermit, wenns ned klappt wäre ein Codeauschnitt ned schlecht, da wir ned Probleme erraten können.
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Ich seh im Eingangspost ein außeinandergeklappte version des meines, also warum ned versuchen?
    wenn du meinst das du die Lösung weißt kannst du sie ja gern nennen. :)

    btw: "falsch herum" lol
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Glossy Cherry schrieb:

    coding-area.net/index.php?page=Thread&threadID=15
    Versuchs hiermit, wenns ned klappt wäre ein Codeauschnitt ned schlecht, da wir ned Probleme erraten können.


    das is zwar genau das gegenteil/andersrum aber das hilft mir schonmal weiter danke ;)
    mein updater bekomme ich so ohne probleme in mein programm rein danke ;)

    nun aber ein anderes problem...
    jetzt will ich zb (ich baue ein privatchat) und will dan ingame den privatchat haben...
    also in dem spiel...

    leider geht das nicht! in icq/teamspeak/firefox und alles andere geht es!
    als fehlermeldung bekomme ich immer
    es war auserhalb des arraybereiches... oder so irgentwas da :D
    bei steam geht es ja auch ohne probleme? oder muss ich ingame sein und dan wie bei steam ne taste drücken? geht das nich wenn das game minimiert ist und ich auf dne button klicke?
    habe das game auch im fenstermodus gestartet selbes problem :(

    haste da vllt ne idee?

    Glossy Cherry schrieb:

    coding-area.net/index.php?page=Thread&threadID=15
    Versuchs hiermit, wenns ned klappt wäre ein Codeauschnitt ned schlecht, da wir ned Probleme erraten können.
    Hi! Ich hab das mal kopiert:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    2. SetParent(Me.Handle, vbNullString) 'Parent entfernen
    3. End Sub
    4. Public Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. SetParent(Me.Handle, Process.GetProcessesByName("C:\Program Files (x86)\Hydrantmanager2\Hydrantmanager2.exe")(0).MainWindowHandle) 'Parent setzen, in diesem Fall in das Minecraft Hauptfenster
    7. End Sub



    Klicke ich den Button passiert gar nix! Wo definiere ich das die Externe Anwendung im Panel geöffnet wird?

    Bitte um Hilfe
    Sicher das der Path "Program Files (x86)" beinhalten soll?
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Das Problem liegt oft am "hProcess.WaitForInputIdle()", das nicht funktioniert. Dann kommt der SetParent Aufruf zu früh. Bei mir geht das mit meinem Eigenen Programm, wenn ich vor dem SetParent ein "System.Threading.Thread.Sleep(100)" setze bzw. es einfach etwas später aufrufe.
    Es wird deinem Fenster zugewiesen, dies siehst du an dem Me.handle.
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
    Nicht jedes Fenster muss sich einem anderen Prozess zuordnen lassen, das Fenster kann sich auch dagegen wehren.
    Nicht umsonst gibt es das Event ParentChanged.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo! So wird jetzt mein Programm geöffnet und ins Panel eingepflegt - läuft wunderbar:

    VB.NET-Quellcode

    1. Const APP_NAME As String = "C:\Program Files (x86)\Hydrantmanager2\Hydrantmanager2.exe"
    2. ' Prozedur mit dem Dateiname <APP_NAME> und das benötigte Anzeigefenster aufrufen.
    3. SetApplicationAsChild(APP_NAME, Panel1)


    Will ich aber jetzt den Pfad von meinen Einstellungen (aber auch Beispielsweise den Inhalt einer Textbox) laden:

    VB.NET-Quellcode

    1. Const APP_NAME As String = My.Settings.hydrant


    bekomme ich diese Meldung: "Konstanter Ausdruck erforderlich"

    Wat is falsch?

    vierkant schrieb:

    Wat is falsch?
    Nimm das Const von APP_NAME weg (==> Private oder so).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!