X-Lite является софтофоном, программа использующая IP-телефонию. Может быть настроена на интернет-звонки, в том числе и на обычные телефоны, через самых различных операторов IP-телефонии. X-Lite выпускается в вариантах для Windows, Linux и Mac OS.
Получив маленькую информацию о софтфоне, предоставляю вам программу, которая автоматизирует работу с X-Lite. Она обеспечивает запуск программы – это меню ВКЛ; прекращение работы и закрытие программы – ВЫКЛ; в поле Nomer вносим номер телефона и нажимаем - Dial; прекратить звонок – Hung; Dial (send key) – это вариант запуска программы и с последующим звонком.
Программа работает с WinApi, которые прописаны отдельно в модуле. Они связаны с работами окон: свернуть, развернуть, скрыть, активность окна.
Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SetParent Lib "User32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Public Declare Function PostThreadMessage Lib "user32.dll" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Что бы послать команду программе, проводится активизация главного окна программы, которое не открывается на рабочем столе, а скрывается в нулевых координатах. В нижней панели вы не увидите X-Lite, что предоставляет скрытость управления программой. В системном трее будет находиться иконка, но при попытке открытия она не будет открыта. Так вот, когда окно активно, с помощью функции SendKeys посылаю команду нажатия определенной кнопки. Пример одной из многих функций кнопки:
Private Sub Command3_Click()
'ChDir "C:\Program Files\CounterPath\X-Lite\"
'Shell "x-lite.exe"
N = FindWindow("Funky Window", vbNullString)
SetWindowPos N, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
SendKeys "{esc}"
Dim i As Long
For i = 1 To 50
DoEvents
Next i
Form1.Show
End Sub
Тут происходит завершение звонка и пауза на принятие команды. Описание всех WinApi функций можно найти в интернете. X-Lite дает возможность запуск с параметрами, что и делаю при вызове звонка:
Private Sub Command1_Click()
'ChDir ""
Shell "C:\Program Files\CounterPath\X-Lite\x-lite.exe -dial=sip:" & Text1.Text
N = FindWindow("Funky Window", vbNullString)
SetWindowPos N, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
Form1.Show
End Sub
В ниже приведенном проекте, вы можете заметить дополнительные коды для управления и слежением за программой. Там показан код слежение за портами программы, через которые происходит звонок. И вы можете легко отследить за звонками. Для этого был использован WinSocket.
Ну, вот и все. Я думаю, вам это будет в пользу.
|