Dans mon programme j'ai besoin d'envoyer des saisies claviers&souris virtuelles à notepad.
Dans une premier approche cela fonctionne, mais que lorsque je ramène notepad au premier plan. Voici le morceau code de mon application concernée :
Donc j'aimerai éviter de devoir toujours remettre le notepad en premier plan, et de pouvoir continuer à lui envoyer des instructions en le laissant en arrière plan et même lorsqu'il est réduit si possible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 HWND idWindow = FindWindow("notepad","test1.txt - Bloc-notes"); //récupère le handle de la fenêtre concernée if( idWindow != NULL) //si elle existe { cout<< "Fenetre trouvée" <<endl; SwitchToThisWindow(idWindow,0); //la rend active SendInput(1, &npt, sizeof(INPUT)); //envoie la touche souhaitée }
Alors j'ai essayé un SetFocus(idWindow) au lieu de SwitchToThisWindow(idWindow,0); mais sans succès rien ne se passe.
J'ai pensée à relever le handle de la fenêtre courante (avec GetForegroundWindow) pour lui redonner la main ensuite, mais les animations fenêtre n'étant pas instantané c'est pas très fonctionnel surtout quand plusieurs envoie à intervalle régulier sont effectué.
Est - ce que quelqu'un aurait une solution qui permettrait d'envoyer évènements claviers à une application sans pour autant devoir la ramener au premier plan.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 HWND idWindow = FindWindow("notepad","test1.txt - Bloc-notes"); //récupère le handle de la fenêtre concernée if( idWindow != NULL) //si elle existe { cout<< "Fenetre trouvée" <<endl; HWND currentWindow = GetForegroundWindow(); //sauvegarde de l'application courante SwitchToThisWindow(idWindow,0); //rend actif notepad SendInput(1, &npt, sizeof(INPUT)); //envoie la touche souhaité SwitchToThisWindow(currentWindow ,0); //rend la main à l'application courante }
Partager