Ist mein Programm der aktive Process?

03/06/2009 - 21:18 von Hauer W | Report spam
Hallo!

Ich habe eine Anwendung mit einem Haupformular und ziemlich vielen von
einander unabhàngigen Nebenfenster. Im Hauptfenster werden in einem Timer
diverse Paramer abgefragt und bei bestimmten Bedingungen Hinweisfenster
ausgegebn. Nn sollen diese Hinweisfenster aber NUR erscheinen, wenn die
Anwendung die ALTIVE Anwendung ist. Wie kann ich das feststellen?

Besten Dank

Wolfgang
 

Lesen sie die antworten

#1 Armin Zingler
03/06/2009 - 21:57 | Warnen spam
Hauer W wrote:
Hallo!

Ich habe eine Anwendung mit einem Haupformular und ziemlich vielen von
einander unabhàngigen Nebenfenster. Im Hauptfenster werden in einem
Timer diverse Paramer abgefragt und bei bestimmten Bedingungen
Hinweisfenster ausgegebn. Nn sollen diese Hinweisfenster aber NUR
erscheinen, wenn die Anwendung die ALTIVE Anwendung ist. Wie kann
ich das feststellen?
Besten Dank




1. Mit GetForegroundWindow das aktive Fenster ermitteln.
2. Mit GetWindowThreadProcessId den Prozess des Fensters ermitteln
3. Erhaltene Prozess-ID mit Prozess-ID des eigenen Prozesses (s.
Process.GetCurrentProcess.ID) vergleichen


...auf Codisch:

Declare Function GetForegroundWindow Lib "user32.dll" () As IntPtr

Declare Function GetWindowThreadProcessId Lib "user32.dll" _
(ByVal hwnd As IntPtr, ByRef ProcessID As UInt32) As UInt32

Shared Function IsCurrentProcessFocused() As Boolean

Dim hWnd = GetForegroundWindow
Dim ProcessID, ThreadID As UInt32

If hWnd = IntPtr.Zero Then
Return False
Else
ThreadID = GetWindowThreadProcessId(hWnd, ProcessID)
Return ProcessID = Process.GetCurrentProcess.Id
End If

End Function


Armin

Ähnliche fragen