來電管理器服務程序 |
chen在2006/6/16發表,被瀏覽11180次
|
適合對象: “記得”來電顯示管理器的二次開發。服務程序提供了Socket服務和查詢函數,軟件開發商可利用Socket服務或DLL提供的接口函數進行查詢、獲取來電信息。
服務程序使用及二次開發示意圖
文件:(下載請到“會員下載”) cdTele.dll 來電號碼查詢動態庫 TeleListen.exe 來電顯示監聽程序,適合于Windows98及以上的版本 TeleLC.exe 來電顯示客戶端監聽程序,用于監聽連接在其它計算機的來電顯示,適合于Windows98及以上的版本 JD2000.exe 客戶端的來電顯示程序
說明: TeleListen.exe工作原理都相同:監聽來電顯示管理器,并把來電號碼存放在來電池中;如果有Scoket的客戶端連接,則當有來電時:(1)設置了自動發送來電,則向客戶端發送來電號碼和來電時間;(2)否則向客戶端發送“call”,通知客戶端已經有來電,客戶端向服務程序發送“get”指令,獲取來電號碼。同時提供DLL的查詢接口,其它程序也可通過函數查詢和索取來電號碼。 TeleLC.exe是運行在其它計算機的來電顯示客戶端監聽程序,為沒有安裝來電顯示管理器的計算機提供來電顯示的二次開發(調用DLL函數)。 JD2000.exe分為單機版和網絡版,單機版只能運行在連接了來電顯示盒的計算機,用于即時顯示來電客戶信息;網絡版是運行在沒有安裝來電顯示盒的計算機上,使多臺計算機同時顯示來電客戶信息。網絡版的使用條件:局域網上有一臺計算機連接了來電顯示管理器,并在此計算機上運行了TeleListen.exe。 cdTele.dll是公用動態庫,提供查詢接口函數。
名詞解釋:來電池 來電池是指監聽程序內的一個數組 [0..100],用來保存來電號碼和來電時間。數組從0開始計數,把第1個來電號碼保存在第0個數據單元,把第2個來電號碼保存在第1個數據單元,如此類推。當取走來第1個來電號碼(第0個數據單元)后,自動把第2個號碼移位到第0個數據單元,如此類推。
TeleListen.exe使用方式 是一個執行文件,用來監聽電話來電,并提供Socket和DLL調用服務。如果希望多臺計算機同時顯示來電客戶信息,最好在連接來電顯示盒的計算機上,把此文件放在系統的啟動組中,或修改注冊表來讓系統自動運行。運行后在屏幕的左下腳有一個圖標,可設置運行狀態。
TeleLC.exe使用方式 是一個執行文件,用來監聽網絡上連接了來電顯示管理器的計算機,為本機提供來電顯示查詢功能。只有使用DLL函數進行二次開發的程序才需要使用它。運行后在屏幕的左下腳有一個圖標,可設置運行狀態。
JD2000.exe使用方式 是一個執行文件,當有電話接入時自動顯示來電號碼及相應的用戶信息。默認使用Access數據庫保存來電記錄,如果需要使用MS SQL Server保存來電信息,則需要自行安裝SQL Server數據庫平臺。是一個免安裝的綠色軟件,分為單機版和網絡版。 單機版運行在連接了來電顯示盒的計算機上,不用再運行其它程序。 網絡版運行在沒有安裝來電顯示盒的計算機上,它通過監聽服務器(安裝了來電顯示盒并運行了TeleListen.exe),實現多臺計算機同時顯示來電信息。使用網絡版的JD2000,在第一次運行時,必須設置服務器的IP地址。
cdTele.dll使用方式 提供查詢和獲取來電號碼的函數。 使用方法: 1 啟動程序時調用OpenMapFile或StartTeleListen。 2 打開來電管理器COM端口:OpenComPort;如果服務程序狀態設置為自動打開端口,則這一步可省略。 3 檢查是否有來電:CountShareData;這一步不是必須的。 4 使用GetShareNo或GetShareData獲取來電;可定時(例如每隔1秒)不斷使用GetShareData(0)獲取來電號碼。也可定義回調函數DoTeleComing,在有來電時自動調用。 5 結束程序時調用CloseMapFile或StopTeleListen。 各函數功能如下: function OpenMapFile: LongBool; stdcall; //打開服務程序共享內存,如果使用DLL函數,建議在程序啟動時調用 function CloseMapFile: LongBool; stdcall; //關閉服務程序共享內存,調用了OpenMapFile后,在程序結束時調用 //啟動監聽程序TeleListen.exe,一般放在程序啟動時 function StartTeleListenEx(const Path: PChar; const Hide: Boolean=True): LongBool; stdcall; //或 function StartTeleListen(TeleComingProc: TOnTeleComing=nil; const Hide: Boolean=True): LongBool; stdcall; //回調函數類型,當有來電時自動調用,并返回來電號碼no和來電時間t TOnTeleComing=procedure(var no: PChar; var t: PChar); stdcall; //關閉監聽程序TeleListen.exe,一般用在關閉程序時 function StopTeleListen: LongBool; stdcall; function GetShareData(const i: Integer; var No: PChar; var T: TDateTime): LongBool; stdcall; 獲取來電號碼和來電時間。如果有來電,則返回True,否則返回False。獲取來電后,刪除監聽程序內的來電池中的該來電號碼。 i:獲取來電池中的第i個來電號碼,從0開始計數,0為最先來電; No:獲取的來電號碼; T:獲取的來電時間。 function ReadShareData(const i: Integer; var No: PChar; var T: TDateTime): LongBool; stdcall; 獲取來電號碼和來電時間。如果有來電,則返回True,否則返回False。獲取來電后,不刪除來電池中的該來電號碼。 function GetShareNo(const i: Integer): PChar; stdcall; 返回來電池中的第i個來電號碼。獲取來電后,刪除來電池中的該來電號碼。 function ReadShareNo(const i: Integer): PChar; stdcall; 返回來電池中的第i個來電號碼。獲取來電后,不刪除來電池中的該來電號碼。 function DelShareData(const i: Integer): LongBool; stdcall; 直接刪除來電池中的第i個來電號碼。 function ClearShareData: LongBool; stdcall; 直接刪除來電池中的所有來電號碼。 function CountShareData: Integer; stdcall; 返回來電池中有幾個來電號碼。 function GetComportState: LongBool; stdcall; 返回來電管理器的COM端口打開與否 function ReadComPort: Byte; stdcall; 返回連接來電管理器的COM端口號。1表示COM1,2表示COM2,如此類推 function GetSocketState: LongBool; stdcall; 返回監聽服務程序的Socket服務是否打開 function ReadSocketPort: Byte; stdcall; 返回監聽服務程序的Socket服務端口號 function OpenComport: LongBool; stdcall; 打開來電管理器的COM端口,并返回打開狀態 function CloseComport: LongBool; stdcall; 關閉來電管理器的COM端口,并返回打開狀態 function ChangeComport(const Port: Byte): LongBool; stdcall; 修改來電管理器的COM端口,并返回打開狀態。1表示COM1,2表示COM2,如此類推 function OpenSocket: LongBool; stdcall; 打開TeleListen.exe的Socket服務,返回Socket服務狀態 function CloseSocket: LongBool; stdcall; 關閉TeleListen.exe的Socket服務,返回Socket服務狀態 function ChangeSocketPort(const Port: Integer): LongBool; stdcall; 修改TeleListen.exe的Socket服務端口,并返回打開狀態 function DialTeleNo(No: PChar): LongBool; stdcall; 回撥電話,如果NO為空,則重撥 function ReadDialNo: PChar; stdcall; 返回上次撥出電話 function ShowTeleServerState: Integer; stdcall; 設置監聽服務程序的運行狀態 function ShowVer: LongBool; stdcall; 顯示來電顯示器的版本 ====以下函數適用于TeleLC.exe==== function ChangeSocketAddress(addr: PChar): LongBool; stdcall; 修改TeleLC.exe的連接來電顯示管理器的服務器地址 function ReadSocketAddress: PChar; stdcall; 返回TeleLC.exe中的連接服務器地址
Socket服務 服務程序提供Socket服務(默認),最大可連接數為5,Socket默認端口為3825;可通過修改ini(狀態設置)來禁止Socket服務和改變Socket端口號。 使用方法: 1 使用ClientSocket連接服務器。如果是本機,ClientSocket的IP地址設為127.0.0.1,端口設為3825。 2 與服務器建立連接后,如果有來電,服務器返回call n。n表示目前有第n個來電。 3 當有來電時,發送指令get到服務器,服務器返回來電號碼。如果有多個來電(n>0),可多次使用get指令。 4 服務器響應get指令,返回來電號碼。 5 退出程序時請關閉Socket連接。 通訊協議: 1. time 返回時間 2. open 打開來電顯示管理器COM口,并返回打開狀態。注:一般不需要特別地打開COM口,服務啟動自動會打開COM口 3. close 來電顯示管理器COM口,并返回狀態。 4. set set port COM1 改變來電顯示管理器COM口為COM1,并返回狀態。修改COM口后,服務程序會記住修改,以后都使用新的COM口。 set SocketPort 3825 改變Socket服務端口為3825;修改服務端口后,需重新啟動計算機。 5. 有來電時,服務自動發送信息到各客戶端,例如“#38259081 2006-6-15 10:28:30”表示有一個來電,號碼為38259081,時間為2006-6-15 10:28:30。 6. read 讀取最新的來電號碼,不刪除服務程序內的來電池。 read n 讀取第n個來電號碼。n從0開始計數,n越大,表示越后的來電。 read all 讀取來電池中的所有號碼。從0開始讀。 7. del 刪除來電池中的第一個(n=0,最先來電)號碼。 del n 刪除來電池中的第n個來電號碼,n減1。 del all 刪除來電池中的所有號碼,n=0。 8. get 讀取來電池中的第一個(n=0,最先來電)號碼,同時刪除之。 get n 讀取來電池中的第n個來電號碼,同時刪除之。 get all 讀取并刪除來電池中的所有號碼,n=0。 get port 返回來電顯示管理器的當前使用COM口,例如COM1。 get ver 返回來電顯示管理器的版本。 9. count 返回服務程序的來電池目前有多少個來電號碼。 10. dial dial xxxxxxxx 回撥電話xxxxxxxx。 dial 重撥。 10. conn 返回本Socket連接的順序號。 conn count 返回服務程序目前有多少個Socket連接。 conn n 返回服務程序第n個Socket連接的客戶端IP地址;n從0開始。
有不明之處可到留言板留言。
|
|
|
|