vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
hier bitte  
Autor: mikeb69
Datum: 29.04.07 14:04

hallo lord man,

es hat ein bischen gedauert - aber hier nun ein code um irgendein fenster des desktop in den vordergrund zu bringen.

quelle:
http://www.microsoft.com/germany/msdn/library/visualtools/vb6/FensterInDenDesktpVordergrundBringen.mspx?mfr=true
Public Class Form1
    ' Verwendete API Funktionen 
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As _
      IntPtr) As Integer
    Private Declare Function GetForegroundWindow Lib "user32" () As Integer
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd _
      As IntPtr, ByRef lpdwProcessId As Long) As Integer
    Public Declare Function IsWindowVisible Lib "user32.dll" (ByVal hwnd As _
    IntPtr) As Boolean
 
    Dim WithEvents zeit As New Timer
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        For Each p As Process In Process.GetProcesses
            If IsWindowVisible(p.MainWindowHandle) AndAlso p.MainWindowTitle _
              <> String.Empty Then
                Me.ListBox1.Items.Add(p.MainWindowTitle)
            End If
        Next
 
    End Sub
 
    Private Sub zeit_tick(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles zeit.Tick
        Dim temp As String = Me.ListBox1.SelectedItem
        For Each p As Process In Process.GetProcesses
            If p.MainWindowTitle = temp Then
                SetForegroundWindowEx(p.MainWindowHandle)
            End If
        Next
    End Sub
 
    'quelle: 
    ' http://www.microsoft.com/germany/msdn/library/visualtools/vb6/FensterInDe
    ' nDesktopVordergrundBringen.mspx?mfr=true
 
    ' Verwenden Sie die Funktion SetForegroundWindowEx statt der 
    ' API Funktion SetForegroundWindow ausschließlich, wenn das 
    ' betroffene Fenster tatsächlich in den Vordergrund gebracht 
    ' werden muss. 
    Private Function SetForegroundWindowEx(ByVal hWndWindow As Long) As Boolean
        ' Dient dem Setzen des Vordergrundfensters mit der Funktion 
        ' SetForegroundWindow, die sich unter neueren Windows-Versionen 
        ' anders verhält als unter Windows 95 und Windows NT 4.0. 
        ' Der Rückgabewert ist True, wenn das Fenster erfolgreich in den 
        ' Vordergrund gebracht werden konnte. 
        Dim lThreadForeWin As Long  ' Thread-ID für das aktuelle 
        ' Vordergrundfenster 
        Dim lThreadWindow As Long   ' Thread-ID für das in hWndWindow 
        ' spezifizierte 
        ' Fenster, das in den Vordergrund des Desktops 
        ' gebracht werden soll. 
        ' Falls das Fenster dem gleichen Thread wie das aktuelle 
        ' Vordergrundfenster angehört, ist kein Workaround erforderlich: 
        lThreadWindow = GetWindowThreadProcessId(hWndWindow, 0)
        lThreadForeWin = GetWindowThreadProcessId(GetForegroundWindow(), 0)
        If lThreadWindow = lThreadForeWin Then
            ' Vordergrundfenster und zu aktivierendes Fenster gehören zum 
            ' gleichen Thread. SteForegroundWindow allein reicht aus: 
            SetForegroundWindowEx = CBool(SetForegroundWindow(hWndWindow))
        Else
            ' Das Vordergrundfenster gehört zu einem anderen Thread als das 
            ' Fenster, das neues Vordergrundfenster werden soll. Mittels 
            ' AttachThreadInput erhaten wir kurzzeitig Zugriff auf die 
            ' Eingabeverarbeitung des Threads des Vordergrundfensters, 
            ' so dass SetForegroundWindow wie erwartet arbeitet: 
            SetForegroundWindowEx = CBool(SetForegroundWindow(hWndWindow))
        End If
    End Function
 
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        zeit.Interval = 1000
        zeit.Start()
    End Sub
End Class
gruss

mikeb69
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fenster ganz kurz in Vordergrund holen ...1.382Fokor28.04.07 12:01
Re: Fenster ganz kurz in Vordergrund holen ...876IchNicht28.04.07 21:36
Re: Fenster ganz kurz in Vordergrund holen ...977mikeb6929.04.07 10:51
Re: Fenster ganz kurz in Vordergrund holen ...850lord man29.04.07 11:20
hier bitte 1.353mikeb6929.04.07 14:04
Re: hier bitte 877lord man29.04.07 19:41
Re: hier bitte 873mikeb6929.04.07 20:17
Re: Fenster ganz kurz in Vordergrund holen ...886lord man30.04.07 10:09
Re: Fenster ganz kurz in Vordergrund holen ...851mikeb6930.04.07 10:17

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel