Chargement Dll

Résolu
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009 - 28 juil. 2005 à 00:57
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009 - 28 juil. 2005 à 23:10
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

jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
28 juil. 2005 à 08:14
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
3
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
28 juil. 2005 à 14:21
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
3
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009
28 juil. 2005 à 22:25
C'est exactement ce que je cherchais !!!
Mercie c cool !
0
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009
28 juil. 2005 à 23:10
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;
0
Rejoignez-nous