Probleme d utilisation d une DLL externe

Probleme d utilisation d une DLL externe - VB/VBA/VBS - Programmation

Marsh Posté le 26-06-2003 à 12:00:09    

Je desirerais utiliser la DLL advsplash.dll fournie avec le celebre installeur NSIS.
 
Elle permet d afficher un splash screen avec effet de fondu (fluide sour toutes machines), son etc...
 
Je pense que ca doit etre possible ...
 
Voici mon code:
 
==============================
Option Explicit
 
Private Declare Function show1 Lib "c:\advsplash.dll" Alias "show" (Delay As Integer, FadeIn As Integer, FadeOut As Integer, KeyColor As variant, FileName As String) as long
 
 
 
Private Sub Form_Load()
dim r as long
r=show1(1000, 600, 400, -1, "c:\splash.bmp" )
 
End Sub
===========================
 
Cependant quand je lance le prog, ca fait planter VB...
 
g teste plusieurs types de var differents en declaration mais rien n y fait ...
 
 
 
voici un extrait du fichier txt qui qccompagne la dll pour une utilisation sous nsis:
 
=========================
Calling format
advsplash::show Delay FadeIn FadeOut KeyColor FileName
 
Delay - length to show the screen for (in milliseconds)
FadeIn - length to show the fadein scene (in ms) (not included in Delay)
FadeOut - length to show the fadeout scene (in ms) (not included in Delay)
KeyColor - color used for transparency. For 24 bit bitmaps could be any RGB
value (for ex. R=255 G=100 B=16 -> KeyColor=0xFF6410), for 8 bit bitmaps
could be either RGB value or index of the color at bitmap palette
(if such RGB color present in your image and you'd like to use palette
index, use (0x1000000+index) as KeyColor [you should calculate
this value by yourself]). Use KeyColor=-1 if there is now transparent
color at your image.
FileName - splash bitmap filename (without the .bmp). The BMP file used will be  
this parameter.bmp, and the wave file used (if present) will be this  
parameter.wav.
 
(If you already have an .onInit function, put that in it)
 
Note 1: fadein/fadeout supported only on win2k/winxp systems, all other systems
will show simple splash screen with Delay = Delay + FadeIn + FadeOut.
 
Note 2: transparency supported only for 24bit and 8bit bitmaps.
 
Note 3: the return value of splash is 1 if the user closed the splash  
screen early (pop it from the stack)
 
-Justin
Converted to a plugin DLL by Amir Szekely (kichik)
Fading and transparency by Nik Medved (brainsucker)
=======================================
 
 
J espere que vous pourrez m aider
 
Merci d avance
 
Chris

Reply

Marsh Posté le 26-06-2003 à 12:00:09   

Reply

Marsh Posté le 27-06-2003 à 02:32:28    

j'ai lu un peu le code source de la dll, de nsis et il est (et sera) tout simplement impossible d'utilise ce plugin car :
- la fonction est exportée en cdecl (incompatible avec vb),
- meme en la modifiant en stdcall, le dernier argument pose probleme car c'est un double pointeur. Ce pointeur pointe sur un pointeur sur fonction mais chez nullsoft on aime faire compliquer et donc pour lire les plugins, nsis décortique le point d'entré de la fonction (de maniere symbolique) et push les arguments de la fonction exportée sur la pile pour ensuite appelé la fonction. Tout cela est théoriquement impossible. Théoriquement, car Randy Birch (un des meilleurs coder VB que je "connaisse" ) a pu démontrer que l'on pouvais utiliser des fonctions en cdecl en utilisant du pseudo code assembleur depuis VB ! La on tombe dans du hardcore VB et dépasse mes compétences ... :(
Par contre, tu peux adapter le code pour l'exporter au format VB et en virant les parametres qui ne sont utiles que pour NSIS.

Reply

Marsh Posté le 27-06-2003 à 08:31:29    

pseudo code assembleur? [:cupra]  tu as un link directement dessus?  je connais le site du bonhomme et je le visite de temps en temps mais je n'avais remarqué ça :??:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 27-06-2003 à 09:17:09    

j'ai pu le lien mais je croit avoir l'exemple chez moi, je l'uploaderais ce soir =)

Reply

Marsh Posté le 28-06-2003 à 19:51:30    

Reply

Marsh Posté le 28-06-2003 à 22:09:54    

J'ai modifié le code pour l'utiliser depuis VB :
 
http://starnetasso.free.fr/Upload/AdvSplash-VB.zip

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed