Détecter si le focus est sur le bureau
Bonjour à tous,
Je tente de détecter si le focus est sur le bureau.
Pour le moment, je parviens à le déterminer uniquement losque je me trouve sur le bureau sans la moindre fenêtre à l'écran. Dés lors qu'il y a une fenêtre passive en même temps ça ne fonctionne plus.
NB: par fenêtre passive, j'entends une fenêtre qui aurait perdue son focus mais qui resterait présente graphiquement.
Voici mon code de test:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Program
{
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
static void Main(string[] args)
{
for(;;)
{
Thread.Sleep(2000);
Console.WriteLine(onDesktop());
}
}
static bool onDesktop()
{
const int nChars = 256;
StringBuilder Buff = new StringBuilder(nChars);
IntPtr handle = GetForegroundWindow();
if (GetWindowText(handle, Buff, nChars) == 0)
{
return true;
}
return false;
}
} |
Si quelqu'un a une petite idée je suis preneur! :)
Merci de m'avoir lu.