Précédent   Forum du club des développeurs et IT Pro > Général Développement > Programmation système > Windows
Windows Forum d'entraide sur la programmation Windows. Tutoriel API Windows
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/10/2012, 11h33   #1
frenchsting
Expert Confirmé
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 1 807
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 1 807
Points : 2 945
Points : 2 945
Par défaut Désactiver option menu via API

Bonjour,

je suis plus un habitué du forum windev, mais je viens vers vous car je n'arrive pas à me dépatouiller de l'API EnableMenuItem.
Je cherche à piloter une appli qui tourne sous win2000. Cette partie fonctionne. De plus, on me demande de bloquer certaines fonctions : La croix de fermeture, et les options "Fermer" et "Quitter".
J'ai bien réussi à désactiver la croix, mais je n'arrive pas à griser (ou désactiver) les items du sous-menu "Fichier".
Voici le code que j'utilise (en wlangage de windev) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
hWnd est un entier sans signe = SysFenHandle("Calculatrice") // handle de la fenêtre
nMenu est un entier sans signe
nSousMenu est un entier sans signe
nIdItemSousMenu est un entier sans signe

nMenu = API("USER32","GetMenu",hWnd)  // handle du menu
nSousMenu = API("USER32","GetSubMenu",nMenu,0) // 1° sous menu
nIdItemSousMenu = API("USER32","GetMenuItemID",nSousMenu,1)// 2° item du sous menu = fermer

RetourFonction=API("USER32","EnableMenuItem",nSousMenu ,2,0x0401) // 4 = MF_ByPosition / 1 = MF_Grayed
ou
RetourFonction=API("USER32","EnableMenuItem",nSousMenu ,nIdItemSousMenu ,0x0001) // 0 = MF_BYCOMMAND
Dans les 2 cas, pas d'erreur mais aucun résultat.
Par contre si je fais :
Code :
RetourFonction=API("USER32","EnableMenuItem",nMenu ,2,0x0401) // 4 = MF_ByPosition / 1 = MF_Grayed
Le sous-menu numéro 3 est bien grisé.

Est-ce que quelqu'un peut m'aider là-dessus ?

Merci d'avance pour vos réponses et autres idées.

Note : si vous avez du code en c, c++ ou vb, je m'en sortirai sans problème.
__________________
Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
Pas de question par MP s'il vous plait. Le forum est fait pour cela...

Make it real not fantasy
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 09h06   #2
frenchsting
Expert Confirmé
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 1 807
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 1 807
Points : 2 945
Points : 2 945
J'ai modifié mon code en mettant 0x0403 : 0x0400 = MF_ByPosition / 0x0001 = MF_Grayed / 0x0002 = MF_Disabled.

Cela fonctionne... sans fonctionner...
Je m'explique :
Lorsque je lance une première fois ma procédure, il me renvoie 0, ce qui est l'état initial de mon item de menu (actif).
Lorsque je lance une deuxième fois ma procédure, il me renvoie 3 (MF_Grayed | MF_Disabled), ce qui est l'état dans lequel est mon item puisque je viens de le modifier.
Le seul truc, c'est que mon item est toujours actif et non grisé...
J'ai même mis un drawmenubar(hwnd), mais visuellement et fonctionnellement mon item est toujours actif.
__________________
Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
Pas de question par MP s'il vous plait. Le forum est fait pour cela...

Make it real not fantasy
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2012, 11h18   #3
frenchsting
Expert Confirmé
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 1 807
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 1 807
Points : 2 945
Points : 2 945
Je n'ai pas trouvé la solution que je souhaitais, alors j'en ai utilisé une autre : je supprime les items de menu :
Code :
RetourFonction = API("USER32","RemoveMenu",HandleSousMenu,PositionItem,0x0400)
Je passe en résolu...
__________________
Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
Pas de question par MP s'il vous plait. Le forum est fait pour cela...

Make it real not fantasy
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h25.


 
 
 
 
Partenaires

Hébergement Web