guida sulle API

Stato
Discussione chiusa ad ulteriori risposte.

Oromis92

Utente Silver
22 Dicembre 2007
102
12
2
84
salve.
mi servirebbe una guida che spieghi per bene le API di Windows, orientata verso la programmazione in assembly

cercando su google non trovo niente di completo e *nulla* che parli anche di asm

thankyou in anticipo
 
ho caricato nel mio ftp, un bel help ecco il link
DOWNLOAD

poi per quanto riguarda l'uso di esse nell'assembler non c'è niente di particolare.
Le api sono universali e possono essere usate praticamente da qualsiasi linguaggio di programmazione PE di windows
non fai altro che richiamare l'api che ti interessa e passargli gli argomenti
ti ricordi il mio esempio sulla guida che sto scrivendo sull'assembler?
Codice:
.486
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib


.DATA ; dati inizializzati
szTitolo db "Predator tutorial",0
szTesto db "Hello World!",0

.CODE
start:
INVOKE MessageBox,NULL,ADDR szTesto,ADDR szTitolo,NULL
INVOKE ExitProcess, NULL

RET

END start
qui richiamo l'api del message box
INVOKE MessageBox,NULL,ADDR szTesto,ADDR szTitolo,NULL
non faccio altro che passare i parametri di cui necessita:

int MessageBox(

HWND hWnd, // handle della finestra (non obbligatorio)
LPCTSTR lpText, // indirizzo di memoria per il testo del messaggio
LPCTSTR lpCaption, // indirizzo di memoria per il titolo
UINT uType // stile del messaggio (tasti e icone...)
);

Preddy
 
ho caricato nel mio ftp, un bel help ecco il link
DOWNLOAD
ho caricato nel mio ftp, un bel help ecco il link
DOWNLOAD

adoro quest'uomo :hail:

per quanto rigurda l'asm, mi aveva incuriosito la tua risposta in un altro topic ("ci vogliono moooolte più righe"....)
ecco, per esempio una messagebox in asm senza includere windows.inc, user32.inc e kernel.inc, come si può fare ?
 
LOL
in pratica dovresti costruirti tutto cio' che invece il kernel ha già di pronto.
oppure simuli una messagebox creandoti lo scheletro nelle risorse,
ma in entrambe i casi ritengo la cosa poco producente, un sacco di righe di codice per nulla e un eseguibile molto più grosso :)

Preddy
 
capisco il tuo interesse, pertanto approfondiamo.
per capirci un messagebox è a tutti gli effetti una finestra di dialogo con titolo, contenuto, con controllo immagini (l'icona info, alert, warning ecc), una label (il testo del messaggio) e da 1 a 3 tasti (si,no,ok,annulla,riprova...) che una volta chiusa ti rilascia un DialogReponse contenente il valore del tasto premuto.
fare una finestra di quel tipo implica parecchio.
potrei farti vedere come creare una finestra cosi' senza utilizzare l'API delle message box, sarebbero circa 50 righe di codice;
pero' implicano in ogni caso l'intervento del kernel, della user32 e indirettamente di ntdll.
MessageBox per quanto semplice possa sembrare è complessa quando una normale finestra di dialogo.
immagina di scrivere un programma in C senza include <stdio.h>
immagini quanto piu' lungo e complicato sarebbe? in assembler lo sarebbe di piu' :)
 
Stato
Discussione chiusa ad ulteriori risposte.