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.540 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. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. 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 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |