Chargement Dll [Résolu]

Signaler
Messages postés
51
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
8 avril 2009
-
Messages postés
51
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
8 avril 2009
-
Bonjours, je débute et j'aimerais charger une dll comme sa :

function SongOff():Boolean; external 'msnmusic.dll' name 'SongOff';

mais cela me cause une violation d'accés dans la dll
la source de la dll se compose ainssi :

int __declspec(dllexport) __stdcall SongOff(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) {

je suppose que l'erreur viens des paramétres...
quelle est la bonne syntax please ?

c'est la dll msnmusic téléchargeable ici : http://www.deep-space-5.org/msnmusic/
(sa sert a changer le nick dans [ce que j'écoute] de MSN)

4 réponses

Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Salut,



Dans ton prog, essaye de la déclarer de la manière suivante :



function SongOff(mWnd, aWnd: HWND; data,parms: PChar; show, nopause: Boolean): integer;stdcall; external 'msnmusic.dll';





j!nH
Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Si tu veux changer le titre de la musique que tu écoutes sous MSN, j'ai ce code si tu veux(j'espère ne pas être HS).





procedure CurrentPlay(ARTIST,ALBUM,TITLE:string);

var

handleMSN : THandle;

structCopy : TCopyDataStruct;

stringBuffer : array [0..127] of WideChar;

begin



FillChar(stringBuffer,SizeOf(stringBuffer),#0);





StringToWideChar('\0Music\0'+'1'+'\0'+'{0} -
{1}'+'\0'+ARTIST+'\0'+TITLE+'\0'+ALBUM+'\0'+'WMContentID'+#0,@stringBuffer[0],128);





FillChar(structCopy,SizeOf(TCopyDataStruct),#0);

with structCopy do

begin

cbData := SizeOf(stringBuffer);

dwData := $547;

lpData := @stringBuffer[0];

end;





handleMSN := FindWindowEx(0,0,'MsnMsgrUIManager',nil);

while handleMSN <> 0 do

begin

SendMessage(handleMSN,WM_COPYDATA,0,Integer(@structCopy));

handleMSN:=FindWindowEx(0,handleMSN,'MsnMsgrUIManager',nil);

end;

end;



A savoir que tu peux remplace Music par Games ou Office pour changer l'icone.



j!nH
Messages postés
51
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
8 avril 2009

C'est exactement ce que je cherchais !!!
Mercie c cool !
Messages postés
51
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
8 avril 2009

J'ai ajouté le choix de l'icone dans les paramétres...
Sa marche d'enfer mais j'ai essayer de remplacer Music par Empty mais sa a pas marché, domage...
Je crois que sa ne marche qu'avec une certaine version d'MSN...
Sinon en fait j'ai voulu ce code pour faire défiler le titre de la zik ou un fichier texte...
Jvais voir si sa marche (si les autres le voyent en temps réel) et posteré ma réponse ici...

procedure CurrentPlay(ARTIST,ALBUM,TITLE:string;icone:integer);
var
handleMSN : THandle;
structCopy : TCopyDataStruct;
stringBuffer : array [0..127] of WideChar;
icones: string;
begin


FillChar(stringBuffer,SizeOf(stringBuffer),#0);
// Si icone vaut 0 alors MSN Ce que j'écoute sera désactivé
// Si icone:=1 => icone Music
// Si icone:=2 => icone Games
// Si icone:=3 => icone Office
icones:='Music';
if icone>=2 then
begin
icones:='Games';
if icone=3 then
icones:='Office';
icone:=1;
end;
StringToWideChar('\0'+icones+'\0'+inttostr(icone)+'\0'+'{0} - {1}'+'\0'+ARTIST+'\0'+TITLE+'\0'+ALBUM+'\0'+'WMContentID'+#0,@stringBuffer[0],128);


FillChar(structCopy,SizeOf(TCopyDataStruct),#0);
with structCopy do
begin
cbData := SizeOf(stringBuffer);
dwData := $547;
lpData := @stringBuffer[0];
end;



handleMSN := FindWindowEx(0,0,'MsnMsgrUIManager',nil);
while handleMSN <> 0 do
begin
SendMessage(handleMSN,WM_COPYDATA,0,Integer(@structCopy));
handleMSN:=FindWindowEx(0,handleMSN,'MsnMsgrUIManager',nil);
end;
end;