31 1月 2008

Skype4Com in BCB

Skype4Com在BCB中實現有兩種方法
  1. 一種是廣為人知的透過Variant去控制Com的物件
  2. 另一種是使用BCB強大的功能,將Skype4Com.dll解析後,直接使用其中的class
以下將各給一個例子,去取得「好友清單」的列表,再把它列到Memo元件中。


法1 : 透過Variant去控制Com的物件
// Prepare Setp :
// 1. Add a Memo to the Form1
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Memo1->Clear();

//Create a Skype Com object
Variant oSkype;
oSkype = Variant::CreateObject("Skype4COM.Skype");
// test if Skype is running, if not, start it;
if( !oSkype.OlePropertyGet("Client").OlePropertyGet("IsRunning") )
oSkype.OlePropertyGet("Client").OleFunction("Start");

// Connect to Skype via API
oSkype.OleFunction("Attach");

// Get all firends
Variant friends = oSkype.OlePropertyGet("Friends");
int count = friends.OlePropertyGet( "Count" );
Memo1->Lines->Add( "User Count : "+IntToStr(count) );

// Add to Memo
for( int i=1 ; i<=count ; i++ )//start index from 1 !!!
Memo1->Lines->Add( friends.OlePropertyGet("Item", i).OlePropertyGet("Handle") );
}
//---------------------------------------------------------------------------



法2 :

  1. 下載Skype4Com Releas,解壓縮出Skype4Com.dll
  2. 打開BCB,點選Component -> Import ActiveX Control -> Add Skype4Com.dll -> Install
  3. 至元件列表中,點選「ActiveX」,看看有沒有出現「Skype」這個Icon,有的話,就是成功了
  4. 拉一個Skype元件下來,即可使用TSkype這個class了
  5. 切記:Skype4Com.dll的位置不能改變,否則BCB會出錯
// Prepare step :
// 1. Add a Skype to Form
// 2. Add a Memo to Form
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Skype = new TSkype(Owner);
Skype->Attach(5,false);

// test if Skype is running, if not, start it;
if( !Skype->Client->IsRunning )
Skype->Client->Start(false,false);
// 1st parameter - start Skype in minimized state
// 2nd parameter - show splash screen

// Get the count of Friends
int count = Skype->Friends->get_Count();
Memo1->Lines->Add( IntToStr(count) );

// Add Friend list to Memo
for( int i=1 ; i<count ; i++ )// start index from 1 !!!
Memo1->Lines->Add( Skype->Friends->get_Item(i)->get_Handle() );

}
//---------------------------------------------------------------------------
延伸閱讀:

沒有留言: