StackOverflow的Hello社区,这是我的第一篇文章,但我已经阅读了一段时间了。如果真的不重要,我不会请求你的帮助。我有一个问题,你可能很容易解决,这里是:
Public Class Form1
Public WithEvents oskype As New SKYPE4COMLib.Skype
'HOOK EVENTS
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown
If Key = Keys.F7 Then
'CODE HERE TO ANSWER SKYPE CALL
End If
End Sub
End Class
在那里你看到我有一些代码来挂钩低级别的密钥(比如制作快捷方式)我希望在F7被按下时接听电话,但我不知道在这种情况下如何调用API
作为参考,我在这里展示了一个如何自动接听电话的示例如果Skype正在响铃:
'SKYPE CALLING EVENT
Private Sub oSkype_CallStatus(pCall As SKYPE4COMLib.Call, Status As SKYPE4COMLib.TCallStatus) Handles oskype.CallStatus
If SKYPE4COMLib.TCallStatus.clsRinging Then
pCall.Answer()
End If
End Sub
问题是我不能在另一个块(或任何其他块,如Button)中设置pCall.Answer()或oskype.Answer(),它不起作用。
我还尝试在按下F7时设置一个变量,但是当我在oSkype_CallStatus Sub中时,该变量没有更新。
任何帮助或暗示都会很棒,谢谢你提前。 BTW代码更长但我认为这足以让你理解我的问题。
例外与错误:
我还检测到错误代码,这是HResult = -2147467259,但它变成了一个未指定的代码:
0x80004005
E_FAIL
Unspecified
答案 0 :(得分:0)
好的,所以你的评论" Dim pCall As SKYPE4COMLib.Call"是你的问题。您需要创建一个具有全局范围的变量,即可以在任何地方访问。弱点或私有变量无法从其他潜艇或任何想要使用它的地方访问。
尝试在sub之外声明它,就像你的oskype一样。
Public Class Form1
Public WithEvents oskype As New SKYPE4COMLib.Skype
Public pCall as New SKYPE4COMLib.Call
'HOOK EVENTS
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles kbHook.KeyDown
If Key = Keys.F7 Then
Try
pCall.Answer()
Catch ex as Exception 'BreakPoint Here
End Try
End If
End Sub
请注意我添加了try / catch?在Vb.net中,您可以添加它以捕获/忽略或任何问题发生时。如果你在ex行执行断点/ F9(我添加了注释),这将非常有用。当你这样做时,它会准确地告诉你堆栈跟踪/错误。那样你就可以调试了。例如,如果您尝试在整数为null或其他值时将某些内容设置为值,则为null异常。它对我们在stackflow上也很有用,因为你可以向我们展示错误代码,我们可以调试它。
评论喜欢"它没有工作"没有帮助我们帮助你。评论喜欢"它说x类异常。那是什么?"这将是非常有帮助的,自9/10以来,该异常类型的谷歌将为您提供答案。
希望这会有所帮助:D。