Autoscan d'une DLL [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Autoscan d'une DLL [Résolu]

Message par Kwai chang caine »

Bonjour à tous

Croyez vous qu'il soit possible qu'une DLL s'autoscan :roll:
C'est à dire qu'on lui demande ce qu'elle a dans le ventre et elle nous retourne touts ses petits enfants procedure dans un tableau puisqu'elle ne peut retourner qu'un resultat.

Merci
Bonne journée
Dernière modification par Kwai chang caine le mer. 26/sept./2007 14:29, modifié 1 fois.
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

dans le temps ( window95/98 ) la fonction aperçu du menu contextuel permetait de lister les fonctions d'une dll

à moins que ce soit une dll écrite par toi et qui contient un code d'interrogation et si t'en est que ce soit possible , alors pourquoi pas...

pour les dll déja "toute faite" ???

pat
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je te remercie de ta reponse.
Comme tu me dit que c'est possible, J'ai cherché et je suis retombé sur un code de FLYPE et de LIONEL_OM et cpl.bator que j'ai bidouillés :

Code : Tout sélectionner

; Retour dans un tableau des fonction de la DLL appelée
; Codé par Kwai chang caine avec l'aide des codes de :
;  - Flype (Procedure atachprocess) Nom et chemin de la DLL
;  - Lionel_om (ExamineLibraryFunctions) Lister les fonctions de la DLL
;  - Cpl.bator ( ProcedureReturn Tab$()) Retour d'un tableau venant d'une procédure


; Partie à compiler en DLL : "c:\essai.dll"

ProcedureDLL AttachProcess(Instance) 

 Global Full_path.s 
 Full_path = Space(100) 
 GetModuleFileName_(Instance, @Full_path, 100) 
     
EndProcedure 

ProcedureDLL.l ListingFonctionsDll() 
 
 Global Dim Tab$(10) 
 OpenLibrary(1,Full_path) 
 ExamineLibraryFunctions(1)

 While NextLibraryFunction()
  i = i + 1
  Tab$(i) = LibraryFunctionName()
 Wend
 
 ProcedureReturn Tab$() 
 
EndProcedure

ProcedureDLL PremiereProcedureDll()

EndProcedure

ProcedureDLL DeuxiemeProcedureDll()

EndProcedure

Procedure TroisiemeProcedure()

EndProcedure

; Partie à compiler dans en exe ou bien démarrer de l'IDE

Dim tablo.s(5) 

If OpenLibrary(0, "c:\Essai.dll")
 
 AdresseTablo.l = CallFunction(0, "ListingFonctionsDll") 

 For element = 1 To 3 
  *Ptr = PeekL(AdresseTablo + (element * 4)) 
  Ligne$ = PeekS(*Ptr) 
  Debug Ligne$ 
 Next 

 CloseLibrary(0) 

EndIf
Y'a surement plus simple comme dab, si ça dit à quelqu'un de le simplifier :oops:

Encore merci de ton aide patrick88 :wink:
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

euh ! :?

et pour les dll qui sont pas créer par toi , comment tu fais ?

penses tu qu'il soit possible de coller un exe "visualisateur" à la fin de la dll et un exe "choix" au début ?

genre : pas de paramétre la dll "fonctionne normalement"
un paramêtre ou renommer en exe , elle liste ces "procedure"

hein, dit , hein hein ? pas chiche !

pat
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Po po po dit !!!!!!
Tu veux ma mort .

T'as vu le temps qu'il m'a fallu pour pondre un oeuf de caille, et toi tu me demande de faire l'autruche avec mon petit derriere tout neuf :lol:

Attend..... le debutant c'est toi ou c'est moi :D

Je sais meme pas comment elle fonctionne les DLL des autres :oops:
Comment tu veux que j'y insere quoi que ce soit sans y mettre le feu :cry:

Tu t'es trompé moi c'est Hong Kong Code à Chier, c'est à mon roi qui faut demander ça pas à son bouffon :D
Sincerement, si j'avais la moindre idée de comment "QuiFoFaire", comment que je me la "peterai" à afficher 3 pages de codes :D

Mais bon, au moins l'avantage de mon niveau, c'est que "normalement" on me demande rien à moi. :D

Ah si .......

+
+
+
+
+
+
+
+

Parfois, de me taire :D
Répondre