受信側
いずれも、Skype はログイン済みであるという前提です。
受信側を先に起動して、待ち受け状態にします。
必ず cscript.exe で実行する必要があります。
( MsgBox は、待ち受け状態を作る最も簡単な方法です )
Call WScript.ConnectObject(Skype, "Skype_") は、WSH
における、イベントを利用する為の記述で、API 側の
イベントを利用できるようになります
Dim Skype, App
Set Skype = Wscript.CreateObject("Skype4COM.Skype")
Call WScript.ConnectObject(Skype, "Skype_")
Set App = Skype.Application("lightbox")
App.Create()
WScript.Echo "App created."
MsgBox("?")
Public Sub Skype_ApplicationReceiving(ByVal pApp, ByVal pStreams)
For Each aStream In pStreams
Wscript.Echo aStream.Read
Next
End Sub
送信側
アプリケーション用の "lightbox" という接続が作成されると、
ストリームが自動的に作成されます。
API としては複数接続可能ですが、ここでは1つだけ作成されますので、
それを使用してデータを Write で送信します。
Dim Skype, App
Dim SkypeStream
Set Skype = Wscript.CreateObject("Skype4COM.Skype")
Call WScript.ConnectObject(Skype, "Skype_")
Set App = Skype.Application("lightbox")
App.Create()
WScript.Echo "App created."
Call App.Connect("接続先", true)
WScript.Echo " connected."
WScript.Echo App.Streams.Count
WScript.Sleep( 100 )
Do While App.Streams.Count > 0
str = InputBox( "接続先へ文字列を送ります" )
SkypeStream.Write(str)
if str = "quit" then
SkypeStream.Disconnect()
Exit Do
end if
Loop
App.Delete()
' **********************************************************
' 現在の接続に対応するストリームを知る為のイベント
' ( 1対1なら、必要無い )
' **********************************************************
Public Sub Skype_ApplicationStreams(ByVal pApp, ByVal pStreams)
Wscript.Echo "ApplicationStreams"
Set SkypeStream = Nothing
For Each aStream In pStreams
If SkypeStream is Nothing Then
Set SkypeStream = aStream
Else
' ここでは意味は無い
aStream.Disconnect()
End If
Next
End Sub
送信側( イベント無し )
App.Streams は、1 から始まります
これを使えば、限定環境で使用可能です
Dim Skype, App
Dim SkypeStream
Set Skype = Wscript.CreateObject("Skype4COM.Skype")
Set App = Skype.Application("lightbox")
App.Create()
WScript.Echo "App created."
Call App.Connect("winofsql2", true)
WScript.Echo " connected."
WScript.Echo App.Streams.Count
WScript.Sleep( 100 )
Do While App.Streams.Count > 0
str = InputBox( "接続先へ文字列を送ります" )
Set SkypeStream = App.Streams(1)
SkypeStream.Write(str)
if str = "quit" then
SkypeStream.Disconnect()
Exit Do
end if
Loop
App.Delete()
|