C ++でのSkype APIの使用

少し前まで、連絡先リストに登録されている特定のユーザーにSkypeを介して自動的にメッセージを送信するアプリケーションを作成する必要がありました。 タスクはそれほど難しくありませんでしたが、それはポイントではありませんでした。 Skype APIの使用に関する小さな記事を書くことにしました。

Skypeには独自のAPIがあり、さまざまな言語に対応していることは誰もが知っています。 Skype ++ for C ++で説明を始めたかった。
公式サイトからSkype4COMをダウンロードできます。
アーカイブには3つのファイルが含まれます。

実際にはSkype4COM.dllが必要です

SkypeのHello World


最初の例では、現在のSkypeクライアントのバージョンを表示するSkypeサイトから例を取り上げることにしました。
#import "Skype4COM.dll"

int _tmain( int argc, _TCHAR* argv[]) {
// COM
CoInitialize(NULL);

// Skype
SKYPE4COMLib::ISkypePtr pSkype(__uuidof(SKYPE4COMLib::Skype));

// Skype API
pSkype->Attach(6,VARIANT_TRUE);

//
_bstr_t bstrSkypeVersion = pSkype->GetVersion();
printf( "Skype client version %s\n" , ( char *)bstrSkypeVersion);

// COM ""
_bstr_t bstrWrapperVersion = pSkype->GetApiWrapperVersion();
printf( "COM wrapper version %s\n" , ( char *)bstrWrapperVersion);

//
pSkype = NULL;
CoUninitialize();

return 0;
}


一般的に、すべてがシンプルで明確です。 確かに、常にセキュリティに関連しているため、あまり気に入らない点が1つあります。
pSkype->Attach(6, VARIANT_TRUE);

skypeは、アプリケーションでskypeリソースを使用する許可をリクエストします。 セキュリティの面では正しいですが、小さな回避策がありますが、それについては現在の投稿の形式ではありません))))

連絡先リストからユーザーにメッセージを送信する


ありふれた例のセットを続けますが、実際にはメッセージの送信に対処します。
#import "Skype4COM.dll"
using namespace SKYPE4COMLib;

int _tmain( int argc, _TCHAR* argv[]) {
CoInitialize(NULL);
ISkypePtr pSkype(__uuidof(Skype));
pSkype->Attach(6,VARIANT_TRUE);

IChatMessage *message;
message = pSkype->SendMessage(_bstr_t(L "user_name" ), _bstr_t(L "" ));
printf( "%s sent message" , ( char *)message->FromHandle);

pSkype = NULL;
CoUninitialize();
return 0;
}


ユーザーにダイヤルするには、 PlaceCallメソッドを呼び出す必要があります。
ICallPtr pCall = pSkype->PlaceCall(_bstr_t(L"user_name"), L"", L"", L"");

連絡先リストを取得


IUserCollectionPtr contactList = pSkype->GetFriends();
for ( int i = 1; i <= contactList->GetCount(); i++) {
_bstr_t bstrHandle = contactList->GetItem(i)->GetHandle();
_bstr_t bstrFullname = contactList->GetItem(i)->GetFullName();
printf( "Friend login %s and name %s \n" , ( char *)bstrHandle, ( char *)bstrFullname);
}


ソースコード

トピックが興味深い場合、Skype4COMを使用したより興味深い例を書くことができます...

Source: https://habr.com/ru/post/J72059/


All Articles