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 Dieser Tipp wurde bereits 34.538 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |