ludomontbaze
Messages postés37Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention20 juin 2008
-
19 mai 2008 à 11:45
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
19 mai 2008 à 16:00
Bonjour a tous, j'aimerai savoir si on peut activer une fenetre d'un logiciel.
Je dois simuler la touche F1 dans un logiciel et j'utilise SendKeys "{F1}" mais la touche F1 est simulée dans l'application VB et pas dans le logicel voulu.
J'espere avoir été clair.
Merci d'avance.
ou, si vous voulez un projet de test:
-----------------------------------------------------------------
Option Explicit
Private Const WM_COMMAND As Long = &H111
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Sub Form_Load()
Dim mhNotepadWnd As Long
Shell "Notepad", vbNormalNoFocus
Do
DoEvents
mhNotepadWnd = FindWindow("Notepad", vbNullString)
Loop Until mhNotepadWnd
SendMessage mhNotepadWnd, WM_COMMAND, &H10040, ByVal 0&
End Sub
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2008 à 15:20
euh........................................................
dois-je te redonner le lien ?
un petit extrait du code que je te propose :
MsgBox "Une instance du bloc-notes va maintenant être ouverte." & vbNewLine & _
"Toutes les touches pressées dans la zone de texte 'Text1' seront envoyées vers le Bloc Notes." & vbNewLine & _
"Un peu comme on pourrais le faire via SendKeys, avec la certitude de l'identité de la fenetre cible des touches simulées ^^", vbInformation
'# NB: pour démonstration uniquement....
'# absolument RIEN ne me garantit que la fenetre qui sera trouvée est bien celle qui correspondà mon Shell "Notepad"
Shell "Notepad", vbNormalNoFocus
mhNotepadWnd = FindWindow("Notepad", vbNullString)
ludomontbaze
Messages postés37Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention20 juin 2008 19 mai 2008 à 15:26
Ma fenetre notepad est déja ouverte et je voudrai juste faire un truc du genre set focus. Le lien que tu m'a donné est un peu trop compliqué pour mon niveau.
Merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2008 à 15:33
et ton "niveau" ne doit pas t'empecher de lire la doc, ce que tu ne fais surement pas.
En effet, je vois dans ton ShowWindow que tu utilises la valeur 5, en dur.
tu ne te soucis donc pas des constantes... ce que tu ferais certainement si tu lisais la doc MSDN...
c'est d'ailleurs en lisant les infos qu'elle contient sur ShowWindow avec SW_SHOW que j'ai vu, quelques lignes plus haut, le nom de la fonction que je te conseilles, a savoir SetForeGroundWindow.
avec un peu de curiosité et de vonlonté, tu devrais y arriver
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2008 à 15:36
mortalino, pour les boutons de commande, les menus, etc, le plus simple, c'est d'espionner, en attendant les WM_COMMAND
tu presse F1 (ou click dans le menu et go...)
tu as des WM_COMMAND qui débarquent
Message Source wParam (high word) wParam (low word) lParam
Menu 0 Menu identifier (IDM_*) 0
Accelerator 1 Accelerator identifier (IDM_*) 0
Control Control-defined notification code Control identifier Handle to the control window
donc &h00010040 pour wParam (raccourcis clavier pour l'ID 0x40)
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 19 mai 2008 à 16:00
Lol,
je vais d'ailleurs jeter un oeil sur ta source dès que j'ai un moment.
Ca + celle de DarkSidious, depuis le temps que je veux rajouter un bouton 'iconiser en barre des taches' sur FireFox..