마우스 왼쪽클릭 오른쪽 클릭 과동일한 키보드클릭 > ⓘ 개발

본문 바로가기
사이트 내 전체검색


회원로그인

ⓘ 개발

마우스 왼쪽클릭 오른쪽 클릭 과동일한 키보드클릭

페이지 정보

작성자 SDJ 작성일17-05-21 00:29 조회2,504회 댓글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 뷰어 보시면 쉽게 접근할듯합니다.


 

d키나 f키로 (대문자 소문자 한글 모드 문자 상관없이)

마우스 원클릭/더블클릭 기능 할수 있는프로그램 구할수 있는 곳좀

가르쳐주세요

 

 

완성된 소스가 있어도 어떻게 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를 누르면 더블클릭이 됩니다.

 

참고 되었기를...



 

 

 

 

 

 

[이 게시물은 SDJ님에 의해 2017-05-21 00:35:51 ⓘ 웹에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

ⓘ 개발 목록

게시물 검색

접속자집계

오늘
139
어제
542
최대
1,010
전체
354,054
회사소개 개인정보취급방침 서비스이용약관 Copyright © sdj.kr All rights reserved.
상단으로
모바일 버전으로 보기