APPELER UNE API EN ASM AVEC DELPHI

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 31 août 2006 à 10:09
cs_sarko Messages postés 2 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 19 novembre 2010 - 14 sept. 2007 à 14:31
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

cs_sarko Messages postés 2 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 19 novembre 2010
14 sept. 2007 à 14:31
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
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
31 août 2006 à 10:09
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.
Rejoignez-nous