base de registre, modifier clic droit sur les fenetres - Divers - Programmation
Marsh Posté le 28-06-2005 à 17:07:19
Yop, j'avais pas vu ton topic
Bon alors à mon avis, oui, c'est faisable puisque plein de softs le font (au hasard, prends un fichier d'aide de type .chm et ouvre-le : tu verras 2 items supplémentaires). Comment, j'en sais trop rien mais ça doit pouvoir se trouver assez facilement sur des sites comme thecodeproject.com ou codeguru.com.
Mate aussi dans Google avec des mots-clés comme "context menu" ou "title bar".
Marsh Posté le 28-06-2005 à 17:10:03
jsais pas non plus mais je pense pas que ca soit dans le registre
Marsh Posté le 28-06-2005 à 17:14:28
Ouais non, pas de registre mais plutôt du côté code de l'appli en faisant appel à l'API Win32 (p'têt en C# avec WinForms ?). Ca doit pouvoir se trouver
Marsh Posté le 28-06-2005 à 17:14:50
ouais mais j'ia l'impression qu'il veut parasiter un menu d'une appli pas a lui
Marsh Posté le 28-06-2005 à 17:17:24
Taiche a écrit : Yop, j'avais pas vu ton topic |
j'ai googlé comme un dingue et j'ai rien trouvé, à part changer les titre dans la barre de tire d'internet explorer et windows media player . Sinon pour le fichier d'aide je vais regarder des exemples, mais dans ce cas la le code sera fait pour la fenetre en question, or moi je voulais le faire pour toute les fenetres ouvertes... c'et pourquoi je volais passer par la base de registre. je vais regarder aussi sur codeguru.com je ne connaissais pas
Marsh Posté le 28-06-2005 à 17:17:32
chrisbk a écrit : ouais mais j'ia l'impression qu'il veut parasiter un menu d'une appli pas a lui |
Yup, et je doute que ça soit faisable de marnière raisonnablement facile.
Sinon, ça a l'air plutôt simple à faire de tripatouiller le menu système de sa propre appli (HTSYSMENU de son petit nom).
http://blogs.msdn.com/oldnewthing/ [...] 55461.aspx
Marsh Posté le 28-06-2005 à 17:18:32
chrisbk a écrit : ouais mais j'ia l'impression qu'il veut parasiter un menu d'une appli pas a lui |
exacte je veux le faire pour toute les fenetres
Marsh Posté le 28-06-2005 à 17:19:49
heuh bin la je sais pas du tout. Ptet regarder du coté des hook si y'a qqchose a faire...
Marsh Posté le 28-06-2005 à 17:22:23
neg'gwada a écrit : exacte je veux le faire pour toute les fenetres |
Ah ouais non là spa gagné Bin bon courage, stu trouves un truc pour le faire hésite pas à poster la soluce
Marsh Posté le 28-06-2005 à 18:09:08
ReplyMarsh Posté le 28-06-2005 à 19:00:57
sans déconner.. rien qu'une bande d'amateurs ici... retournez donc faire du Java ou du C, et laisser les pros répondre
donc, pour répondre à neg, il est parfaitement possible de modifier le menu de la fenêtre (aussi appelé System Menu). il faut pour cela passer par Win32.
il faut en fait récupérer le handle de ce menu via la fonction GetSystemMenu. cette fonction renvoie un HMENU, que l'on pourra utiliser par la suite pour ajouter ou enlever des items.
ensuite, c'est tout con : pour enlever des items, on utilise la fonction RemoveMenu(), et pour en rajouter on utilise AppendMenu(), InsertMenu(), etc... comme on le ferait pour n'importe quel menu.
ces fonctions sont décrites dans la MSDN. si t'as des soucis pour les utiliser, bippe moi, je dois avoir un ou deux sources qui trainent sur mon dur
Marsh Posté le 28-06-2005 à 19:24:08
Putain mais Harko, lis tout le topic avant de répondre à côté comme une tanche
Marsh Posté le 28-06-2005 à 19:41:15
ok, j'ai un peu répondu (presque) à coté, mais je reste persuadé qu'avec un hook global c'est faisable
laissez moi la soirée pour lui coder un truc dans ce sens
Marsh Posté le 28-06-2005 à 19:42:35
vala, occupe toi comme ca et revient nous voir avec du solide
Marsh Posté le 29-06-2005 à 09:29:47
et c'est fait
je poste le code ce soir
à moins que l'ami neg ne veuille le faire lui même ? je lui donne quelques pistes :
- dans un hook global, il faut intercepter le message WM_INITMENU
- attention, car en interceptant ce message, on intercepte TOUS les menus. faut bien faire gaffe à n'intercepter que le menu système (voir pour ça lParam)
- ensuite, intercepter la commande de menu (WM_SYSCOMMAND)
et puis voilà
Marsh Posté le 29-06-2005 à 10:38:42
Eh bin voilà, tu vois que tu peux répondre pile à la question, quand tu veux
Colle le code à l'occasion, ça pourra p'têt servir plus tard
Marsh Posté le 29-06-2005 à 10:42:55
Harkonnen a écrit : et c'est fait |
vi vi colle le code , meme si j'ai pas encore pigé ce que tu as fait
Marsh Posté le 29-06-2005 à 17:44:40
ben je posterais le code, mais si tu piges rien, ça sert strictement à rien hein
Marsh Posté le 30-06-2005 à 14:01:49
désolé, mais j'ai pas pu poster hier soir, because maj de ma livebox qui devait durer 10 mn, mais qui a finalement duré 2h
je poste ce soir
Marsh Posté le 30-06-2005 à 14:20:54
tu verras bien
Marsh Posté le 30-06-2005 à 14:27:40
n'empeche que c'est du code de kalitay, mélange C/C++, MFC et tout
Marsh Posté le 30-06-2005 à 14:33:24
Harkonnen a écrit : n'empeche que c'est du code de kalitay, mélange C/C++, MFC et tout |
ca existe encore
nan mais t'inquiete, meme si c'est difficile je vais apprendre, justement je suis en vacance donc j'en profite pour appronfondir mes connaissances (légères) en programmation.
Marsh Posté le 30-06-2005 à 14:37:10
neg'gwada a écrit : ca existe encore |
et encore, estime toi heureux, j'étais parti pour le faire en assembleur Win32 avec masm32, mais tu l'aurais eu la semaine prochaine
Marsh Posté le 30-06-2005 à 14:39:02
Harkonnen a écrit : et encore, estime toi heureux, j'étais parti pour le faire en assembleur Win32 avec masm32, mais tu l'aurais eu la semaine prochaine |
ca ira merci, finalement le MFC c'est pas si mal
Marsh Posté le 30-06-2005 à 14:43:35
roo, spas si imbuvable en assembleur hein
tiens, je le ferais pendant mes congés, histoire que tu te rendes compte
(non, j'aurais pas de vie pendant mes congés et je vous emmerde )
Marsh Posté le 30-06-2005 à 23:36:53
voila le travail !
le source : http://harko.free.fr/hfr/menusrc_VS2k3.zip (compilable avec VS2003)
l'executable et la librairie MFC : http://harko.free.fr/hfr/menu.zip
pour le source, la solution principale est dans le répertoire menu. le répertoire hookmenu contient la dll qui patche le menu système, et fait partie de la solution menu.
y'a qques bugs qui trainent (il faut cliquer 2 fois sur la fenêtre pour que le nouvel item de menu apparaisse, et quand on clique sur cet item, le message apparait 2 fois), mais facilement corrigibles. ce truc est codé à l'arrache comme un porc, il y a un meilleur endroit que le WM_INITMENUPOPUP pour initialiser le menu (en Win32, dans le DLL_PROCESS_ATTACH), mais j'ai jamais fait de dll en MFC, alors pardon hein
éclatez vous les kids
Marsh Posté le 01-07-2005 à 13:19:16
bon alors, c'est ce que tu voulais ?
Marsh Posté le 01-07-2005 à 15:05:30
trop ienb tu es un boss, en plus j'aurai appris ce qu'est le hook, je te commande deux putes croates pour te remercier .
Au fait question, si par exemple j'ai un programme qui tourne en fond genre dans mon tray, et j'aimerai intercepter un raccourci clavier qui ferai une tache dans mon programme, ca passe par les hooks ou bien par autre chose genre évenements?
Marsh Posté le 01-07-2005 à 18:08:38
neg >> si tu te sens de corriger le bug qui affiche 2 fois la messagebox, je te donne une piste : le wParam du hook contient un flag qui, s'il est sur PM_NOREMOVE, laisse le message sur la file des messages, même s'il a déjà été traité (et il sera donc traité une nouvelle fois)
je t'ai tout dit là
Marsh Posté le 01-07-2005 à 18:57:55
Et pour le bug de l'item qui n'apparait qu'au deuxieme coup ?
Nan j'dis ca, c'est parceque allways-on-top a le bug, alors si ya un moyen simple de se refaire le soft pour ne pas avoir le bug...
Marsh Posté le 01-07-2005 à 21:26:56
c'est quoi always-on-top ?
Marsh Posté le 27-06-2005 à 03:27:31
Salut je cherche quelle clé registre modifier pour pouvoir ajouter une fonctionalité au clic droit sur le haut des fenetres?
Par exemple je voudrais rajouter une ligne MonProgramme qui (au clic) va executer un programme, mais j'aimerai aussi récupéré le handle de la fenetre en quetsion mais ca c'est moins dure.
Merci d'avance
Message édité par neg'gwada le 28-06-2005 à 16:49:08
---------------
--- WinSplit Revolution ---