Bonjour tout le monde,
Récemment j'ai écrit un programme pour fermer des fenêtres en démarrage de session, les touches Alt F4 n'avaient pas l'air de faire beaucoup d'effet alors j'ai émulé un clic de souris sur le bouton de fermeture, la croix rouge en haut à droite, et ça marchait très bien.
Tout-à-l'heure, sur trois fenêtres, une ne s'est pas fermée, c'est occasionnel, mais je me suis dit, on dirait que mon clic se fait quelques points trop à droite, je vais corriger le tir.
Il s'avère qu'à présent, mon programme est incapable de faire un clic de souris.
Un autre programme, plus ancien, qui lui fait un clic droit, continue de fonctionner. Donc, ce sont les nouveaux programmes qui ont un souci.
Je dois préciser qu'un peu avant, pour essayer de palier une difficulté de mise en veille de la machine, j'ai exécuté :
qui d'ailleurs n'ont pas annoncé avoir trouvé d'erreur, mais je me dis que ça mérite d'être mentionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DISM.exe /Online /Cleanup-Image /RestoreHealth sfc /scannow
Un point de restauration n'a rien résolu.
Il existe d'autres versions de user32.dll sur la machine, mais j'ai comme l'impression que remplacer celle de C:\Windows\SYSTEM32 par une autre n'est pas un truc à faire à la légère.
Ça m'aiderait bien que quelqu'un ait une idée de la route à suivre
Ah au fait dans le programme il y a eu un autre souci, c'est que le fichier app.config n'était plus valide, du reste impossible de l'ouvrir, alors après suppression j'en ai créé un nouveau ; avec rien dedans du coup.
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 [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); //Mouse actions public const int MOUSEEVENTF_LEFTDOWN = 0x02; public const int MOUSEEVENTF_LEFTUP = 0x04; public const int MOUSEEVENTF_RIGHTDOWN = 0x08; public const int MOUSEEVENTF_RIGHTUP = 0x10; public static void DoMouseClick(uint X, uint Y) { mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); } System.Threading.Thread.Sleep(1000); SetForegroundWindow(hWnd); SetActiveWindow(hWnd); SetFocus(hWnd); SetCursorPos((int)x, (int)y); System.Threading.Thread.Sleep(500); Console.Beep(1800, 200); System.Threading.Thread.Sleep(1500); DoMouseClick(x, y);
Ce qui n'empêche pas l'application de positionner proprement le curseur, simplement elle ne clique pas.
Partager