In navolging van dit topic: [rml][ VC++] FriendlyName in MSN messenger veranderen.[/rml] ben ik ook eens aan de slag gegaan met Winamp en MSN Messenger, alleen dit keer met als doel er een Winamp (v2) plugin van de maken.
Hierbij heb ik de standaard general-plugin code van Winamp.com gehaald en omgebouwd, dit werkt allemaal prima.
Het Messenger gedeelte wat Yarvieh in elkaar had geknutseld in het eerder genoemde topic werkt ook goed, behalve als Messenger niet gestart is (wat wel logisch is).
Om te voorkomen dat de boel dan fout loopt ben ik wat aan het prutsen geslagen met errorhandling (ontbrak in Yarvieh's code)... en het grote probleem is dat het nu x keer goed werkt, en dan toch ineens nog faalt.
Ik heb dit: http://www.codeproject.com/com/comintro.asp al eens rustig doorgelezen.
wat gaat er dus precies fout?
Iedere keer als ik mijn programmaatje (ik heb het maar ff losgetrokken van die plugin, anders hangt Winamp steeds) draai, terwijl Messenger NIET draait, start er een msmsgs.exe proces (COM Server ofzo
)
Het gaat toch nog allemaal goed, totdat je probeert je FriendlyName aan te passen (oMsgrObj->Services->PrimaryService->FriendlyName=NewName; )
Dat zorgt voor een lelijke error, en daarna moet je (als ik alles goed begrepen heb in die COM handleiding) toch nog dat MsgrObject releasen.
Ik denk dus dat dit releasen (eens in de zo veel keer, dat is dus het wazige) niet goed gaat, omdat msmsgs.exe blijft draaien, ipv dat 'ie weer afsluit.
Het programmaatje sluit wel zonder errors, alleen de volgende keer dat je het start, loopt 'ie tegen een hangende msmsgr.exe aan, maakt er nóg een bij, en loopt zelf ook vast.
Daar zit ik dan: HELP! Wie kan mij iets nieuws leren hier
Ohja, hier is de code (van Yarvieh uit dat ene topic, en dan een beetje aangepast/verprutst, en wat ingekort om hier te kunnen posten
)
Hierbij heb ik de standaard general-plugin code van Winamp.com gehaald en omgebouwd, dit werkt allemaal prima.
Het Messenger gedeelte wat Yarvieh in elkaar had geknutseld in het eerder genoemde topic werkt ook goed, behalve als Messenger niet gestart is (wat wel logisch is).
Om te voorkomen dat de boel dan fout loopt ben ik wat aan het prutsen geslagen met errorhandling (ontbrak in Yarvieh's code)... en het grote probleem is dat het nu x keer goed werkt, en dan toch ineens nog faalt.
Ik heb dit: http://www.codeproject.com/com/comintro.asp al eens rustig doorgelezen.
wat gaat er dus precies fout?
Iedere keer als ik mijn programmaatje (ik heb het maar ff losgetrokken van die plugin, anders hangt Winamp steeds) draai, terwijl Messenger NIET draait, start er een msmsgs.exe proces (COM Server ofzo
Het gaat toch nog allemaal goed, totdat je probeert je FriendlyName aan te passen (oMsgrObj->Services->PrimaryService->FriendlyName=NewName; )
Dat zorgt voor een lelijke error, en daarna moet je (als ik alles goed begrepen heb in die COM handleiding) toch nog dat MsgrObject releasen.
Ik denk dus dat dit releasen (eens in de zo veel keer, dat is dus het wazige) niet goed gaat, omdat msmsgs.exe blijft draaien, ipv dat 'ie weer afsluit.
Het programmaatje sluit wel zonder errors, alleen de volgende keer dat je het start, loopt 'ie tegen een hangende msmsgr.exe aan, maakt er nóg een bij, en loopt zelf ook vast.
Daar zit ik dan: HELP! Wie kan mij iets nieuws leren hier
Ohja, hier is de code (van Yarvieh uit dat ene topic, en dan een beetje aangepast/verprutst, en wat ingekort om hier te kunnen posten
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| #import "d:\program files\messenger\msmsgs.exe" no_namespace
#include <stdio.h>
int main(void)
{
// Initalize COM
CoInitialize(NULL);
// Get Instance of Messenger.MsgrObject
IMsgrObject2Ptr oMsgrObj = NULL;
HRESULT HR=oMsgrObj.CreateInstance("Messenger.MsgrObject");
if (SUCCEEDED(HR)) {
// [winamp code weggeknipt, die kan iedereen halen @ winamp.com]
char NewName[4096];
sprintf(NewName,"I am playing : %s", "TEST");
try
{
// Tell msn to use it
oMsgrObj->Services->PrimaryService->FriendlyName=NewName;
}
catch(_com_error er)
{
// Hier had k zelf een error message die er nu niet toe doet :)
}
}
// Release the interface pointer
oMsgrObj.Release();
// Uninitalize COM and exit app
CoUninitialize();
return 0;
} |