2014-10-29 5 views
1

Привет, сообщество StackOverflow, это мой первый пост, но я читал это некоторое время. Я не стал бы просить вас о помощи, если бы это было действительно не важно. У меня есть проблема, что вы могли бы быть в состоянии легко решить, здесь:Общие вопросы VB.net с API Skype

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 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 

Дело в том, что я не могу установить pCall.Answer() или oskype.Answer () в другом блоке (или любом другом блоке, таком как кнопка), он не работает.

Я также попытался установить переменную при нажатии F7, но затем эта переменная не обновляется, пока я внутри oSkype_CallStatus Sub.

Любая помощь или подсказка будет потрясающей, спасибо заранее. Кстати, код длиннее, но я думаю, этого достаточно, чтобы вы могли понять мой вопрос.


Исключения и ошибки:

Image Album

Я также обнаружил код ошибки, который HResult = -2147467259, но оказалось, что неопределенный код:

0x80004005 
E_FAIL 
Unspecified 
+0

Как вы хотите ответить на скайп? Постоянно ждать в цикле, пока не появится какой-либо сигнал? Почему вы не можете публично объявлять pCall при загрузке, а затем иметь возможность ссылаться на него в событии keydown? Я думаю, что последнее может быть вашим решением. – Kat

+0

@sparkysword Спасибо, это то, что я искал, но не могли бы вы помочь мне сделать это? Я очень новичок в объектно-ориентированных языках, поэтому я немного потерял это. Из чего, я думаю, вы хотите вставить в событие загрузки Form_1 что-то вроде объявления объекта или переменной? – jaimehrubiks

+0

Я пробовал что-то вроде Dim pCall как SKYPE4COMLib.Call, а затем использовал pCall.Answer(), но не работал – jaimehrubiks

ответ

0

Хорошо , поэтому ваш комментарий «Dim pCall As SKYPE4COMLib.Call» - ваша проблема. Вам нужно создать переменную с глобальной областью, то есть можно получить доступ повсюду. Тусклые или частные переменные недоступны для других субтитров или для того, чтобы их использовать.

Попробуйте объявить его вне суб, точно так же как ваш 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 вы можете добавить это, чтобы поймать/игнорировать или что-либо, когда возникает проблема. Это будет очень полезно, если вы выполните точку останова/F9 в строке ex (я добавил комментарий к ней). Когда вы это сделаете, он точно скажет вам трассировку стека/ошибку. Таким образом, вы можете отлаживать. Например, null-исключение, если вы пытаетесь установить что-то значение, когда целое число равно null или что-то еще. Это очень полезно для нас также и для стека, поскольку вы можете показать нам код ошибки, и мы можем его отладить.

Такие комментарии, как «это не работает», не помогают нам. Такие комментарии, как «Это говорит об исключении типа x. Что это?» Это будет очень полезно для вас, так как с 9/10 google этого типа исключений вы получите ответ.

Надеюсь, что это поможет: D.

+1

Спасибо за вашу преданность делу, я узнал об исключениях для ловушек и попытался исправить это, но я не могу понять, как это сделать. Я обновляю свой оригинальный пост с каждой информацией об ошибке, которую я имею. – jaimehrubiks

Смежные вопросы