2 .exen Binden

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Bei mir kommen 2 fehler :_
    syntaxfehler bei

    VB.NET-Quellcode

    1. ByVal e As System.EventArgs) Handles Button1.Click

    Panel container wurde nicht klar deklariert!

    VB.NET-Quellcode

    1. SetApplicationAsChild(APP_NAME, PanelContainer)

    Mein kompletter quelltext siehst so aus!

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. ''' <summary>
    4. ''' Die Klasse beinhaltet die benötigten Api-Funktionen und Konstanten.
    5. ''' </summary>
    6. Public Class Win32Api
    7. ' Die Api Funktion ShowWindow zeigt ein Fenster auf verschiedene Art an.
    8. '
    9. ' Rückgabewert:
    10. ' Ungleich 0 wenn das Fenster vor dem Funktionsaufruf
    11. ' sichtbar war, sonst 0.
    12. ' Übergabewerte:
    13. ' hWnd: Handle des Fensters.
    14. ' nCmdShow: Konstante zum anzeigen des Fensters.
    15. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    16. Public Shared Function ShowWindow( _
    17. ByVal hWnd As IntPtr, _
    18. ByVal nCmdShow As Integer) As Boolean
    19. End Function
    20. ' Die Api Funktion SetParent setzt ein neues Eltern-Fenster für ein
    21. ' bestimmtes Kind-Fenster.
    22. '
    23. ' Rückgabewert:
    24. ' Wenn der Aufruf erfolgreich war wird das Handle des Eltern-Fensters
    25. ' zurückgegeben sonst 0.
    26. ' Übergabewerte:
    27. ' hWndChild: Handle des Kind-Fensters.
    28. ' hWndNewParent: Handle des Eltern-Fensters.
    29. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    30. Public Shared Function SetParent( _
    31. ByVal hWndChild As IntPtr, _
    32. ByVal hWndNewParent As IntPtr) As IntPtr
    33. End Function
    34. ' Das Fenster wird maximiert angezeigt.
    35. Public Const SW_MAXIMIZE As Int32 = 3
    36. ' (SW_...) usw.
    37. End Class
    38. ''' <summary>
    39. ''' Die Prozedur startet die übergebene Anwendung und setzt sie in die aufrufende Form.
    40. ''' </summary>
    41. ''' <param name="CallingApplication">bspw. notepad.exe</param>
    42. ''' <param name="p">Panel-Control, in das die Anwendung eingebettet werden soll</param>
    43. Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
    44. ByVal p As System.Windows.Forms.Panel)
    45. ' Fehlerbehandlung einschalten.
    46. Try
    47. ' Process starten ( ... notepad.exe ... ).
    48. Dim hProcess As System.Diagnostics.Process = _
    49. System.Diagnostics.Process.Start(CallingApplication)
    50. ' Siehe (... WaitForInputIdle ...)
    51. hProcess.WaitForInputIdle()
    52. ' Parent Fenster setzen.
    53. Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
    54. 'Fenster anzeigen.
    55. Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
    56. Catch ex As Exception
    57. ' Fehlerbeschreibung bei auftretenden Fehler anzeigen.
    58. MessageBox.Show(ex.Message.ToString(), "Info")
    59. End Try
    60. End Sub
    61. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    62. ByVal e As System.EventArgs) Handles Button1.Click
    63. ' Dateiname des Editors
    64. Const APP_NAME As String = "notepad.exe"
    65. ' Prozedur mit dem Dateiname <APP_NAME> und das benötigte Anzeigefenster aufrufen.
    66. SetApplicationAsChild(APP_NAME, PanelContainer)
    67. End Sub
    68. End Class

    @l3x4nd3r schrieb:

    Bei mir kommen 2 fehler :_
    syntaxfehler bei

    VB.NET-Quellcode

    1. ByVal e As System.EventArgs) Handles Button1.Click

    Panel container wurde nicht klar deklariert!

    VB.NET-Quellcode

    1. SetApplicationAsChild(APP_NAME, PanelContainer)

    Mein kompletter quelltext siehst so aus!

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. '''
    4. ''' Die Klasse beinhaltet die benötigten Api-Funktionen und Konstanten.
    5. '''
    6. Public Class Win32Api
    7. ' Die Api Funktion ShowWindow zeigt ein Fenster auf verschiedene Art an.
    8. '
    9. ' Rückgabewert:
    10. 'Ungleich 0 wenn das Fenster vor dem Funktionsaufruf
    11. 'sichtbar war, sonst 0.
    12. ' Übergabewerte:
    13. 'hWnd: Handle des Fensters.
    14. 'nCmdShow: Konstante zum anzeigen des Fensters.
    15. _
    16. Public Shared Function ShowWindow( _
    17. ByVal hWnd As IntPtr, _
    18. ByVal nCmdShow As Integer) As Boolean
    19. End Function
    20. ' Die Api Funktion SetParent setzt ein neues Eltern-Fenster für ein
    21. ' bestimmtes Kind-Fenster.
    22. '
    23. ' Rückgabewert:
    24. 'Wenn der Aufruf erfolgreich war wird das Handle des Eltern-Fensters
    25. ' zurückgegeben sonst 0.
    26. ' Übergabewerte:
    27. 'hWndChild: Handle des Kind-Fensters.
    28. ' hWndNewParent: Handle des Eltern-Fensters.
    29. _
    30. Public Shared Function SetParent( _
    31. ByVal hWndChild As IntPtr, _
    32. ByVal hWndNewParent As IntPtr) As IntPtr
    33. End Function
    34. ' Das Fenster wird maximiert angezeigt.
    35. Public Const SW_MAXIMIZE As Int32 = 3
    36. ' (SW_...) usw.
    37. End Class
    38. '''
    39. ''' Die Prozedur startet die übergebene Anwendung und setzt sie in die aufrufende Form.
    40. '''
    41. ''' bspw. notepad.exe
    42. ''' Panel-Control, in das die Anwendung eingebettet werden soll
    43. Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
    44. ByVal p As System.Windows.Forms.Panel)
    45. ' Fehlerbehandlung einschalten.
    46. Try
    47. ' Process starten ( ... notepad.exe ... ).
    48. Dim hProcess As System.Diagnostics.Process = _
    49. System.Diagnostics.Process.Start(CallingApplication)
    50. ' Siehe (... WaitForInputIdle ...)
    51. hProcess.WaitForInputIdle()
    52. ' Parent Fenster setzen.
    53. Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
    54. 'Fenster anzeigen.
    55. Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
    56. Catch ex As Exception
    57. ' Fehlerbeschreibung bei auftretenden Fehler anzeigen.
    58. MessageBox.Show(ex.Message.ToString(), "Info")
    59. End Try
    60. End Sub
    61. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
    62. Button1.Click
    63. ByVal e As System.EventArgs) Handles Button1.Click
    64. ' Dateiname des Editors
    65. Const APP_NAME As String = "notepad.exe"
    66. ' Prozedur mit dem Dateiname und das benötigte Anzeigefenster aufrufen.
    67. SetApplicationAsChild(APP_NAME, PanelContainer)
    68. End Sub
    69. End Class


    1.fehler:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click _
    2. ByVal e As System.EventArgs) Handles Button1.Click


    Dort wo der _ ist, den haste vergessen!

    2. Fehler, du hast kein Panel auf der Form ;)

    Probiers damit:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. '''
    4. ''' Die Klasse beinhaltet die benötigten Api-Funktionen und Konstanten.
    5. '''
    6. Public Class Win32Api
    7. ' Die Api Funktion ShowWindow zeigt ein Fenster auf verschiedene Art an.
    8. '
    9. ' Rückgabewert:
    10. 'Ungleich 0 wenn das Fenster vor dem Funktionsaufruf
    11. 'sichtbar war, sonst 0.
    12. ' Übergabewerte:
    13. 'hWnd: Handle des Fensters.
    14. 'nCmdShow: Konstante zum anzeigen des Fensters.
    15. _
    16. Public Shared Function ShowWindow( _
    17. ByVal hWnd As IntPtr, _
    18. ByVal nCmdShow As Integer) As Boolean
    19. End Function
    20. ' Die Api Funktion SetParent setzt ein neues Eltern-Fenster für ein
    21. ' bestimmtes Kind-Fenster.
    22. '
    23. ' Rückgabewert:
    24. 'Wenn der Aufruf erfolgreich war wird das Handle des Eltern-Fensters
    25. ' zurückgegeben sonst 0.
    26. ' Übergabewerte:
    27. 'hWndChild: Handle des Kind-Fensters.
    28. ' hWndNewParent: Handle des Eltern-Fensters.
    29. _
    30. Public Shared Function SetParent( _
    31. ByVal hWndChild As IntPtr, _
    32. ByVal hWndNewParent As IntPtr) As IntPtr
    33. End Function
    34. ' Das Fenster wird maximiert angezeigt.
    35. Public Const SW_MAXIMIZE As Int32 = 3
    36. ' (SW_...) usw.
    37. End Class
    38. '''
    39. ''' Die Prozedur startet die übergebene Anwendung und setzt sie in die aufrufende Form.
    40. '''
    41. ''' bspw. notepad.exe
    42. ''' Panel-Control, in das die Anwendung eingebettet werden soll
    43. Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
    44. ByVal p As System.Windows.Forms.Panel)
    45. ' Fehlerbehandlung einschalten.
    46. Try
    47. ' Process starten ( ... notepad.exe ... ).
    48. Dim hProcess As System.Diagnostics.Process = _
    49. System.Diagnostics.Process.Start(CallingApplication)
    50. ' Siehe (... WaitForInputIdle ...)
    51. hProcess.WaitForInputIdle()
    52. ' Parent Fenster setzen.
    53. Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
    54. 'Fenster anzeigen.
    55. Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
    56. Catch ex As Exception
    57. ' Fehlerbeschreibung bei auftretenden Fehler anzeigen.
    58. MessageBox.Show(ex.Message.ToString(), "Info")
    59. End Try
    60. End Sub
    61. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
    62. Button1.Click _
    63. ByVal e As System.EventArgs) Handles Button1.Click
    64. ' Dateiname des Editors
    65. Const APP_NAME As String = "notepad.exe"
    66. ' Prozedur mit dem Dateiname und das benötigte Anzeigefenster aufrufen.
    67. SetApplicationAsChild(APP_NAME, PanelContainer)
    68. End Sub
    69. End Class


    Nurnoch ein Panel auf die Form ziehen, dan sollte es qehen (habs nicht getestet, ist freikopf )

    agund schrieb:

    Wieso Binden???
    Du kannst die EXE auch nachträglich oder zu einem Zeitpunkt deiner Wahl einfach starten.

    Mit Shell(C:/....exe)

    kann du jederzeit externe Programme mit deinem Programm starten.
    Er will damit eigentlich 2 dateien binden z.B server.exe mit ner stub damit die server.exe beim ausführen der Stub geöffnet wird, das es im endeffekt ein virus sein soll ;)
    Eigentlich der Link habe ich schon gepostet, dort steht beschrieben wie man mit dem Code sich bedient. Als erweiterung kannst du deine Fenster anordnen, damit du überblick behälst.

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

    Da das hier verdächtig nach Virusprogrammierung riecht, schließe ich den Thread hiermit. Gelöscht wird er nicht, denn vielleicht hast du (@Threadersteller) ja wirklich "gute" Absichten. Da die Lösung schon gepostet wurde, sollte eine Schließung in dem Fall kein Problem darstellen.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum