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.545 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung 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 Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
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. |