Foxtable(狐表)用户栏目专家坐堂 → 来电显示器问题


  共有12971人关注过本帖树形打印复制链接

主题:来电显示器问题

帅哥哟,离线,有人找我吗?
whoami2012
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:191 积分:1653 威望:0 精华:1 注册:2012/2/8 22:07:00
来电显示器问题  发帖心情 Post By:2013/12/24 9:19:00 [只看该作者]

购买了来电显示器,其vb.net例程中,有如下打开设备的代码:
'在windowproc处理接收到的消息
BriSDKLib.QNV_Event(i, BriSDKLib.QNV_EVENT_REGWND, CType(Me.Handle, Int32), "", New StringBuilder(0), 0)

其中Me.Handle是获取窗体的句柄,在FT中要如何改写?




问题已解决,请看27楼。
[此贴子已经被作者于2013-12-25 14:01:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/24 9:23:00 [只看该作者]

basemainform.Handle    看看

 回到顶部
帅哥哟,离线,有人找我吗?
whoami2012
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:191 积分:1653 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 9:57:00 [只看该作者]

可以了,感谢!
再请教一下,这个来电显示盒是USB口的,需要接收窗体消息。VB.net范例中是如下代码:
Protected Overrides Sub DefWndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case BriSDKLib.BRI_EVENT_MESSAGE
                If True Then
                    Dim EventData As BriSDKLib.TBriEvent_Data = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(BriSDKLib.TBriEvent_Data)), BriSDKLib.TBriEvent_Data)
                    Dim strValue As String = ""
                    Select Case EventData.lEventType
                        Case BriSDKLib.BriEvent_PhoneHook
                            If True Then
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机摘机"
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_PhoneHang
                            If True Then
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机挂机"
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_CallIn
                            If True Then
                                '两声响铃结束后开始呼叫转移到CC
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":来电响铃"
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_GetCallID
                            If True Then
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到来电号码 " & FromASCIIByteArray(EventData.szData)

                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_StopCallIn
                            If True Then
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":停止呼入,产生一个未接电话 "
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_GetDTMFChar
                            strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到按键 " & FromASCIIByteArray(EventData.szData)
                            Exit Select
                        Case BriSDKLib.BriEvent_RemoteHang
                            If True Then
                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":远程挂机 "
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_Busy
                            If True Then

                                strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到忙音,线路已经断开 "
                            End If
                            Exit Select
                        Case BriSDKLib.BriEvent_DialTone
                            strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":检测到拨号音 "
                            Exit Select
                        Case BriSDKLib.BriEvent_PhoneDial
                            strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机拨号 " & FromASCIIByteArray(EventData.szData)
                            Exit Select
                        Case BriSDKLib.BriEvent_RingBack
                            strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":拨号后接收到回铃音 "
                            Exit Select
                        Case BriSDKLib.BriEvent_DevErr
                            If True Then
                                If EventData.lResult = 3 Then
                                    strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":设备可能被移除 "
                                End If
                            End If
                            Exit Select
                        Case Else
                            Exit Select
                    End Select
                    If strValue.Length > 0 Then
                        AppendStatus(strValue)
                    End If
                End If
                Exit Select
            Case Else
                MyBase.DefWndProc(m)
                Exit Select
        End Select
    End Sub

在FT中应该写在哪呢?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/24 9:59:00 [只看该作者]

一样的,没区别

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/24 9:59:00 [只看该作者]

注意一下命名空间即可

 回到顶部
帅哥哟,离线,有人找我吗?
whoami2012
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:191 积分:1653 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 10:02:00 [只看该作者]

没太明白。上面的代码应该写在哪个位置?放在窗体打开事件中报错。

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/24 10:09:00 [只看该作者]

复制到全局代码

 回到顶部
帅哥哟,离线,有人找我吗?
whoami2012
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:191 积分:1653 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 10:40:00 [只看该作者]

已经把如下代码复制到全局代码:
Public Function FromASCIIByteArray(ByVal characters As Byte()) As String
Dim encoding As New ASCIIEncoding()
Dim constructedString As String = encoding.GetString(characters)
Return (constructedString)
End Function


Public Sub DefWndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
    Case BriSDKLib.BRI_EVENT_MESSAGE
        If True Then
            Dim EventData As BriSDKLib.TBriEvent_Data = DirectCast(Marshal.PtrToStructure(m.LParam, GetType(BriSDKLib.TBriEvent_Data)), BriSDKLib.TBriEvent_Data)
            Dim strValue As String = ""
            Select Case EventData.lEventType
                Case BriSDKLib.BriEvent_PhoneHook
                    If True Then
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机摘机"
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_PhoneHang
                    If True Then
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机挂机"
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_CallIn
                    If True Then
                        '两声响铃结束后开始呼叫转移到CC
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":来电响铃"
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_GetCallID
                    If True Then
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到来电号码 " & FromASCIIByteArray(EventData.szData)
                        
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_StopCallIn
                    If True Then
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":停止呼入,产生一个未接电话 "
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_GetDTMFChar
                    strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到按键 " & FromASCIIByteArray(EventData.szData)
                    Exit Select
                Case BriSDKLib.BriEvent_RemoteHang
                    If True Then
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":远程挂机 "
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_Busy
                    If True Then
                        
                        strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":接收到忙音,线路已经断开 "
                    End If
                    Exit Select
                Case BriSDKLib.BriEvent_DialTone
                    strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":检测到拨号音 "
                    Exit Select
                Case BriSDKLib.BriEvent_PhoneDial
                    strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":电话机拨号 " & FromASCIIByteArray(EventData.szData)
                    Exit Select
                Case BriSDKLib.BriEvent_RingBack
                    strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":拨号后接收到回铃音 "
                    Exit Select
                Case BriSDKLib.BriEvent_DevErr
                    If True Then
                        If EventData.lResult = 3 Then
                            strValue = "通道" & (EventData.uChannelID + 1).ToString() & ":设备可能被移除 "
                        End If
                    End If
                    Exit Select
                Case Else
                    Exit Select
            End Select
            If strValue.Length > 0 Then
                MessageBox.Show(strValue)
            End If
        End If
        Exit Select
    Case Else
        MyBase.DefWndProc(m)  ‘这句报错,注释后项目可正常重启打开
        Exit Select
End Select
End Sub

倒数第四行         MyBase.DefWndProc(m)  ‘这句报错,注释后项目可正常重启打开。
设计了一个窗体,放置了打开设备的按钮并加了打开代码,可以调用外部DLL打开设备了(设备提示灯可点亮),但电话进来后,系统好像无法捕捉到来电的事件,没有来电的信息提示弹出。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/12/24 12:10:00 [只看该作者]

单单这个代码不会显示的啊,至少你没有添加事件处理程序,来电之后,应该会触发一个事件,要给这个事件添加事件处理程序:

 

http://www.foxtable.com/help/topics/2374.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
whoami2012
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:191 积分:1653 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 16:48:00 [只看该作者]

感谢狐爸关注!
这个来电显示盒,好像是在来电时,生成一个窗体消息。现在就是不清楚如何捕捉到这个消息。
另外,MyBase.DefWndProc(m)  这句在vb.net中可以编译通过,在FT中应如何改写?

 回到顶部
总数 44 1 2 3 4 5 下一页