NASM WIN32 & ouverture de fenêtre

dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010 - 28 mars 2010 à 04:59
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010 - 27 déc. 2010 à 02:28
Bonsoir à tous,

utilisant NASM.exe j'aimerai voir la gueule qu'a un bout de code qui se contente juste d'ouvrir une fenêtre Windows sans aucune option de redimensionnement ou autre et qui y place une simple ligne de texte.

Je suis un peu perdu avec les formats .COM .EXE sans entête MZ et .EXE avec entête MZ qui apparement ne lance pas de NTVDM.EXE ...

J'aimerai justement savoir comment coder une appli. NORMALE dont le nom apparait dans le gestionnaire de tâches en m'ouvrant une fenêtre et n'utilisant pas NTVDM.EXE ...

Alors si vous avec un bout de code sous la main qui fait juste ça pour que je comprenne bien ... et bien je serai très content et très reconnaissant

Merci d'avance.

9 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
29 mars 2010 à 02:39
salut,


si tu programme un .com, tu dois le faire comme si c'était un programme DOS.

[ORG 0x100]
[BITS 16]
jmp near code
data:
...
code:
...

si tu veux faire un format PE regarde ça:
http://files.codes-sources.com/fichier.aspx?id=34175&f=PE.asm

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
29 mars 2010 à 03:00
re,


regarde ça aussi:
http://www.phreedom.org/solar/code/tinype/

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
29 mars 2010 à 03:24
re re,


ici, declarations constantes et structures:
http://rs1.szif.hu/~tomcat/win32/win32n.zip
0
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010
29 mars 2010 à 03:29
Merci beaucoup pour ces liens vraiment intéressants
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010
31 mars 2010 à 04:40
Merci et en plus ça marche ...
0
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010
7 avril 2010 à 03:17
Bonsoir,

si quelqu'un peut me dire qu'est-ce qui cloche dans ce code qui est sensé ouvrir une fenêtre, ça compile ça s'éxecute sans erreur, mais ça ne fait rien.

Le "HWND" retourné par la fonction "CreateWindowExA" c'est bien un byte ?

Merci.

import ExitProcess Kernel32.dll		
import CreateWindowExA User32.dll

extern ExitProcess
extern CreateWindowExA

segment code public use32 class = CODE
..start:

push byte 0			; lpParam
push byte 0			; hInstance
push byte 0			; hMenu
push byte 0			; hWndParent
push word 100			; nHeight
push word 100			; nWidth
push word 100			; y
push word 100			; x
push dword 1			; dwStyle
push dword lpWindowName		; lpWindowName
push dword lpClassName		; lpClassName
push dword 1			; dwExStyle
call [CreateWindowExA]

push byte 0
call [ExitProcess]

ret

segment data public use32 class = DATA

lpClassName db "lpClassName", 0
lpWindowName db "lpWindowName", 0
0
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010
22 déc. 2010 à 06:20
Bonjour,

j'ai laissé un peu tout ça en suspens ...
Si quelqu'un peut me donner un coup de main ou indice ...

Thanks a lot
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
22 déc. 2010 à 09:02
salut,

le HWND est un DWORD ou considère le comme tel.

Il faut faire un RegisterClassEx() également pour déclarer une fenêtre principale.

exemple ici

@++
0
dogloop Messages postés 14 Date d'inscription dimanche 28 mars 2010 Statut Membre Dernière intervention 27 décembre 2010
27 déc. 2010 à 02:28
Merci je m'y plonge tout doucement.

Juste une question, n'est-il pas possible d'appeler un simple "CreateWindow" apparemment ?
Serait-elle une sorte de méthode abstraite ?
0
Rejoignez-nous