Code: Select all
Global DiscoverSkype = RegisterWindowMessage_("SkypeControlAPIDiscover")
Global AttachSkype = RegisterWindowMessage_("SkypeControlAPIAttach")
Global SkypeHandle = 0
#Success = 0
#PendingAuthorizaion = 1
#Refused = 2
#NotAvailable = 3
#Available = $8001
Procedure ConnectSkype(hwnd)
Protected Res
SendMessage_(#HWND_BROADCAST, DiscoverSkype, hwnd, 0)
ProcedureReturn res <> #False
EndProcedure
Procedure CommandSkype(hwnd, Command.s)
cds.COPYDATASTRUCT
cds\dwData = 0
cds\lpData = @Command
cds\cbData = Len(Command)
If SendMessage_(SkypeHandle, #WM_COPYDATA, hwnd, cds)
AddGadgetItem(0, -1, Command)
EndIf
EndProcedure
Procedure WndProc(Handle, Message, WordParam, LongParam)
Select Message
Case AttachSkype
If LongParam = #Success
SkypeHandle = WordParam
SetGadgetText(3, "Disconnect")
EndIf
Case #WM_COPYDATA
If WordParam = SkypeHandle
*cds.COPYDATASTRUCT = LongParam
If *cds\lpData
AddGadgetItem(0, -1, PeekS(*cds\lpData))
SendMessage_(GadgetID(0), #WM_VSCROLL, #SB_BOTTOM, 0)
EndIf
ProcedureReturn 1
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0, 220, 0, 500, 405, "Skype API Communication", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar )
SetWindowCallback(@WndProc(), 0)
ListIconGadget(0, 8, 8, 484, 324, "", 400)
StringGadget(1, 8, 340, 404, 24, "")
ButtonGadget(2, 420, 340, 72, 24, "Execute")
ButtonGadget(3, 8, 372, 112, 24, "Connect")
;CreateThread(@ConnectSkype(), WindowID(0)) ; Uncomment to enable auto-connection
AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
Repeat
event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2
If GetGadgetText(1) And SkypeHandle
CommandSkype(WindowID(0), GetGadgetText(1))
SetGadgetText(1, "")
SetActiveGadget(1)
Else
SetActiveGadget(1)
EndIf
Case 3
If SkypeHandle
CommandSkype(WindowID(0), "")
SkypeHandle = 0
SetGadgetText(3, "Connect")
Else
ConnectSkype(WindowID(0))
EndIf
EndSelect
ElseIf Event = #PB_Event_Menu
Select EventMenu()
Case 0
If GetGadgetText(1)
CommandSkype(WindowID(0), GetGadgetText(1))
SetGadgetText(1, "")
Else
SetActiveGadget(1)
EndIf
EndSelect
EndIf
Until event = #PB_Event_CloseWindow