Avatar billede smith1 Nybegynder
28. maj 2005 - 19:30 Der er 11 kommentarer og
1 løsning

messenger 7 - lytter til funktion

Hvordan sender jeg en string med titlen på den sang jeg høre via delphi?

har dette c kode fra et plugin til musikcube. men kan ikke finde ud af c.

//local function to talk to MSN
void SendInfoToMSN(bool clear = false)
{
    USES_CONVERSION;
    #define MAGIC_NUMBER 0x547
   
    WCHAR buffer[255];
    COPYDATASTRUCT msndata;
    int len=0;

    memset(&buffer,0,sizeof(buffer));

    musikCore::SongInfo * info = g_Player->GetPlaying();
    if (info == NULL || clear)
    {
        len = wsprintfW(buffer, L"musikCube\\0Music\\0%d\\0",0);
    }
    else
    {
        len = wsprintfW(buffer, L"musikCube\\0Music\\0%d\\0%s\\0%s\\0%s\\0%s\\0",
            1,
            A2CW(MSNFormat.c_str()),
            info->GetTitle().c_str(),
            info->GetArtist().c_str(),
            info->GetAlbum().c_str());
    }

    msndata.dwData = MAGIC_NUMBER;
    msndata.lpData = &buffer;
    msndata.cbData = (len*2)+2;

    HWND msnui = NULL;
    while ( msnui = FindWindowEx(NULL, msnui, L"MsnMsgrUIManager", NULL) )
    {
        SendMessage(msnui, WM_COPYDATA, NULL, (LPARAM)&msndata);
    }
}
Avatar billede kroning Nybegynder
28. maj 2005 - 20:39 #1
Den sang du høre hvilket program afspiller den?
Avatar billede smith1 Nybegynder
28. maj 2005 - 22:09 #2
det er mit eget delphi program.

sang titlen gemmer jeg i en string og den string skal jeg sende til msg 7 på en eller anden måde.
Avatar billede kroning Nybegynder
28. maj 2005 - 23:43 #3
Nu har jeg ikke MSN installeret men det kan jeg da få hvis denne ikke virker.

procedure SendInfoToMSN(Title : string);
var
  MSNHandle: THandle;
  CopyDataStruct : TCopyDataStruct;
const
  MAGIC_NUMBER = $547;
begin
  CopyDataStruct.dwData:=MAGIC_NUMBER;
  CopyDataStruct.cbData:=length(Title)+1;
  CopyDataStruct.lpData:=pointer(Title);

  MSNHandle:=FindWindow(nil, PChar('MsnMsgrUIManager'));
  SendMessage(MSNHandle, WM_COPYDATA, 0, lparam(@CopyDataStruct));
end;

--------------------

var
  Title : string;
begin
  Title:='Den lille hund';
  SendInfoToMSN(Title);
end;
Avatar billede kroning Nybegynder
28. maj 2005 - 23:47 #4
Hov, lige lidt for hurtig der, bør nok lige putte en if sætning ind:

procedure SendInfoToMSN(Title : string);
var
  MSNHandle: THandle;
  CopyDataStruct : TCopyDataStruct;
const
  MAGIC_NUMBER = $547;
begin
  CopyDataStruct.dwData:=MAGIC_NUMBER;
  CopyDataStruct.cbData:=length(Title)+1;
  CopyDataStruct.lpData:=pointer(Title);

  MSNHandle:=FindWindow(nil, PChar('MsnMsgrUIManager'));
  if MSNHandle=0 then
    Showmessage('Ingen MSN fundet')
  else
    SendMessage(MSNHandle, WM_COPYDATA, 0, lparam(@CopyDataStruct));
end;
Avatar billede smith1 Nybegynder
29. maj 2005 - 11:41 #5
virker ikke :( den siger 'Ingen MSN fundet'
har logget på msn og aktiveret "lytter til"

men for hele tiden den showmessage('Ingen MSN fundet');
Avatar billede kroning Nybegynder
29. maj 2005 - 12:09 #6
Nu har jeg installeret MSN 7 men jeg har dog ingen ide om hvorfor en sang titel skal kunne sendes til MSN og hvad MSN skulle gøre når den modtages?
Avatar billede smith1 Nybegynder
29. maj 2005 - 12:23 #7
når msn modtager stringen med titlen så bliver det vist i dit navn.
<Nick> - <Sang som du høre> default virker det kun med windows media player.
Avatar billede kroning Nybegynder
29. maj 2005 - 14:12 #8
Jeg fik denne her gravet frem, har ikke testet den da jeg ikke sidder ved min egen computer lige nu:

function CurrentPlay(ARTIST,ALBUM,TITLE:string)
var
handleMSN:THandle;
structCopy:TCopyDataStruct;
stringBuffer:array [0..127] of WideChar;
begin
// Flush the array.
FillChar(stringBuffer,SizeOf(stringBuffer),#0);

// The first Music can be changed to Games, Office, or Empty.
StringToWideChar('\0Music\0'+'1'+'\0'+'{0} - {1}'+'\0'+ARTIST+'\0'+TITLE+'\0'+ALBUM+'\0'+'WMContentID'+#0,@stringBuffer[0],128);

// Set up the structure to hold the WM_COPYDATA and set the values.
FillChar(structCopy,SizeOf(TCopyDataStruct),#0);
with structCopy do
begin
  cbData:=SizeOf(stringBuffer);
  dwData:=$547;
  lpData:=@stringBuffer[0];
end;

// Iterate through (for poloygamy) the MSN windows sending WM_COPYDATA to each
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;
Avatar billede kroning Nybegynder
29. maj 2005 - 14:17 #9
function CurrentPlay(ARTIST,ALBUM,TITLE:string)

skal rettes til:

procedure CurrentPlay(ARTIST,ALBUM,TITLE:string);
Avatar billede kroning Nybegynder
30. maj 2005 - 00:14 #10
Har lige testet proceduren og den ser ud til at virke fint.
Avatar billede smith1 Nybegynder
30. maj 2005 - 11:30 #11
ja, det virker.

mangler lige et svar
Avatar billede kroning Nybegynder
30. maj 2005 - 17:11 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester