vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Verschiedenes / Sonstiges   |   VB-Versionen: VB.NET02.04.08
Notepad.exe ( Editor ) in VB Oberflaeche integrieren - Anwendung "einfangen"

Das Beispiel zeigt, wie sich der Windows Editor in die aufrufende Programmoberfläche einbetten lässt.

Autor:   Heinz PrelleBewertung:  Views:  34.541 
www.visual-basic5.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit nachfolgendem Beispiel wird gezeigt, wie sich eine fremde Anwendung (hier notepade.exe - Windows Editor) starten und in die eigene Anwendung einbetten lässt.

Erstellen Sie ein neues Projekt und platzieren auf die Form einen Button (Button1), sowie ein Panel-Control (PanelContainer). Das Panel-Control dient als Container-Objekt für die einzubettende Anwendung.

' COM-Interop einbinden.
Imports System.Runtime.InteropServices
 
Public Class Form1
  ''' <summary>
  ''' Die Klasse beinhaltet die benötigten Api-Funktionen und Konstanten.
  ''' </summary>
  Public Class Win32Api
 
    ' Die Api Funktion ShowWindow zeigt ein Fenster auf verschiedene Art an.
    ' 
    ' Rückgabewert:
    '    Ungleich 0 wenn das Fenster vor dem Funktionsaufruf 
    '    sichtbar war, sonst 0.
    ' Übergabewerte:
    '    hWnd:          Handle des Fensters.
    '    nCmdShow:      Konstante zum anzeigen des Fensters.
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Public Shared Function ShowWindow( _
      ByVal hWnd As IntPtr, _
      ByVal nCmdShow As Integer) As Boolean
    End Function
 
    ' Die Api Funktion SetParent setzt ein neues Eltern-Fenster für ein 
    ' bestimmtes Kind-Fenster.
    ' 
    ' Rückgabewert:
    '    Wenn der Aufruf erfolgreich war wird das Handle des Eltern-Fensters 
    '   zurückgegeben sonst 0.
    ' Übergabewerte:
    '    hWndChild:     Handle des Kind-Fensters.
    '  hWndNewParent: Handle des Eltern-Fensters.
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Public Shared Function SetParent( _
      ByVal hWndChild As IntPtr, _
      ByVal hWndNewParent As IntPtr) As IntPtr
    End Function
 
    ' Das Fenster wird maximiert angezeigt.
    Public Const SW_MAXIMIZE As Int32 = 3
    ' (SW_...) usw.
 
  End Class
  ''' <summary>
  ''' Die Prozedur startet die übergebene Anwendung und setzt sie in die aufrufende Form.
  ''' </summary>
  ''' <param name="CallingApplication">bspw. notepad.exe</param>
  ''' <param name="p">Panel-Control, in das die Anwendung eingebettet werden soll</param>
  Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
    ByVal p As System.Windows.Forms.Panel)
 
    ' Fehlerbehandlung einschalten.
    Try
      ' Process starten ( ... notepad.exe ... ).
      Dim hProcess As System.Diagnostics.Process = _
          System.Diagnostics.Process.Start(CallingApplication)
      ' Siehe (... WaitForInputIdle ...)
      hProcess.WaitForInputIdle()
      ' Parent Fenster setzen.
      Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
      'Fenster anzeigen.
      Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
    Catch ex As Exception
      ' Fehlerbeschreibung bei auftretenden Fehler anzeigen.
      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 Button1.Click
 
    ' Dateiname des Editors
    Const APP_NAME As String = "notepad.exe"
    ' Prozedur mit dem Dateiname <APP_NAME> und das benötigte Anzeigefenster aufrufen.
    SetApplicationAsChild(APP_NAME, PanelContainer)
  End Sub
End Class



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.