Appeler des apis sans programmation jni

Description

Ce code permet d'appeler une API windows, seulement en appelant une seule fonction que j'ai créé en JNI. Son utilisation est assez simple quoique un peu délicate. Ne supporte pas encore les structures mais à venir.

Conclusion :


Ce code résume tout:
try {
Object[] params = {new Integer(0), "allo", "xxx", new Integer(3)};
String[] types = {"int", "string", "string", "int"};
System.out.println(DPsAPICaller.callAPI("User32.dll", "MessageBoxA", params, types, 4));
} catch (Exception e) {
e.printStackTrace();
}

La fonction doit être dans un try. Vous devez
1- créé un tableau D'OBJECTS contenant CHAQUE paramètre
2- créé un tableau de STRINGS contenant le type de chaque paramètres en minuscule
vous pouvez aussi passez un pointeur 32bits avec le type ptr. j'ai ajouter cela car je vais faire une source qui va créer des structures dans la mémoire et donner leur pointeur car bien des apis marchent avec des structures.
3- appeler DPsAPICaller.callAPI avec chaque paramètre ET INDIQUEZ VOUS MÊME LE NOMBRE DE PARAMÈTRES. Le tableau peut contenir plus de paramètres que le nombre indiqué.

Les types suivant sont à tester car ils sont en warning:
char
byte
boolean

Il est possible qu'il faut les passer en autre chose avec l'assembleur

byte n'est pas encore implenté

ATTENTION!!! SI JAMAIS VOUS NE DONNEZ PAS LE BON NOMBRE DE PARAMÈTRES POUR L'API, LE STACK NE VA PAS AIMEZ ÇA ET CELA VA CRÉER UN CRASH DU PROGRAMME.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.