2014-10-29 7 views
1

안녕하세요. StackOverflow 커뮤니티, 이것은 내 첫 번째 게시물이지만 얼마 전에 읽었습니다. 나는 그것이 정말로 중요하지 않다면 당신의 도움을 요청하지 않을 것입니다. 나는 여기있다, 당신은 쉽게 해결할 수 있습니다 문제가 :Skype API를 사용하는 일반적인 VB.net 문제

당신은 내가 낮은 수준에서 키 후크 몇 가지 코드를 가지고 있음을 볼 수있다
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을 (설정되지 않음 수 있다는 것입니다 : 스카이프가 울리는 경우 참고로

나는 여기에 내가 자동으로 전화를받을 수있는 방법의 예를 보여) 다른 블록 (또는 Button과 같은 다른 블록)에서 작동하지 않습니다.

또한 F7 키를 눌렀을 때 변수를 설정하려고했지만 oSkype_CallStatus Sub 내부에있는 동안 변수가 업데이트되지 않았습니다.

도움이나 힌트가 정말 좋을 것입니다. 미리 감사드립니다. BTW 코드가 더 길지만 내 질문을 이해하기에 충분하다고 생각합니다.


예외 및 에러 : I는 또한 에러 코드를 검출

Image Album

HRESULT = -2147467259하지만 불특정 코드로 설정 :

0x80004005 
E_FAIL 
Unspecified 
+0

어떻게 스카이프에 응답 하시겠습니까? 신호가 들어올 때까지 계속 루프를 기다리십니까? 왜 pCall을 공개적으로 선언하고 keydown 이벤트에서 pCall을 참조 할 수 있습니까? 나는 마지막 하나가 당신의 해결책 일 것 같아요. – 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에서는 문제가 발생할 때마다 catch/ignore 또는 그 밖의 것을 추가 할 수 있습니다. 이것은 ex line에서 breakpoint/F9를 할 때 매우 유용 할 것입니다. 그렇게하면 스택 추적/오류를 정확하게 알려줍니다. 그렇게하면 디버깅 할 수 있습니다. 예를 들어 정수가 null 또는 무엇이든간에 값을 설정하려고하면 null 예외가 발생합니다. stackflow에서 우리에게 매우 유용합니다. 그러면 우리가 오류 코드를 보여줄 수 있고 디버그 할 수 있기 때문입니다.

"작동하지 않습니다."와 같은 코멘트는 우리가 당신을 도울 수는 없다고 생각합니다. "예외의 x 유형을 말합니다. 그게 뭐지?" 그게 9/10 이후 예외 유형의 구글은 당신에게 대답을 얻을 것이다 당신에게 정말 도움이 될 것입니다.

희망이 도움이됩니다. D.

+1

헌정에 감사드립니다. 예외를 잡는 방법에 대해 배웠고 문제를 해결하기 위해 노력했지만 어떻게해야하는지 알 수 없습니다. 내가 가진 오류에 대한 모든 정보를 담은 원본 게시물을 업데이트 할 것입니다. – jaimehrubiks