Page 1 sur 1

Liste des Fonctions dll via Presse Papier

Publié : mar. 26/janv./2010 19:55
par kernadec
bonsoir

juste un petit code pour avoir avec les infos d' une bibliothèque dans son code.
Il existe plusieurs codes de ce genre, Mais je n'en ai pas trouvé avec cette option.

cordialement

Code : Tout sélectionner

; ################     kernadec en 01 2010   ################################
; Lecture des fonctions d'une DLL dans un Fichier copié dans le presse papier
; pour coller la liste avec pliage dans son code 
; ##########################################################################
file$ = OpenFileRequester("DLL Fonctions","","Fichier DLL (*.dll)|*.dll|All files (*.*)|*.*",0)
If file$ <> ""
 CreateDirectory("c:\temp-dll\")
If OpenLibrary(0,file$)
If CreateFile(0,"c:\temp-dll\"+GetFilePart(file$) + ".txt")
 WriteStringN(0,";{-Liste de "+Str(CountLibraryFunctions(0))+" Fonctions de la DLL: " + file$) 
 ExamineLibraryFunctions(0)
For i = 1 To CountLibraryFunctions(0)
 NextLibraryFunction()
 WriteString(0,"; "+Str(i)+" :  "):WriteString(0,LibraryFunctionName()):WriteStringN(0,"")
Next
 WriteString(0,";}")
 CloseFile(0)
 
 If ReadFile(0,"C:\temp-dll\"+GetFilePart(file$) + ".txt")          ; exemple lecture data et mise en mémoire de la doc Purebasic
   length = Lof(0)                                                         ; Lit la taille en octets du fichier 
   *MemoryID = AllocateMemory(length)                      ; alloue un bloc mémoire de la taille du fichier
   If *MemoryID
     bytes = ReadData(0, *MemoryID, length)          ; Lit les données du fichier et les place dans le bloc mémoire
    EndIf
   CloseFile(0)
  EndIf

 SetClipboardText(PeekS(*MemoryID,length,#PB_Ascii))        ; transfert de la zone mémoire dans le Presse Papier
  
 DeleteDirectory("c:\temp-dll","*.*")                                    ; on efface le répertoire avec le fichier de fonctions
   
Else
 MessageRequester("  Attention ","Erreur de Fichier")
EndIf:EndIf:EndIf

Re: Liste des Fonctions dll via Presse Papier

Publié : mer. 27/janv./2010 14:57
par Fred
Pourquoi tu passes par un fichier temporaire ?

Re: Liste des Fonctions dll via Presse Papier

Publié : mer. 27/janv./2010 16:11
par kernadec
bonjour FRED
je ne sais pas copié un texte de taille aléatoire en mémoire,
en fait, je n'ai pas cherché non plus à vrai dire.

Cordialement

Re: Liste des Fonctions dll via Presse Papier

Publié : mer. 27/janv./2010 22:20
par kernadec
bonsoir
ce ne doit pas être la bonne méthode car ça rame comme on dit..
sinon j'aurais pu écrire "Fixed" !!

cordialement

Code : Tout sélectionner

; ################     kernadec en 01 2010   ################################
; lecture des fonctions d'une DLL les copie dans le presse papier
; pour coller la liste avec pliage dans son code 
; ############################################################################
file$=OpenFileRequester("DLL Fonctions","","Fichier DLL (*.dll)|*.dll|All files (*.*)|*.*",0)
If OpenLibrary(0,file$)
 length.l=CountLibraryFunctions(0)*40
*MemoireID = AllocateMemory(length)
*Pointeur = *MemoireID
 CopyMemoryString(";{-Liste de "+Str(CountLibraryFunctions(0))+" Fonctions de la DLL: " + file$ + Chr(10),@*Pointeur)
 ExamineLibraryFunctions(0)
For i = 1 To CountLibraryFunctions(0)
 NextLibraryFunction()
 CopyMemoryString("; "+Str(i)+" :  ")
 CopyMemoryString(LibraryFunctionName())
 CopyMemoryString(""+Chr(10))
Next
CopyMemoryString(";}")
 SetClipboardText(PeekS(*MemoireID,length,#PB_Ascii))        ; transfer de la zone memoire dans le clipboard
Else
 MessageRequester("  Attention ","Erreur de Fichier")
EndIf
FreeMemory(*MemoireID)


Re: Liste des Fonctions dll via Presse Papier

Publié : jeu. 28/janv./2010 10:33
par Fred
Tu te compliques drolement la vie. J'ai pas testé, mais c'est l'idée:

Code : Tout sélectionner

; ################     kernadec en 01 2010   ################################
; lecture des fonctions d'une DLL les copie dans le presse papier
; pour coller la liste avec pliage dans son code
; ############################################################################
file$=OpenFileRequester("DLL Fonctions","","Fichier DLL (*.dll)|*.dll|All files (*.*)|*.*",0)
If OpenLibrary(0,file$)
  Functions$ = ";{-Liste de "+Str(CountLibraryFunctions(0))+" Fonctions de la DLL: " + file$ + Chr(10)
  ExamineLibraryFunctions(0)
  While NextLibraryFunction()
    Functions$ + "; "+Str(i)+" :  "+ LibraryFunctionName() + Chr(10)
  Wend
  Functions$+";}"
  SetClipboardText(Functions$)        ; transfer de la zone memoire dans le clipboard
Else
  MessageRequester("  Attention ","Erreur de Fichier")
EndIf

Re: Liste des Fonctions dll via Presse Papier

Publié : jeu. 28/janv./2010 10:56
par kernadec
bonjour Fred

C'est sympa, merci.

Vous réalisez un excellent travail avec votre équipe, merci à tous.

Et J' apprend tous les jours en venant sur les Forums Purebasic.

Cordialement

Re: Liste des Fonctions dll via Presse Papier

Publié : jeu. 28/janv./2010 11:00
par Kwai chang caine
Alors la KERNADEC..outre la neige..c'est encore noel pour toi 8O
T'as un code de dieu hitself 8O

Moi j'serais toi ....j'commanderais un cadre pour mon anniversaire 8)
Imagine la valeur quand notre PB...il chatouillera Visual studio.NET v125.0

Tu pourras dire : "Quoi ouarfff ouarff un code de bill gates encadré c'est vendu 10 000 Euros ouarfff ouarff Et ben moi...j'ai un code de FRED"
Et la .....un silence de mort s'abatera sur l'assistance.....peut etre meme que le commisaire priseur, y en lachera son marteau...

Faudra peut etre aussi....louer un coffre...dans un certain futur.... j'y pense ....... :roll:

Tiens ...j'me demande si je vais pas me rajouter un defaut a l'innombrable liste, qui me caracterise ...
La jalousie :twisted: :lol: