Problème avec mes dll

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Problème avec mes dll

Message par gansta93 »

Salut tout le monde,

Je fais des dll et à chaque foies que je les teste, le programme qui les ouvre plante.
J'ai essayer avec un prog en PureBasic et Rundll et rundll32, et le résultat était le même avec les deux et avec toutes mes dll.

Comment ça se fait!
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je vais reprendre une réplique de Chris:

C'est à cause de ça!

Avec si peu d'élément...poste du code!

:)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Salut tlm voici les codes dont je vous parlais... deux essais que j'avais fait et pui qui comme vous le savez s'exécutent mais font planter les prog qui les lencent.
DLL toutes bêtes, mais bon...
premier code:
ProcedureDLL ouvre()
fichier$=OpenFileRequester("Ouvrire un fichier","d:\lol.txt","Texte|*.txt;*.g93|Document Word|*.doc|Music|*.mp3;*.wav",0)
If fichier$
MessageRequester("lol",fichier$+" a été sélectionné.",0)
Else
MessageRequester("lol","Aucun fichier sélectionné.",0)
EndIf
EndProcedure
ProcedureDLL cherche()
rep$=PathRequester("Sélectionner un répertoire","D:\Cours")
If rep$
MessageRequester("Lol","Le répertoir sélectionné est: "+rep$,0)
Else
MessageRequester("Lol","Aucun répertoir sélectionné",0)
EndIf
EndProcedure

deuxième code:
ProcedureDLL lol()
MessageRequester("lol","Vous rigolez?",0)
SetupPromptReboot_(0,0,0)
MessageRequester("lol!","Vous rigolez toujours?",0)
EndProcedure
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Avant de te corriger, je voudrais que tu me montres comment tu fais pour appeler ta dll et les fonctions car tu dois aussi avoir des problèmes de ce coté là.

Ainsi, je pourrais mieux t'expliquer :)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

nico a écrit :Avant de te corriger, je voudrais que tu me montres comment tu fais pour appeler ta dll et les fonctions car tu dois aussi avoir des problèmes de ce coté là.

Ainsi, je pourrais mieux t'expliquer :)
J'ai fais ça dans exécuter et rundll32 mais aussi:
if Openlibrary(1,"d:\lol.dll")
if callfunction(1,"lol") ; ou autre fonction peux importe...
closelibrary(1)
endif
endif
end
;Messages d'erreures possible à insérer dans le code...

Voila ça marchait mais le prog marchait il exécutait la fonction mais plantait avant la fin vu que j'avais mis un msg qui disait que la dll ct bien exécutée.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

La Dll ci dessous doit être enregistrée sous le nom de "forum.dll.

Code : Tout sélectionner

Global fichier$
Global rep$
  
ProcedureDLL.l ouvre()
  fichier$=OpenFileRequester("Ouvrire un fichier","d:\lol.txt","Texte|*.txt;*.g93|Document Word|*.doc|Music|*.mp3;*.wav",0) 
  If fichier$ 
    MessageRequester("lol",fichier$+" a été sélectionné.",0) 
  Else 
    MessageRequester("lol","Aucun fichier sélectionné.",0) 
  EndIf 
  ProcedureReturn @fichier$ 
EndProcedure 

ProcedureDLL.l cherche() 
  rep$=PathRequester("Sélectionner un répertoire","D:\Cours") 
  If rep$ 
    MessageRequester("Lol","Le répertoir sélectionné est: "+rep$,0) 
  Else 
    MessageRequester("Lol","Aucun répertoir sélectionné",0) 
  EndIf
  ProcedureReturn @rep$
EndProcedure 

;deuxième code: 
ProcedureDLL lol() 
  MessageRequester("lol","Vous rigolez?",0) 
  SetupPromptReboot_(0,0,0) 
  MessageRequester("lol!","Vous rigolez toujours?",0) 
EndProcedure


Le programme qui va appeller la Dll, à enregistrer sous le même répertoire que la Dll.
Il n'y a pas le chemin complet de déclaré puique le programme se situe dans le même répertoire que la Dll.

Code : Tout sélectionner

#Librairie=0

If  OpenLibrary(#Librairie, "forum.dll") 
  *pointeur=CallFunction(#Librairie, "ouvre")
  Debug PeekS(*pointeur)
  
  *pointeur=CallFunction(#Librairie, "cherche")
  Debug PeekS(*pointeur)  
  
  CallFunction(#Librairie, "lol")
  
  CloseLibrary(#Librairie)
EndIf
Désolé, pas le temps pour les explications....
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Merci, ça marche avec le programme qui exécute, mais pourquoi n'est-il pas possible de l'exécuter avec rundll? ça le fait plenter avec l'erreure Rundll32 a effectué une opération non conforme.
Oui je suis lourd mais bon... ça peut être util.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Code : Tout sélectionner

If OpenLibrary(0,"setupapi.dll")
  If CallFunction(0,"SetupPromptReboot",0, 0, 0)=-1
    MessageRequester("Info","Erreur!",#PB_MessageRequester_Ok) 
  EndIf
  CloseLibrary(0)
EndIf
Répondre