마우스 왼쪽클릭 오른쪽 클릭 과동일한 키보드클릭
페이지 정보
작성자 SDJ 작성일17-05-21 00:29 조회3,042회 댓글0건관련링크
본문
글쓴이 : Jin (218.52.13.101) 날짜 : 09-04-20 22:18 조회 : 3397
비주얼베이직으로 마우스 왼쪽버튼클릭과동일한 키보드로 a 키나 s 키같은걸누르면
진짜 화면에서마우스왼쪽키가 눌리는거와같은 동일한효과를 나타내는 프로그램이나
소스같은게있을까요?
API 를 이용하시면 좋을듯 한데요...
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwextrainfo As Long)
마우스 이벤트를 발생시키는 API 함수입니다.
상수로필요하신건...
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
이 두가지만 있으면 되겠네요...
처음께 왼쪽 버튼 눌리는거고
두번째께 왼쪽버튼 띄는 것입니다. 한마디로 두가지를 실행시키면
클릭이 되겠죠....
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
그다음 키가 눌렸을때 키상태를 (님이원하는 키인지 알아내는) 알수있는
API 함수입니다.
MSDN 참조하시거나 API 뷰어 보시면 쉽게 접근할듯합니다.
마우스 원클릭/더블클릭 기능 할수 있는프로그램 구할수 있는 곳좀
가르쳐주세요
완성된 소스가 있어도 어떻게 vb나 vc로 바로 컴에 쓸수있게 하는지도 몰라요
프로그램이 아니라면 완성된 소스라도... 소스를 주시면
vb/vc 돌리는 법이라도 간단하게나만 언급도 부탁드려요
텍스트 입력시에는 해당키 작동 금지명령도 있어야 할것같네요.
글 입력할때 막 클릭 돼면 안돼니깐요~
단순히 커서 아래 대상에 바로 클릭이나 더블 클릭만 돼면 됍니다
윈도우 자체 내게 필요한 옵션 이게 오른쪽 구석에 5번에서 원 클릭기능이 돼기는
한데 거리가 왼손하고 멀어서 쓸수가 없네요
부탁드립니다.
우선 모듈을 하나 만듭니다.
모듈 이름은 상관 없고요, 모듈 소스 들어갑니다~
Option Explicit
'--------------------------------------------------------------------------
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetMessageExtraInfo Lib "user32" () As Long
'--------------------------------------------------------------------------
Const MOUSEEVENTF_MOVE = 1
Const MOUSEEVENTF_LEFTDOWN = 2
Const MOUSEEVENTF_LEFTUP = 4
Const MOUSEEVENTF_RIGHTDOWN = 8
Const MOUSEEVENTF_RIGHTUP = 10
Const MOUSEEVENTF_MIDDLEDOWN = 20
Const MOUSEEVENTF_MIDDLEUP = 40
Const MOUSEEVENTF_WHEEL = 800
Const MOUSEEVENTF_ABSOLUTE = 8000
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
여기까지 모듈 소스였습니다.
그리고 폼을 하나 만듭니다.
폼에 타이머 하나 만드시고, 타이머 이름을 Timer1 로 잡은후, 인터벌을 10~100정도로 잡으신뒤,
폼 소스에 아래를 붙여넣으세요
Option Explicit
Private KeyLoop As Byte
Private KeyResult As Long
Private chkCapslock As Boolean
Private ChkShift As Boolean
Private FreeDepot As Long
Private Typing As Boolean
'--------------------------------------------------------------------------
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetMessageExtraInfo Lib "user32" () As Long
'--------------------------------------------------------------------------
Const MOUSEEVENTF_MOVE = 1
Const MOUSEEVENTF_LEFTDOWN = 2
Const MOUSEEVENTF_LEFTUP = 4
Const MOUSEEVENTF_RIGHTDOWN = 8
Const MOUSEEVENTF_RIGHTUP = 10
Const MOUSEEVENTF_MIDDLEDOWN = 20
Const MOUSEEVENTF_MIDDLEUP = 40
Const MOUSEEVENTF_WHEEL = 800
Const MOUSEEVENTF_ABSOLUTE = 8000
Private Sub Timer1_Timer()
If GetAsyncKeyState(vbKeyQ) Then
If Typing = False Then
Typing = True
Else
Typing = False
End If
If GetAsyncKeyState(vbKeyD) Then
If Typing = False Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 100, 100, 0, GetMessageExtraInfo())
Call mouse_event(MOUSEEVENTF_LEFTUP, 100, 100, 0, GetMessageExtraInfo())
Else
End If
End If
If GetAsyncKeyState(vbKeyF) Then
If Typing = False Then
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 100, 100, 0, GetMessageExtraInfo())
Call mouse_event(MOUSEEVENTF_LEFTUP, 100, 100, 0, GetMessageExtraInfo())
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 100, 100, 0, GetMessageExtraInfo())
Call mouse_event(MOUSEEVENTF_LEFTUP, 100, 100, 0, GetMessageExtraInfo())
Else
End If
End If
End Sub
위의 소스대로 하시면, Q를 눌러 타이핑모드, 타이핑 모드가 아닌 모드를 선택하고,
D를 누르면 클릭, F를 누르면 더블클릭이 됩니다.
참고 되었기를...
출처 : http://www.howtobank.net/vbboard/zboard.php?id=p_vbsource&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=오토마우스&select_arrange=headnum&desc=asc&no=161 여기에서 대충의 소스만 추출함
댓글목록
등록된 댓글이 없습니다.