SendMessage et Live Messenger

cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009 - 7 août 2009 à 20:44
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 8 août 2009 à 01:20
Salut à tous,

Le code suivant fonctionne sur Notepad (Bloc-notes) mais ne fonctionne avec aucun autre programme, Live Messenger, Wordpad, Outlook, etc..

J'ai récupèrer la Class d'une fenêtre Live messenger et l'est adapté au code mais rien à faire... il n'écrit rien !

(DirectUIHWND correspond à la Class de la zone texte de WLM et IMWindowClass à la fenêtre de conversation)

Avez vous une idée ?

Merci

#include <windows.h>



int WINAPI WinMain(HINSTANCE a,HINSTANCE b, LPSTR c, int d)

{

HWND notepad, editbox;
const char *texte = "Bienvenue";


if((notepad = FindWindow("IMWindowClass", 0))){
if((editbox = FindWindowEx(notepad, 0, "DirectUIHWND", 0))){
while(*texte){
SendMessage(editbox, WM_CHAR, *texte++, 0);
}
}
}

return 0;

}

8 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
7 août 2009 à 21:05
Chez moi, la fenêtre principale est de classe MSBLWindowClass; t'es sûr que t'as sélectionné la bonne? (la fenêtre fille est de classe DirectUIHWND donc on parle bien de la même chose).

Ceci fonctionne très bien:
HWND hWnd=FindWindow("MSBLWindowClass",0);
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
7 août 2009 à 21:09
Heu finalement, non, on ne parle peut-être pas de la même chose.
En tous cas, le code est censé fonctionner. Si ça marche pas, c'est pas la bonne classe, ou bien la fenêtre n'est pas top-level.
0
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
7 août 2009 à 21:41
Et bien c'est ça le problème...

C'est bien IMWindowClass car si je fais WM_CLOSE avec un autre morceau de code, je ferme la fenêtre de conversation...

Je parle d'une fenêtre de conversation avec un contact pas la fenetre principal de live messenger!

Quelqu'un aurait une idée du problème ?

Compilé le sous DevC++! =)
0
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
7 août 2009 à 21:43
Je confirme, MSBLWindowClass = Fenêtre principale de Windows Live messenger..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
7 août 2009 à 22:07
Je viens d'essayer sur outlook 2007, idem, impossible d'écrire dans une fenêtre de nouveau message. Pareil Wordpad..
Je comprends pas le problème!


De l'aideeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Je suis sur le problème depuis deux jours, je vais mourir :(
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
7 août 2009 à 22:51
Salut,

Il faut que tu connaisses l'arborescence des fenêtres de l'application cible avec précision, de manière à pouvoir écrire un bout de code qui passe de handle en handle jusqu'à tomber sur le bon.

Spy++ fournit avec VS le fait très bien. Mais vu que tu as Dev-Cpp, tu l'as peut être pas. Donc essaie de trouver une alternative, genre celle-là.
0
cs_oshin Messages postés 50 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 8 août 2009
8 août 2009 à 00:59
J'utilise WinID qui m'indique plutôt bien les Class et tout.

J'ai analyser un peu le probleme, et c'est le suivant :


if((notepad FindWindow("IMWindowClass", 0))){ > Ici il trouve bien IMWindowClasse puisque un Sleep(9999999) arrête le programme
if((editbox FindWindowEx(notepad, 0, "DirectUIHWND", 0))){ > Parcontre ici, il ne trouve pas DIRECTUIHWND.. puis qu'un Sleep ou n'importe quel autre instruction n'arrête pas le programme...



Comment ça se fait ? WinId m'indique bien DirectUIHWND lorsque j'ai le curseur sur la zone de saisie dans la fenêtre de conversation.. ! Je ne vois pas quoi d'autre faire :o

De l'aide SVP !
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
8 août 2009 à 01:20
Ben c'est étrange... ceci fonctionne parfaitement chez moi (XP fam. SP3), en versions ANSI et Unicode.

__int32 __stdcall WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
HWND hWnd=FindWindowA("IMWindowClass",0);
if(!hWnd) return 0;
HWND hCWnd=FindWindowExA(hWnd,0,"DirectUIHWND",0);
if(!hCWnd) return 1;
return (__int32)hCWnd;
}
0
Rejoignez-nous