请问如media player这样的播放器如何在播放的时候改变msn messenger的个人信息?
还有千千静听,酷狗都可以在播放的时候,改变msn的个人信息,改为音乐的歌名等,请问这是怎么做到的 ??
我找不到这方面的资料,哪个有传份这方面的资料我看看吧,[email protected],200分!
还有千千静听,酷狗都可以在播放的时候,改变msn的个人信息,改为音乐的歌名等,请问这是怎么做到的 ??
我找不到这方面的资料,哪个有传份这方面的资料我看看吧,[email protected],200分!
我用RTP实时传输协议,利用UDP取得视频服务器压缩后传到我客户端的数据,无论是用xvid还是ffmpeg压缩和解压mpeg4编码格式的数据,几秒钟的录像都会被存为几十分钟的avi文件,我保存的是压缩的数据,是#define YUY2_BUFFER_SIZE (720*576*2)大小的而不是解压后的RGB格式的#define RGB_BUFFER_SIZE (720*576*3)大小,难道是关键帧的问题吗?我把视频服务器传过来每一帧的保存都是用关键帧作为保存的,而且我也不知道该如何判断关键帧,刚我试过了,把他们都作为非关键帧来保存,还是保存成时间延长了的录像,楼主给看看吧
while (hWnd = FindWindowEx(NULL, hWnd, MSN_CLASS_NAME, NULL))
{
CON_DEBUG(text);
SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM)&cd);
}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
//static bool SetWindowsMessengerPersonalInfo(LPCSTR lpszMsg,int iMsgType = NULL);
bool CPrjWindowsMessengerTestDlg::SetWindowsMessengerPersonalInfo(LPCSTR lpszMsg, int iMsgType)
{
// TODO: Add your control notification handler code here
HWND hWndMSN = NULL;
COPYDATASTRUCT cds; char sz[1000];
char szMsg[1000];
wchar_t wszMsg[1000];
//====================================================================== hWndMSN = FindWindowEx(NULL, hWndMSN, "MsnMsgrUIManager", NULL);
if(NULL != hWndMSN)
{
//--------------------------------------------------------------
strcpy(sz,lpszMsg);
cds.dwData = 0x0547; //--------------------------------------------------------------
if(0 == iMsgType)
{
sprintf(szMsg, "\\0Music\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
else if(1 == iMsgType)
{
sprintf(szMsg, "\\0Games\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
else
{
sprintf(szMsg, "\\0Office\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
//--------------------------------------------------------------
int iLen = MultiByteToWideChar(CP_ACP, 0, szMsg, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, szMsg, -1, wszMsg, iLen);
//--------------------------------------------------------------
cds.lpData = wszMsg;
cds.cbData = (wcslen(wszMsg)+1)*2;
::SendMessage(hWndMSN, WM_COPYDATA, NULL, (LPARAM)&cds);
return true;
}
else
{
return false;
}}//Invoke Samplevoid CPrjWindowsMessengerTestDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetWindowsMessengerPersonalInfo("Jackie's Mailer"); CDialog::OnLButtonDblClk(nFlags, point);
}
如果是COM的方式 不知道需要那些接口?还有这些接口如何使用?
其实这个代码以前我试了很多次了,没成功才来问,原来代码是对的,是自己的问题...
我还想问的是,怎么通过代码自动让,MSN个人信息里的哪个“显示正在播放的内容”这个菜单勾上呢?
进行开发,比较简单而且速度很快的!!!
至于菜单勾上那个,要是像楼上说的是com找资料把。
还有其他方法。找到msn配置信息所在位置,把那个“显示正在播放的内容”的选项设置为“真”。
还有就是像游戏外挂似的,注入进程直接call,msn函数。这个有很大的局限性,不同版本的函数位置很可能是不一样的。
http://blog.csdn.net/HackerJLY/archive/2009/03/27/4030629.aspx
//Defination :
//static bool SetWindowsMessengerPersonalInfo(LPCSTR lpszMsg,int iMsgType = NULL);
bool CStaticPubFunc::SetWindowsMessengerPersonalInfo(LPCSTR lpszMsg, int iMsgType)
{
// TODO: Add your control notification handler code here
HWND hWndMSN = NULL;
COPYDATASTRUCT cds; char sz[1000];
char szMsg[1000];
wchar_t wszMsg[1000];
//======================================================================
while(1)
{
hWndMSN = FindWindowEx(NULL, hWndMSN, "MsnMsgrUIManager", NULL);
if(NULL != hWndMSN)
{
//--------------------------------------------------------------
strcpy(sz,lpszMsg);
cds.dwData = 0x0547; //--------------------------------------------------------------
if(0 == iMsgType)
{
sprintf(szMsg, "\\0Music\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
else if(1 == iMsgType)
{
sprintf(szMsg, "\\0Games\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
else
{
sprintf(szMsg, "\\0Office\\01\\0{0}\\0%s\\0\\0\\0\\0", sz);
}
//--------------------------------------------------------------
int iLen = MultiByteToWideChar(CP_ACP, 0, szMsg, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, szMsg, -1, wszMsg, iLen);
//--------------------------------------------------------------
cds.lpData = wszMsg;
cds.cbData = (wcslen(wszMsg)+1)*2;
::SendMessage(hWndMSN, WM_COPYDATA, NULL, (LPARAM)&cds);
}
else
{
break;
}
} return true;
}//Invoke Samplevoid CPrjWindowsMessengerTestDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
SetWindowsMessengerPersonalInfo("Jackie's Mailer"); CDialog::OnLButtonDblClk(nFlags, point);
}
hWndMSN = FindWindowEx(NULL, hWndMSN, "Windows Live Messenger", NULL);
是可以找到窗口句柄的,但按照MSN7的协议格式好象没效果