IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

MessageBox : questions ?


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut MessageBox : questions ?
    Bonjour,

    -1-
    Je cherche quelle est la constante "chaîne" en MASM32 du MsgBox qui lui dit par défaut de se positionner à un des boutons (en vb c'est VBdefaultButton1, 2, 3) ?

    -2-
    D'une façon plus générale, comment avoir toutes les constantes MASM32 chaînes d'un objet comme sus-cité ?

    -3-
    Dans le code ci-dessous qui n'est pas terminé, le MsgBox ne répond pas si on tente de le fermer avec sa croix system (croix rouge du coin Nord-Est) [X], que faire pour que ce bouton soit actif ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    .386  ; programme un.asm : appel msgbox
    .model flat, stdcall
    option casemap:none
     
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\kernel32.lib
    include \masm32\include\user32.inc
    includelib \masm32\lib\user32.lib
     
    .data
    MsgBoxCaption db "Programme un",0
    MsgBoxText db "Voulez-vous", 13, 10, "Lancer ce programme  ",0
     
    .code
    start:
    invoke MessageBox, 0, 
    addr MsgBoxText, 
    addr MsgBoxCaption, 
    MB_YESNO + MB_ICONQUESTION
    invoke ExitProcess, 0
    end start
    Merci, cordialement.

    Joe.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 193
    Par défaut
    D'une manière générale, lorsqu'on utilise une fonction API ,comme messagebox,toutes les réponses se trouvent sur msdn en passant juste le nom de la fonction à google.
    http://msdn.microsoft.com/en-us/libr...05(VS.85).aspx
    Si la réponse n'y est pas , la fonction ne le fait pas

  3. #3
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut MessageBox : comment récupérer la réponse ?
    Bonjour,

    Ah, ça avance mais très lentement, maintenant je voudrais savoir comment récupérer la réponse faite à un messageBox, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    ; programme un.asm : appel msgbox
     
    .386  
    .model flat, stdcall
    option casemap:none
     
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\kernel32.lib
    include \masm32\include\user32.inc
    includelib \masm32\lib\user32.lib
     
    .data
    MsgBoxCaption db "Programme un",0
    MsgBoxText db "Voulez-vous", 13, 10, "Lancer ce programme  ",0
     
    .code
    start:
    invoke MessageBox, 0, addr MsgBoxText, addr MsgBoxCaption, MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2
     
    invoke ExitProcess, 0
    end start
    Alors en fait ce qui m'intéresse ici, c'est de savoir ce qui a été répondu évidemment, mais le savoir pas seulement faire un débranchement à une adresse ou sortir, donc je vais schématiser en VB ce que je voudrais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if vbYes (MB_YES IDYES ?) <> True then invoke ExitProcess, 0
    ' BEEP ' pour savoir que c'est ok, car je ne vais pas faire un second MsgBox pour dire ce que fais le premier :cry:
    ; la suite du code sera de facto ici en séquence ...
    invoke ExitProcess, 0
    end start
    Ben je vous remercie beaucoup, cordialement.

    Joe.

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Plusieurs sorte de traitements sont possibles.

    Haut Niveau (.if / .else / .endif)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	invoke MessageBox, 0, addr MsgBoxText, addr MsgBoxCaption, MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2
    	.if eax == IDOK
    		invoke MessageBeep,0FFFFFFFFh
    	.else
    		invoke ExitProcess, 0
    	.endif
    ou l'inverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	invoke MessageBox, 0, addr MsgBoxText, addr MsgBoxCaption, MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2
    	.if eax == IDCANCEL
    		invoke ExitProcess, 0
    	.endif
     
    	invoke MessageBeep,0FFFFFFFFh
    'bas niveau' (cmp)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	invoke MessageBox, 0, addr MsgBoxText, addr MsgBoxCaption, MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2
    	cmp eax, IDOK
    	jz @@IDOK
    	; cancel
    		invoke ExitProcess, 0	
    @@IDOK:	
    	invoke MessageBeep, 0FFFFFFFFh

  5. #5
    Inactif
    Homme Profil pro
    Auteur logiciels et romans
    Inscrit en
    Février 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auteur logiciels et romans
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2009
    Messages : 203
    Par défaut Question résolue
    Bonjour,

    N'ayant pas de beep sur mon pc notebook je mets cette question comme résolue.

    Merci aux contributeurs, cordialement.

    Joe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2011, 10h25
  2. question de messageBox
    Par Mickey.jet dans le forum Delphi
    Réponses: 5
    Dernier message: 09/06/2006, 19h19
  3. [MessageBox] question
    Par pitit777 dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 08/04/2006, 00h10
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo