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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.