简体   繁体   中英

How can I tell my application window is the foreground window

I have the following problem: I want to be able to tell if my application window is the foreground window in Windows. I am using C#, .Net Framework 3.5 on Windows XP.

I actually can think of two ways to do what I am after

  1. Use pinvoke, GetForeGroundWindow and compare the returned hWnd to the hWnd of my form
  2. Check if Form.ActiveForm is null or an object reference

Method 1 seems OK, but I would rather not use pinvoke unless I have to. I am not entirely sure about method 2 although it seems to work OK.

Which method should I use, is there any other way?

It appear ActiveForm is application specific.

If you want to know if/when your form is the active form for the entire OS, you are stuck with API and a hWnd compare.

[System.Runtime.InteropServices.DllImport( "user32.dll" )]    
public static extern IntPtr GetForegroundWindow();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM