APPELER UNE API EN ASM AVEC DELPHI

Signaler
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
-
Messages postés
2
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
19 novembre 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31157-appeler-une-api-en-asm-avec-delphi

Messages postés
2
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
19 novembre 2010

Bonjour ,
a propos du non fonctionnement de iflags ,cette
variable doit etre sur le premier push.
Le 4eme push serait le numero de fenetre /??
N'oublie pas le probleme des icones et attention aux codes
interdits .
Bon courage
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Salut DeadlyPredator. J'ai une petite remarque.

Sachant que Kernel et compagnie sont déjà chargés automatiquement par l'application, je ne pense pas qu'il soit nécessaire de les recharger. Autant utiliser directement l'opérateur Arobase pour récupérer l'adresse de la procédure désirée.

Exemple:

program Project1;
uses Windows, SysUtils, Dialogs;
{$R *.res}

var TickAsm, TickPascal : integer;
Address : Pointer;
begin
//APPEL EN ASSEMBLEUR
Address:=@GetTickCount;
asm
CALL Address
MOV TickAsm, EAX
end;

//APPEL EN PASCAL
TickPascal:=GetTickCount;

//LES DEUX RESULTATS SONT PAREILS
ShowMessage(Format('%d = %d',[TickAsm, TickPascal]));
end.

Cela dit le code est bon. C'est juste une autre manière de faire.