OVH Cloud OVH Cloud

Ajouter une toolbar dans outlook express

15 réponses
Avatar
MarcU$
Est qui en aurais qui serais comment ajouter une toolbar dans outlook
express?

MarcU$

10 réponses

1 2
Avatar
Christian ASTOR
MarcU$ a écrit:
Est qui en aurais qui serais comment ajouter une toolbar dans outlook
express?



WH_GETMESSAGE et/ou WH_CBT hook (DLL)
Avatar
MarcU$
"Christian ASTOR" wrote in message
news:3fe89781$0$6970$
MarcU$ a écrit:
> Est qui en aurais qui serais comment ajouter une toolbar dans outlook
> express?

WH_GETMESSAGE et/ou WH_CBT hook (DLL)




pour l'interception des message c'est fait.
Mais pour ajouter une band dans la rebar de outlook, comment puis-je faire
ça?
Je croyais pouvoir en ajouter une seulement en créant une toolbar par un
autre app. et en l'ajoutant a la rebar de OE, mais sa l'air que c'est pas
aussi simple qu'un getmenu, quelqu'un a une idée?

MarcU$
Avatar
Christian ASTOR
MarcU$ a écrit:

Mais pour ajouter une band dans la rebar de outlook, comment puis-je faire
ça?



Ben RB_INSERTBAND.
Avatar
MarcU$
"Christian ASTOR" wrote in message
news:3fe96397$0$6972$
MarcU$ a écrit:

> Mais pour ajouter une band dans la rebar de outlook, comment puis-je


faire
> ça?

Ben RB_INSERTBAND.




Je les fait mais sa fonctionne pas a tout les coup et quand sa fonctionne
j'ai pas de bouton dans ma toolbar alors qui devrait en avoir 4.

MarcU$
Avatar
Christian ASTOR
MarcU$ a écrit:

Ben RB_INSERTBAND.





Je les fait mais sa fonctionne pas a tout les coup et quand sa fonctionne
j'ai pas de bouton dans ma toolbar alors qui devrait en avoir 4.



"Pas à tout les coups" ?
C'est pas "informatique" ça.
Ou ça marche tout le temps, ou jamais.
Chez moi, c'est tout le temps.
Une fois qu'on a fait le PostThreadMessage() et qu'on est donc ds l'esp.
d'adressage de OE, on fait tout ce qu'on veut...
Avatar
MarcU$
Je me suis jamais servi de PostThreadMessage().
Sa doit être sa le problème, moi je me servais de SendMessage pour envoyer
le RB_INSERTBAND.
Comment je fait pour aller chercher le thread de OE?

Marc

"Christian ASTOR" wrote in message
news:3fe9a334$0$6974$
MarcU$ a écrit:

>>Ben RB_INSERTBAND.

> Je les fait mais sa fonctionne pas a tout les coup et quand sa


fonctionne
> j'ai pas de bouton dans ma toolbar alors qui devrait en avoir 4.

"Pas à tout les coups" ?
C'est pas "informatique" ça.
Ou ça marche tout le temps, ou jamais.
Chez moi, c'est tout le temps.
Une fois qu'on a fait le PostThreadMessage() et qu'on est donc ds l'esp.
d'adressage de OE, on fait tout ce qu'on veut...



Avatar
MarcU$
Et est ce que je doit mettre ma toolbar dans un thread?

Marc

"Christian ASTOR" wrote in message
news:3fe9a334$0$6974$
MarcU$ a écrit:

>>Ben RB_INSERTBAND.

> Je les fait mais sa fonctionne pas a tout les coup et quand sa


fonctionne
> j'ai pas de bouton dans ma toolbar alors qui devrait en avoir 4.

"Pas à tout les coups" ?
C'est pas "informatique" ça.
Ou ça marche tout le temps, ou jamais.
Chez moi, c'est tout le temps.
Une fois qu'on a fait le PostThreadMessage() et qu'on est donc ds l'esp.
d'adressage de OE, on fait tout ce qu'on veut...



Avatar
Christian ASTOR
MarcU$ a écrit:
Je me suis jamais servi de PostThreadMessage().
Sa doit être sa le problème, moi je me servais de SendMessage pour envoyer
le RB_INSERTBAND.
Comment je fait pour aller chercher le thread de OE?



Mais tu disais utiliser un WH_GETMESSAGE hook.
C'est une méthode classique pour bidouiller des fenêtres d'autres
processes (les subclasser, en créer d'autres, etc..)
Elle est notamment décrite ds le Richter.
On récupère le Thread Id par FindWindow()-FindWindowEx(), ... (ici par
ex "Outlook Express Browser Class", "SizableRebar", "ReBarWindow32")
puis GetWindowThreadProcessId() et on envoie un message perso (WM_USER +
x) par PostThreadMessage() juste après le SetWindowsHookEx().
Ds la GetMsgProc() de la DLL, on intercepte WM_USER + x et c'est là
qu'on fait tout le traitement (ici création Toolbar + RB_INSERTBAND)
Avatar
MarcU$
"Christian ASTOR" wrote in message
news:3fe9e292$0$6966$
MarcU$ a écrit:
> Je me suis jamais servi de PostThreadMessage().
> Sa doit être sa le problème, moi je me servais de SendMessage pour


envoyer
> le RB_INSERTBAND.
> Comment je fait pour aller chercher le thread de OE?

Mais tu disais utiliser un WH_GETMESSAGE hook.
C'est une méthode classique pour bidouiller des fenêtres d'autres
processes (les subclasser, en créer d'autres, etc..)
Elle est notamment décrite ds le Richter.
On récupère le Thread Id par FindWindow()-FindWindowEx(), ... (ici par
ex "Outlook Express Browser Class", "SizableRebar", "ReBarWindow32")
puis GetWindowThreadProcessId() et on envoie un message perso (WM_USER +
x) par PostThreadMessage() juste après le SetWindowsHookEx().
Ds la GetMsgProc() de la DLL, on intercepte WM_USER + x et c'est là
qu'on fait tout le traitement (ici création Toolbar + RB_INSERTBAND)




Ça fait un bout que je cherche comment faire.

Voici ma petite histoire passionnate, faut dire qu'au début je connaisait
rien de tout ça.

Au début j'ai découvert un code qui modifiait msn messenger avec un hook
WH_CBT pour détecter quand la fenêtre étais créé. Le code modifiait le menu
avec GetMenu() et le menu système avec GetSystemMenu().

J'ai donc cru qu'il étais possible de faire la même chose avec OE et la
toolbar. Donc j'ai déduit que sa me prenait la class name de OE que j'ai
obtenue avec WindowFromPoint() et à partir de la j'ai pu obtenir toute les
child de OE par EnumChildWindows ce qui ma permi de connaitre les rebar
ReBarWindow32 et les toolbar ToolbarWindow32.

Alors j'ai appris a construire une rebar avec
CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME... et a créé des toolbar par
CreateToolbarEx() et a inséré cette toolbar par SendMessage(hWndRB,
RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
Ce qui ma pris du temp a cause de REBARBANDINFO que je configurait mal.

A partir du moment ou j'ai réusit dans une application a créé une rebar, des
toolbar et a les ajouter dans ma rebar par RB_INSERTBAND, je croyait que je
pouvait tout simplement ajouter dans OE une toolbar à partir de mon
application qui n'est pas une dll mais un exe dans OE par
SendMessage(hWndRBOE, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand), c'est la
que sa fonctionnait seulement de temp a autre et quand sa fonctionnait ma
toolbar était vide.


Alors aujourd'huit j'en suis a une nouvelle découverte et c'est:
GetWindowThreadProcessId() et PostThreadMessage()
Donc j'imagine qua partir du handle de OE je peut obtenir le Thread par
GetWindowThreadProcessId et envoyer ma toolbar par PostThreadMessage().
Ce sont donc les dernière pièce du puzzle qui me manquait pour arriver a mon
objectif.

Merci pour cette info, je sent que je vais avoir beaucoup de plaisir a
tester cela.

Il me reste 3 questions:
Est-il possible de faire ça avec un EXE ou dois-je absolument passer par une
DLL?
Qui est où qu'est ce que Richter?
A quoi peu servir la SizableRebar dans l'ajout d'une toolbar?


MarcU$
Avatar
Christian ASTOR
MarcU$ a écrit:

Est-il possible de faire ça avec un EXE ou dois-je absolument passer par une
DLL?



Faut passer par une DLL (une adresse ds un process n'a pas de
signification ds l'esp. d'adr. d'un autre process)
Indispensable aussi pour subclasser & intercepter les messages générés
par la Toolbar ajoutée.

Qui est où qu'est ce que Richter?



Google si on sait pas.
"Programming Applications for Microsoft Windows, Fourth Edition", la
réf. pour tout ce qui est processes, threads, objets de synchro & Cie.

A quoi peu servir la SizableRebar dans l'ajout d'une toolbar?



A rien, elle est juste ds la hiérarchie des fenêtres de OE (Spy++)
1 2