begin process at 2010 02 10 07:18:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

API

 > 

petit coups de pouce sur SendMessage


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

petit coups de pouce sur SendMessage

dimanche 17 juillet 2005 à 17:48:40 | petit coups de pouce sur SendMessage

georgeduke

Salut,

Malgré toutes les infos que j'ai trouvé ici et là, des choses me manquent pour utiliser correctement SendMessage(..) de user32.dll.
Depuis mon programme en C#, je souhaite "simuler" la pression de la touche F5 vers une application externe dont je réussi à identifier le handle. Voilà où j'en suis au niveau de mon source.... J'ai bon ?? lol

using System;
using System.Runtime.InteropServices;
using ...;

[...]
[DllImport("user32.dll", EntryPoint="FindWindowEx")]
       public static extern int FindWindowEx (
           int hwndParent,    int hwndEnfant,    int lpClasse, string lpTitre);
       
        [DllImport("user32.dll", EntryPoint="SendMessage")]
       public static extern int SendMessage (
           int hwnd, uint wMsg, int wParam, int lParam);
[...]
//code du bouton suivant qui simule une pression de la touche F5 sur la fenetre dont le titre est "UNLOAD.SQL - SQLTalk for Windows"
void B_SuivantClick(object sender, System.EventArgs e)
        {
            int hwnd = FindWindowEx(0, 0, 0, "UNLOAD.SQL - SQLTalk for Windows");
            if (hwnd != 0) {
                rtb_etapes.Text += hwnd.ToString();
                               
                SendMessage(hwnd, WM_KEYDOWN,VK_F5, 0);
                System.Threading.Thread.Sleep(100);
                SendMessage(hwnd, WM_KEYUP,VK_F5, 0);
                            }
        }

=> Le problème est tout simple : Quelles sont les valeurs que doivent prendre  "WM_KEYDOWN" et de "VK_F5" pour que SendMessage puisse fonctionner ?

Ps : J'ai vu que "Coq" a réussi a trouvé la valeur de WM_LBUTTONDOWN (= 0x0201) pour simuler la pression clic_gauche avec la souris - je ne sais pas comment il a fait 

Un petit coups de pouce serait vraiment sympa !
dimanche 17 juillet 2005 à 17:57:30 | Re : petit coups de pouce sur SendMessage

coq

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Par exemple pour WM_KEYDOWN :
"Header    Declared in Winuser.h", un des fichiers du PlatformSDK.

 Tu le trouveras dans ce rep là par défaut si tu utilises VS : C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include

Tu y trouveras :
#define WM_KEYDOWN                      0x0100

:-)


Cocoricoooooooo !!!!
coq
MVP Visual C#
dimanche 17 juillet 2005 à 18:12:58 | Re : petit coups de pouce sur SendMessage

georgeduke

Merci beaucoup Coq !

Cela m'a permis d'avancer.. mais mon code ne fonctionne pas

Voilà pourtant ce que j'ai fait... Quelque chose cloche ??

int hwnd = FindWindowEx(0, 0, 0, "UNLOAD.SQL - SQLTalk for Windows");
            if (hwnd != 0) {
                rtb_etapes.Text += hwnd.ToString();
               
                uint WM_KEYDOWN = 0x0100;
                uint WM_KEYUP = 0x101;
                int VK_F5 = 0x74;
               
                SendMessage(hwnd, WM_KEYDOWN,VK_F5, 0);
                System.Threading.Thread.Sleep(100);
                SendMessage(hwnd, WM_KEYUP,VK_F5, 0);
                            }
dimanche 17 juillet 2005 à 18:19:41 | Re : petit coups de pouce sur SendMessage

coq

Administrateur CodeS-SourceS
Tu es sur de bien recupérer le bon handle ?



Cocoricoooooooo !!!!
coq
MVP Visual C#
dimanche 17 juillet 2005 à 18:24:25 | Re : petit coups de pouce sur SendMessage

Lutinore

Administrateur CodeS-SourceS
problème d'unicode !?
dimanche 17 juillet 2005 à 18:29:29 | Re : petit coups de pouce sur SendMessage

georgeduke

Oui... J'ai utilisé une source sur ce site qui scanne les handles et cela correspond bien... C'est pour ça que je croyais que c'était mon code qui clochait.. Mais je vais essayer ce SendMessage sur notepad.exe pour voir...
dur... lol

dimanche 17 juillet 2005 à 18:46:43 | Re : petit coups de pouce sur SendMessage

georgeduke

Je galère toujours j'ai donc fait un simle test ; simuler la touche F5 qui, sur la fenetre du Bloc note, insère la date et l'heure sous forme de texte.

void B_TestClick(object sender, System.EventArgs e)
        {
            int hwnd = FindWindowEx(0, 0, 0, "Sans titre - Bloc-notes");
            if (hwnd != 0)
                           {
                            uint WM_KEYDOWN = 0x0100;
                            uint WM_KEYUP = 0x101;
                            int VK_F5 = 0x74;
               
                            SendMessage(hwnd, WM_KEYDOWN,VK_F5, 0);
                            System.Threading.Thread.Sleep(100);
                            SendMessage(hwnd, WM_KEYUP,VK_F5, 0);
                            }
        }

Là non plus ça ne fonctionne pas... Une idée ??


dimanche 17 juillet 2005 à 19:18:03 | Re : petit coups de pouce sur SendMessage

coq

Administrateur CodeS-SourceS
Réponse acceptée !
Ah oui, je n'ai pas percuter tout de suite : tu ne dois pas utiliser SendMessage mais PostMessage.



Cocoricoooooooo !!!!
coq
MVP Visual C#
dimanche 17 juillet 2005 à 19:25:12 | Re : petit coups de pouce sur SendMessage

georgeduke

Effectivement, avec PostMessage c'est tout bon !

Merci beaucoup


dimanche 17 juillet 2005 à 19:32:46 | Re : petit coups de pouce sur SendMessage

coq

Administrateur CodeS-SourceS
de rien :-)



Cocoricoooooooo !!!!
coq
MVP Visual C#

1 2

Cette discussion est classée dans : int, system, sendmessage, hwnd, f5


Répondre à ce message

Sujets en rapport avec ce message

ComboBox [ par auges ] Salut à tousest ce qqn pourrait me dire ce qui ne va pas avec ce code.je voudrais remplir un combobox avec des strings allant de 0000 à FFFF.for(int i gdi32.dll [ par Csl91 ] Bonjour,J'essaye de faire une capture d'écran d'une Form puis d'en imprimer le contenu à l'aide de la fonction proposée par microsoft (voir ci dessous Generer des points aleatoirement !? [ par jimmy69 ] Bonjour  a tous ,Je suis sous visual studio . net et j'apprends le c sharp !Je me suis fait une class que j'ai nomme MyPoint.cs que voici :----------- Mastermind ! ! ALEATOIRE ????? [ par xplicitnoize ] using System; us capture video [ par danyclassique ] Bonjour a tous et a toutes .Je suis debutant , et je voudrais creer une application de  capture video de ce qui ce passe sur mon bureau.J ai deja comm affichage date et heure [ par gzitoun ] Bonjour, je voudrais simplement SVP savoir ce que je dois modifier dans mon code pour recevoir la date comme il faut: je m explique: pour aujourd hui creer un picture box [ par jul00 ] je voidrait creer des picture box qui representrons des tables(de restaurent). Le code est simplifié là, à la fin je voudrais metre ça dans une boucle Listebox MultiSimple [ par eddy69270 ] Bonjour, je cherche à récupérer les Values des champs d'une listebox en SelectionMode : MultiSimple ce qui permet à l'utilisateur de séclectionner pl C# - Erreur NullReferenceException [ par skyline86 ] Bonjour, 'ai un message NullReferenceExceptionsur la ligne     Program.monFormulaire.lb_log.BeginInvoke(new GPRSListener.Principale.affichageLog( affichage des chaines dans un panel [ par fayrous ] Salut, dans mon forme j'ai un bouton . private void button4_Click(object sender, EventArgs e) { if (radioButton1.Checked) { panel


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,218 sec (3)

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