probleme asm

Tout sur les langages de programmation.

probleme asm

Messagepar newbie » 03 Septembre 2006, 20:38

Salut à tous,

je débute en asm et j'ai un petit problème:

je souhaite donner une fonction à un bouton pour que lorque je clique dessus il' m'ouvre une fenetre du style about !

voici mon code

;This Resource Script was generated by WinAsm Studio.

#include "resource.h"

#define IDC_ABOUT 1000
#define IDC_SITE 1004
#define IDC_STATIC -1

newbie_ABOUT DIALOGEX 0,0,315,89
CAPTION " about newbie . . . "
FONT 10,"Arial"
CLASS "newbie_CLASS"
STYLE 0x90c80880
EXSTYLE 0x00000000
BEGIN
CONTROL "Site",IDC_SITE,"Button",0x10020000,97,35,100,13,0x00020000
CONTROL "",IDC_STATIC,"Button",0x10000007,2,65534,311,89,0x00000000
END


J'ai déja créer le bouton dans ma fenetre principale mais lorsque je compile mon prog et que j'ouvre mon exe, le bouton est créé mais quand je cliques dessus, rien ne se passe !

quelq'un a une idée ou un exemple simple pour commander ou activer ou donner une fonction à un bouton?

d'avance merci
Dernière édition par newbie le 03 Septembre 2006, 20:59, édité 1 fois.
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar Guetta » 03 Septembre 2006, 20:56

Goldo_ABOUT


C'est quoi ça ?

...
Dernière édition par Guetta le 03 Septembre 2006, 21:14, édité 1 fois.
Guetta
Possédé par les forces occultes du crack
Possédé par les forces occultes du crack
 
Messages: 663
Inscription: 20 Janvier 2006, 19:50

kesako

Messagepar newbie » 03 Septembre 2006, 21:00

kesako

c'est quoi cette fonction goldo?

je ne vois pas cela dans l'aide.

j'ai télécharger des exemples, et je ne comprends pas pourquoi dans un on utilise un fichier resource pour ouvrir une fenetre alors que dans un autre tout est dans le fichier asm?

merci de m'éclairer
Dernière édition par newbie le 03 Septembre 2006, 21:03, édité 1 fois.
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar Guetta » 03 Septembre 2006, 21:02

Ici dans le bout de code que tu montre:

Goldo_ABOUT DIALOGEX 0,0,315,89

et que tu vien de remplacer par :

newbie_ABOUT DIALOGEX 0,0,315,89


...
Dernière édition par Guetta le 03 Septembre 2006, 21:16, édité 2 fois.
Guetta
Possédé par les forces occultes du crack
Possédé par les forces occultes du crack
 
Messages: 663
Inscription: 20 Janvier 2006, 19:50

exemple

Messagepar newbie » 03 Septembre 2006, 21:06

dans les exemples que j'ai téléchargé, j'ai regardé ce code et j'essaye de recoder moi même en regardant ce que cela fait mais c'a n'a rien à voir avec une fonction! et griller quoi?
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar Guetta » 03 Septembre 2006, 21:09

Laisse tomber cela n'a rien avoir avec une fonction,
je pensais parler avec un ex-pote.

Si le code n'est pas de toi je comprend mieux.

++
Guetta
Possédé par les forces occultes du crack
Possédé par les forces occultes du crack
 
Messages: 663
Inscription: 20 Janvier 2006, 19:50

perdu

Messagepar newbie » 03 Septembre 2006, 21:12

je suis déjà dans la choucroute et là je ne comprends plus rien !

je vais recommencer, j'ai du louper quelque chose.

En fait j'arrive à créer mon bouton,

je n'arrive pas à lui faire faire quelque chose!

si c'est plus clair comme cela

En fait je n'arrive pas a lui faire ouvrir ma fenetre en cliquant dessus.

Je n'ai pas trouvé d'exemple simple avec une fenetre avec un seul bouton qui ouvre une autre fenetre.

Si il y en a un qui a cela, je suis preneur.
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar Squallsurf » 04 Septembre 2006, 07:52

Ton fichier ressource est valide, mais ce n'est pas dans le fichier ressource qu'on associe une fonction à un boutton, ou à n'importe quoi,c'est dans le fichier asm. D'ailleurs, le mieux serais de lire les cours d'iczelion traduit en français(si tu as du mal avec l'anglais) par morgatte:

va faire un tour du coté de:
Code: Tout sélectionner
http://membres.lycos.fr/w32assembly/ace/iczelion/_Blob3.0.ace


Tu auras ta réponse, et en plus, tu seras passé par ne des meilleurs portes pour commencer ;)



Amicalement, Squallsurf
w00tz
Avatar de l’utilisateur
Squallsurf
King of Cracking
King of Cracking
 
Messages: 848
Inscription: 27 Février 2006, 16:14

cours

Messagepar newbie » 04 Septembre 2006, 08:22

merci pour ce lien que je n'ai pas,

j'ai déjà progressé mais je vais lire ce cours pour perfectionner.

merci
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

progrès

Messagepar newbie » 04 Septembre 2006, 19:45

Re,

pour les bases, c'est ok

j'ai un autre problème, je voudrais qu'un bouton que je détermine serve à ouvrir un site web.

j'ai trouvé "Call ShellExecute" mais je ne comprends pas les paramètres à lui ajouter.

J'ai regardé sur le site de winasm mais rien en exemple pour m'aider.

si il y a un tuto que je n'ai pas, cà serait gentil

Mon fichier resource

[/quote];This Resource Script was generated by WinAsm Studio.

#include "\masm32\include\resource.h"

#define IDC_SITE 1000
#define IDB_BITMAP 103

#define IDC_STATIC -1

IDB_BITMAP BITMAP DISCARDABLE "logo.bmp"
200 ICON DISCARDABLE "icon.ico"

1000 DIALOGEX 10,10,237,89
CAPTION "Form1"
FONT 8,"Arial"
STYLE 0x90c80804
EXSTYLE 0x00000000
BEGIN
CONTROL IDB_BITMAP,IDC_STATIC,"Static",0x1000100e,10,9,81,72,0x00000000
CONTROL "&Exit",1001,"Button",0x10000000,183,71,51,15,0x00000000
CONTROL "Site",IDC_SITE,"Button",0x10000000,123,14,100,13,0x00020000


END

la partie de mon fichier .asm



WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.const
IDC_SITE equ 1000
IDB_BITMAP equ 103
IDC_STATIC equ -1

.DATA
Shellsite db "http://www.free.fr",0

.code
WndProc proc hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD


.if uMsg == WM_INITDIALOG
invoke LoadIcon,hInstance,200
invoke SendMessage,hWnd,WM_SETICON,1,eax

.ELSEIF eax==IDC_SITE
Push SW_SHOWNORMAL
Push 0
Push 0
Push offset Shellsite
Push 0
Push hWnd
Call ShellExecute


si sa saute aux yeux de quelqu'un? j'essaye différent truc mais mon bouton n'ouvre toujours pas le site web en question
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar skirby » 04 Septembre 2006, 23:46

Je crois que ça m'a sauté aux yeux.
Il faut spécifier l'action à mener sur
Push 0
Push hWnd
Call ShellExecute

Tu dois mettre push sAction avec sAction = "open"

exemple:
ShellExecute(0, "open", "http://www.google.fr", NULL, NULL, SW_SHOWNORMAL);
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

presque

Messagepar newbie » 05 Septembre 2006, 08:12

Salut Skirby,

merci pour ta réponse, j'ai essayé mais à cette ligne il y a un problème lorsque je compile:

Call ShellExecute,hwnd, "open", "http://www.free.fr", NULL, NULL, SW_SHOWNORMAL'




C:\Documents and Settings\newbie\Bureau\bones\source.asm(64) : error A2046: missing single or double quotation mark in string
C:\Documents and Settings\newbie\Bureau\bones\source.asm(64) : error A2206: missing operator in expression

En Attendant j'y retourne
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar skirby » 05 Septembre 2006, 08:46

Elle me parait bizarre ta ligne.
Déjà ce n'est pas un call mais un invoke que tu doit mettre.

Ensuite, il y a un ' à la fin juste après le SW_SHOWNORMAL

Ensuite je crois qu'il faut faire comme ceci :

; Section data
.data
lpOperation db "open",0
lpPage db "http://www.google.fr",0

; Section code
.code
invoke ShellExecute,hWnd,addr lpOperation, addr lpPage, NULL, NULL, SW_SHOWNORMAL

Dis moi si ça fonctionne.
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

compil

Messagepar newbie » 05 Septembre 2006, 09:12

Maintenant cela compile et crée l'exécutable mais lors du clic sur le bouton il ne fait toujours rien du totu.

je viens de déplacer la ligne de commande avec invokeet maintenant lorsuqe j'ouvre l'exe, il m'ouvre directement la page , donc le problème se situe au niveau de la commande du bouton.

j'y retourne

je viens de modifier en mettant ceci:

.if wParam == IDC_SITE
.elseif eax==IDC_SITE
invoke ShellExecute,hWnd,addr lpOperation, addr lpPage, NULL, NULL, SW_SHOWNORMAL
.endif


et toujours rien comme action avec ce p....n de bouton

Je vais me changer les idées sinon le pc va sortir par la fenetre.
newbie
Visiteur
Visiteur
 
Messages: 21
Inscription: 03 Septembre 2006, 20:33
Localisation: pfffffff

Messagepar skirby » 05 Septembre 2006, 09:43

Je n'avais pas regardé ton code en détail.
En fati il est faux.
Tu ne gères pas correctement les événements sur les objets de ta boite de dialogue.
Pour cela, il faut gérer l'événement WM_COMMAND

Tu dois avoir un truc du genre :

Code: Tout sélectionner
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    .IF uMsg==WM_COMMAND
        mov eax,wParam
        .IF ax==IDC_SITE
            shr eax,16
            .IF ax==BN_CLICKED
                     invoke ShellExecute,hWnd,addr lpOperation, addr lpPage, NULL, NULL, SW_SHOWNORMAL
            .ENDIF
        .ENDIF
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .ENDIF
     xor    eax,eax
    ret
WndProc endp
end start


Rapporte toi au cours d'Iczelion.
Il sont en anglais mais ils sont excellents.
hxxp://win32asm.cjb.net
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Dem0nizer et 2 invités