For windows在windows环境下,skype命令是以message的方式send给skype的。首先要注册两个message: m_MsgAttach = RegisterWindowMessage(_T("SkypeControlAPIAttach"));
m_MsgDiscover = RegisterWindowMessage(_T("SkypeControlAPIDiscover"));再将discover消息广播出去::SendMessage( HWND_BROADCAST, m_MsgDiscover, (WPARAM)m_hWnd, 0 )skype如果有登录的话,会相应这个消息long CALLBACK MainWndProc(HWND hWnd, UINT uiMessage, WPARAM uiParam, LPARAM ulParam)
{
CskypetestView* pVoiceManager = ( CskypetestView * ) ( ::GetWindowLong( hWnd, GWL_USERDATA ) );
LRESULT lReturnCode;
bool fIssueDefProc; lReturnCode=0;
fIssueDefProc=false; switch (uiMessage)
{
case WM_COPYDATA:
if( hGlobal_SkypeAPIWindowHandle==(HWND)uiParam )
{
PCOPYDATASTRUCT poCopyData=(PCOPYDATASTRUCT)ulParam;
printf( "Message from Skype(%u): %.*s\n", poCopyData->dwData, poCopyData->cbData, poCopyData->lpData);
lReturnCode=1;
return 1;
}
break; default:
if( uiMessage==uiGlobal_MsgID_SkypeControlAPIAttach )
{
switch(ulParam)
{
case SKYPECONTROLAPI_ATTACH_SUCCESS:
printf("!!! Connected; to terminate issue #disconnect\n");
hGlobal_SkypeAPIWindowHandle=(HWND)uiParam;
break;
case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
printf("!!! Pending authorization\n");
break;
case SKYPECONTROLAPI_ATTACH_REFUSED:
printf("!!! Connection refused\n");
break;
case SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE:
printf("!!! Skype API not available\n");
break;
case SKYPECONTROLAPI_ATTACH_API_AVAILABLE:
printf("!!! Try connect now (API available); issue #connect\n");
break;
}
lReturnCode=1;
break;
}
//fIssueDefProc=true;
//break;
} return (DefWindowProc(hWnd, uiMessage, uiParam, ulParam));}得到hGlobal_SkypeAPIWindowHandle后,就可以发送命令个skype了。命令是以COPYDATASTRUCT 结构发送的。
lpCopydata.dwData = 0;
lpCopydata.lpData = "call dennis";
lpCopydata.cbData = (DWORD)strlen( "call dennis" ) + 1;
::SendMessage( pDlg->m_hSkypeWindow, WM_COPYDATA, (WPARAM)pDlg->m_hWnd, (LPARAM)&lpCopydata );把上面的功能集成成一个动态链接库,给所有出动态接口
RMB有偿
m_MsgDiscover = RegisterWindowMessage(_T("SkypeControlAPIDiscover"));再将discover消息广播出去::SendMessage( HWND_BROADCAST, m_MsgDiscover, (WPARAM)m_hWnd, 0 )skype如果有登录的话,会相应这个消息long CALLBACK MainWndProc(HWND hWnd, UINT uiMessage, WPARAM uiParam, LPARAM ulParam)
{
CskypetestView* pVoiceManager = ( CskypetestView * ) ( ::GetWindowLong( hWnd, GWL_USERDATA ) );
LRESULT lReturnCode;
bool fIssueDefProc; lReturnCode=0;
fIssueDefProc=false; switch (uiMessage)
{
case WM_COPYDATA:
if( hGlobal_SkypeAPIWindowHandle==(HWND)uiParam )
{
PCOPYDATASTRUCT poCopyData=(PCOPYDATASTRUCT)ulParam;
printf( "Message from Skype(%u): %.*s\n", poCopyData->dwData, poCopyData->cbData, poCopyData->lpData);
lReturnCode=1;
return 1;
}
break; default:
if( uiMessage==uiGlobal_MsgID_SkypeControlAPIAttach )
{
switch(ulParam)
{
case SKYPECONTROLAPI_ATTACH_SUCCESS:
printf("!!! Connected; to terminate issue #disconnect\n");
hGlobal_SkypeAPIWindowHandle=(HWND)uiParam;
break;
case SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION:
printf("!!! Pending authorization\n");
break;
case SKYPECONTROLAPI_ATTACH_REFUSED:
printf("!!! Connection refused\n");
break;
case SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE:
printf("!!! Skype API not available\n");
break;
case SKYPECONTROLAPI_ATTACH_API_AVAILABLE:
printf("!!! Try connect now (API available); issue #connect\n");
break;
}
lReturnCode=1;
break;
}
//fIssueDefProc=true;
//break;
} return (DefWindowProc(hWnd, uiMessage, uiParam, ulParam));}得到hGlobal_SkypeAPIWindowHandle后,就可以发送命令个skype了。命令是以COPYDATASTRUCT 结构发送的。
lpCopydata.dwData = 0;
lpCopydata.lpData = "call dennis";
lpCopydata.cbData = (DWORD)strlen( "call dennis" ) + 1;
::SendMessage( pDlg->m_hSkypeWindow, WM_COPYDATA, (WPARAM)pDlg->m_hWnd, (LPARAM)&lpCopydata );把上面的功能集成成一个动态链接库,给所有出动态接口
RMB有偿
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货