begin process at 2010 02 10 12:04:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

API

 > 

SendMessage et WM_KEYDOWN


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SendMessage et WM_KEYDOWN

jeudi 2 mars 2006 à 14:25:30 | SendMessage et WM_KEYDOWN

jocou

Bonjour à tous J'essaye de simuler l'envoi d'un touche dans la fenêtre de saisie d'une appli externe. J'utilise la séquence suivante : PostMessage hWnd, WM_KEYDOWN, VK_SHIFT, 0 PostMessage hWnd, WM_KEYDOWN, &H41, 0 Cette séquence ne fonctionne pas : j'envoie un 'a' alors que je voudrais envoyer un 'A' (shift + 'a'). Quelqu'un peut-il me dire pourquoi ? Merci pour la réponse.
mardi 7 mars 2006 à 19:53:44 | Re : SendMessage et WM_KEYDOWN

ShareVB

salut,

c'est peut être parce que ce n'est pas simultané...

essaie d'utiliser SendMessage à la place de PostMessage...

ensuite tu doit faire des WM_KEYUP dans l'ordre inverse : &H41 puis VK_SHIFT...

ShareVB
mercredi 8 mars 2006 à 10:17:55 | Re : SendMessage et WM_KEYDOWN

jocou

Désolé, ça ne marche pas non plus avec les SendMessage (j'avais déjà essayé) Bizarre, bizarre !!!
mercredi 8 mars 2006 à 13:51:38 | Re : SendMessage et WM_KEYDOWN

ShareVB

salut,

avec les KEYUP dans le bon ordre ? down shift, down a, up a up shift...bizarre...

sinon, regarde du côté de WM_CHAR ou WM_GETTEXT ou WM_SETTEXT ou Get/SetWindowText...

ShareVB
mercredi 8 mars 2006 à 15:26:03 | Re : SendMessage et WM_KEYDOWN

jocou

J'ai commencé par tester avec WM_SETTEXT, et ça ne marche pas non plus. En fait, l'appli externe est écrite dans un langage exotique que je ne connais pas. Par contre, ce que je peux constater avec SPY++, c'est qu'aucun des contrôles disposés dans la fenêtre principale de l'appli ne possède un classname standard Windows. Par exemple, la fenêtre principale a un classname "TWINDOW2" et un caption (le titre de la fenêtre), et tous les contrôles de cette fenêtre (zone d'édition, boutons, checkbox...) ont le même classname (TWINDOW1) et un caption null. Original non ?
mercredi 28 juin 2006 à 11:59:01 | Re : SendMessage et WM_KEYDOWN

viasante

Hello,

J'ai le même souci ! Mon application exotique est en Natstar !
As tu résolu ton problème ?

Le premier qui trouve contacte l'autre.

A+
mercredi 28 juin 2006 à 12:06:50 | Re : SendMessage et WM_KEYDOWN

jocou

Salut viasante Hélas non, je n'ai pas résolu mon problème, et j'ai même laissé tomber. Par contre, si tu trouves quelque chose, fais-moi signe... (Mon appli à interfacer était écrite en NSDK) A+ et bon courage...
mercredi 28 juin 2006 à 14:42:33 | Re : SendMessage et WM_KEYDOWN

viasante

Hello JOCOU,

Tout à fait : NSDK c'est de chez NAT SYSTEM, dont un de leur produit s'appelle NATSTAR.

[ Lien ]

J'ai eu un technicien de Nat System qui m'a expliqué qu'ils utilisent une couche qui masque l'accès à leurs fenêtres, donc impossible d'utiliser l'API windows. Il va tout de même demander à un collègue et me rappelle demain soir.

En attendant je croise les doigts !!!

A+
jeudi 3 août 2006 à 14:02:03 | Re : SendMessage et WM_KEYDOWN

jocou

Salut viasante Je reviens à la charge au sujet de NSDK As-tu obtenu de nouvelles infos ? Si oui, peux-tu me contacter ? A+
mercredi 13 septembre 2006 à 14:33:21 | Re : SendMessage et WM_KEYDOWN

robin42p

L'histoire de la couche qui masque est tout à fait exacte.

Il faut réduire cette couche afin de pouvoir récupérer les différents pointeurs nécessaires.

Voici un exemple pour faire défiler une liste (bon c'est pas optimisé mais ça marche !)
Le 1er pointeur correspond à un bouton Annuler
Le 2ème correspond à la fameuse couche qu'il faut réduire

appHandle = GetTopWindow(0)

Do Until appHandle = 0
 h = GetWindowText(appHandle, winTitle, 255)
  
 If winTitle Like "*Le titre de l'appli*" Then
  h = FindWindowEx(appHandle, ByVal 0&, "TWINDOW1", "")

  'Récupération du pointeur de la touche Annuler 
  hAnnuler = FindWindowEx(h, ByVal 0&, "TWINDOW1", "") 

  'Récupération du pointeur de la couche supplémentaire    
  hCouche = FindWindowEx(h, hAnnuler, "TWINDOW1", "") 

  'Réduction de la couche 
  ShowWindow hCouche, SW_MINIMIZE
   
  'Récupération du pointeur la liste déroulante
  hListe = FindWindowEx(h, hAnnuler, "TWINDOW1", "")    
  hListe = FindWindowEx(hListe, 0, "TWINDOW1", "")
  
  'Récupération du type du contrôle 
  wstyle = GetWindowLong(hListe, GWL_STYLE)

  's'il s'agit d'une liste alors envoi de la touche BAS
  If wstyle = &H50200000 Then 
   PostMessage hListe, WM_KEYDOWN, VK_DOWN, 0&
  End If
   
  'Restauration de la couche
  ShowWindow hCouche, SW_SHOWNORMAL

etc...


1 2

Cette discussion est classée dans : sendmessage, wm, séquence, keydown, postmessage


Répondre à ce message

Sujets en rapport avec ce message

L'api : SendMessage - WM_CLOSE ne ferme pas IE ! [ par magicyoda ] ca menerve ! cette fonction ne ferme pas IE !jai trouve sur le site une api : destroywindow mais elle marchait avec aucun programme !je voudrais bien Probléme avec SendMessage [ par FrostByte ] Je voudrais envoyer une frappe de touche via SendMessage à Firefox donc voici le code Public Const WM_KEYDOWN = &H100Public Const WM_KEYUP = &H101Publ SendMessage WM_SETTEXT [ par tbbuim1 ] Salut à tous! Public Sub WriteIntoAppli()     Dim hWnd As Long     hWnd = GetForegroundWindow     AttachThreadInput App.ThreadID, GetWindowThreadProce Envoi de control à une autre appli [ par olepretre ] Bonjour,Je voudrais envoyer des séquences de controle (ctrl a, ctrl c) à une autre application (comme word, excel...). J'ai testépostmessage(hwnd,WM_K Fermeture d'une appli avec PostMessage [ par logedu ] J'ai une application que je n'arrive pas à fermer par Postmessage hwnd, WM_CLOSE,0$,0$Si l'on agit manuellement, cette appli ne se ferme pas avec 'Alt relance pour mon probleme de sendMessage [ par etherny ] POST initial (pour la ptite histoire) : http://www.vbfrance.com/forum.v2.aspx?ID=543998 Mon problème : je n'arrive pas a connaitre le handle de la fe Capture vidéo et periphériques [ par promethee2003 ] Bonjour a tous, j'ai un petit soucis. Je créer une appli de capture video(webcam...) pour capturer des images fixes a interval regulier. Le probléme SendMessage, MouseDown,X, Y [ par Unreal ] Bonjour,ça fait quelque temps que je cherche comment envoyer la position de la souris X et Y avec la commande WM_MOUSEDOWN en utilisant SendMessage:Pr envoi un code touche a une apli par son hwnd [ par breton51 ] bonjour je voudrai envoyer CtrL+O au bloc notemais voila rien ne se passevoici mon code ci quelqu'un a une idée <span lang="EN-GB" st question erreur [ par marty14 ] Bonjour,Je cale sur un retour d'erreur , si j'envois au programe AA qui n'est pas ouvert:Call PostMessage(AA, WM_KEYDOWN, vbKeyDown, 0&) 'DOWNCall Pos


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales