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


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

主题:来电显示器问题

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望: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编辑过]

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望: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中应该写在哪呢?

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 10:02:00 [显示全部帖子]

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

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望: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打开设备了(设备提示灯可点亮),但电话进来后,系统好像无法捕捉到来电的事件,没有来电的信息提示弹出。

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 16:48:00 [显示全部帖子]

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

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 21:06:00 [显示全部帖子]

vb.net中,可以在窗体代码中,重载窗体消息 Protected Overrides Sub DefWndProc(ByRef m As System.Windows.Forms.Message)
在FT中要如何书写代码呢?

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 22:12:00 [显示全部帖子]

这方面知识不足。能不能给个具体的代码框架参考?谢谢

目前的想法是:做一个独立窗口,从窗口消息中截获来电显示器的消息,并进行相应的处理。独立窗口平时隐藏,截获来电消息后显示,产生弹窗效果。
[此贴子已经被作者于2013-12-24 22:17:10编辑过]

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/24 22:48:00 [显示全部帖子]

非常感谢!代码已经按上述格式通过,使用重写类生成的窗口已可以正常打开。等明天实际测试一下效果。

有个问题还想请教:使用代码
Dim f As New myForm
f.show()
打开的窗体,如何才能上面添加控件及相应事件?
如果不能,是不是考虑在截获来电事件后,将结果使用一个Var变量保存。再使用Var变量变化事件进行处理?如果是这样,使新打开窗口不显示的代码如何写?

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/25 11:06:00 [显示全部帖子]

已成功截获来电事件,谢谢大家帮助!

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


加好友 发短信
等级:幼狐 帖子:192 积分:1670 威望:0 精华:1 注册:2012/2/8 22:07:00
  发帖心情 Post By:2013/12/25 12:09:00 [显示全部帖子]

可以根据自己的需要,我用的是独立窗口,方便同时进行其它操作。

 回到顶部
总数 15 1 2 下一页