Mit nachfolgendem Beispiel lässt sich eine Fremdanwendung starten und dauerhaft im Vordergrund anzeigen. Nach dem Start der Anwendung wird das Handle ermittelt und zusammen mit den notwendigen Flags an die SetWindowsPos API-Funktion übergeben, um die Anwendung im Vordergrund anzuzeigen. Erstellen Sie ein neues Windows-Forms Projekt, platzieren auf die Form eine ComboBox (ComboBox1), einen Button (Button1) und fügen nachfolgenden Code in den Codeteil der Form ein: Public Class Form1 Public Class WinApi ''' <summary> ''' Flags zum Setzen der Fensterposition ''' </summary> Public Enum Flags As Int32 HWND_TOPMOST = -1 SWP_NOSIZE = &H1 SWP_NOMOVE = &H2 End Enum ''' <summary> ''' Benötigte API-Funktion ''' </summary> <System.Runtime.InteropServices.DllImport("user32.dll")> _ Public Shared Sub SetWindowPos( _ ByVal hwnd As IntPtr, _ ByVal hWndInsertAfter As IntPtr, _ ByVal x As Int32, _ ByVal y As Int32, _ ByVal cx As Int32, _ ByVal cy As Int32, _ ByVal wFlags As Int32) End Sub End Class Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Beispielanwendungen zum Test-Aufruf Dim s() As String = {"calc.exe", "notepad.exe", "excel.exe"} ' ComboBox mit Werten fuellen ComboBox1.Items.AddRange(s) ' Ersten Eintrag setzen ComboBox1.SelectedIndex = 0 End Sub ''' <summary> ''' Fremdanwendung starten, Handle ermitteln und zurückgeben ''' </summary> ''' <param name="ApplicationName">Zu startende Anwendung</param> Private Function StartApplication(ByVal ApplicationName As String) As IntPtr Try ' Prozessvariable deklarieren Dim hProcess As Process = New Process() With hProcess ' zu startende Datei übergeben .StartInfo.FileName = ApplicationName ' Fensterstil festlegen .StartInfo.WindowStyle = ProcessWindowStyle.Normal ' Prozess starten .Start() .WaitForInputIdle() ' Handle des Prozesses zurückgeben Return .MainWindowHandle() End With Catch ' Bei Fehler IntPtr.Zero zurückgeben Return IntPtr.Zero End Try End Function Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Fehlerüberwachung einschalten Try ' Ausgewählte Anwendung starten und Handle ermitteln Dim ApplicationHandle As IntPtr = StartApplication( _ ComboBox1.SelectedItem.ToString()) ' Konnte das Handle ermittelt werden... If Not ApplicationHandle.Equals(IntPtr.Zero) Then ' ... wird die Prozedur SetWindowPos aus der WinApi-Klasse ' zum setzen der Fensterposition aufgerufen WinApi.SetWindowPos(ApplicationHandle, _ New IntPtr(WinApi.Flags.HWND_TOPMOST), 0, 0, 0, 0, _ WinApi.Flags.SWP_NOSIZE Or WinApi.Flags.SWP_NOMOVE) Else ' ... andernfalls wird eine Meldung ausgegeben, dass das ' Handle nicht ermittelt werden konnte MessageBox.Show("Benötigtes Handle konnte nicht ermittelt werden.", "Info") End If Catch ex As Exception ' Fehler... Throw New Exception(ex.Message.ToString()) End Try End Sub End Class Dieser Tipp wurde bereits 16.341 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 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |