GetKeyState
과 관련된 한 특정 줄에 이상한 문제가 있습니다. Visual Basic 2010에서 폼 외부의 Windows 시작 단추를 마우스 왼쪽 단추로 클릭하는 것을 감지하려고합니다. 한 특정 줄은 매우 가깝지만 성공하지 못했습니다. 아래의 특정 정보.시작 단추를 마우스로 클릭하는 것을 어떻게 감지합니까?
Public Class Form1
Public Declare Function GetKeyState Lib "user32" (ByVal vKey As Integer) As Short
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If GetKeyState(91) < 0 And GetKeyState(1) < 0 Then
MsgBox("Start Button clicked.")
End If
End Sub
End Class
내가 줄 변경하는 경우 :
If GetKeyState(91) < 0 And GetKeyState(1) < 0 Then
에 :
If GetKeyState(91) < 0 Then
을 내가 시작 단추를 클릭하여있는 MsgBox를 트리거 할 수 있습니다 - 형태로 외부 키보드 만 사용. 시작 버튼을 마우스로 클릭해도 아무런 반응이 없습니다. 어디서나 OS에서 양식 외부 -
If GetKeyState(1) < 0 Then
내가 마우스 왼쪽 버튼을 클릭하여있는 MsgBox를 트리거 할 수 있습니다 : 나는 같은 라인을 변경하는 경우
.
그러나 나는 시작 버튼의 왼쪽 마우스 클릭으로 해석됩니다 제가 인식 결합 할 때 :
If GetKeyState(91) < 0 And GetKeyState(1) < 0 Then
아무런 변화가 없습니다. 마우스가 시작 버튼을 클릭 할 때 MsgBox가 트리거되도록하려면 어떻게해야합니까?
---------------------------------- 질문 부록 ---------- ------------------------------
이제는 키보드의 키 대 버튼의 차이점을 이해했습니다. 화면. Windows 키가 시작 단추를 트리거하지만 GetKeyState는 키보드의 입력 만 허용합니다. 이름으로 GetKeyState는 키보드의 키 상태와 관련이있는 것 같습니다. 그러나 키보드와 마우스를 모두 포함하는 GetKeyState 함수를 온라인에서 볼 수 있습니다.
그러나 GetKeyState가 저를 내 목적지로 데려 가지 않을 것이라고 결론을 지어야합니다. Window Detective라고 불리는 Spy ++와 비슷한 프로그램을 실행 시켰고 시작 버튼을 Parent : Shell_traywnd 및 Child : Button으로 식별했습니다.
myParent =를 FindWindow (워드 vb N ull "Shell_traywnd") 는 myChild = FindWindowEx (myParent, 0, "버튼", 워드 vb N ull)
: 그래서 그러므로 , 나는 다음과 같은 것을 만드는 것이 나에게 보일 수있을 것입니다질문은 다음과 같습니다. - 자녀가 클릭되면 어떻게 감지합니까? 이 경우 시작 버튼은 핸들이라고합니까? 아니면 창문? 또한 X/Y를 사용하여 마우스 위치를 알았지 만 시작 버튼을 Windows OS에서 자유롭게 재배치 할 수 있으므로 사용하고 싶지 않습니다.
안녕하세요 SSS, 위의 질문에 대한 내 부록을 검토 할 수 있습니까? 나는 당신의 의견에 크게 감사 할 것입니다. – reversehalo
나는 이것에 대한 전문가가 아니지만이 (dodgy!) 링크를 찾았습니다. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9370&lngWId=3 – SSS
http : // www.pinvoke.net도 도움이 될 수 있습니다. – SSS